Module: Midi::Chord

Defined in:
lib/kuromusic/IO/MIDI/Chord.rb

Instance Method Summary collapse

Instance Method Details

#to_bin(key) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/kuromusic/IO/MIDI/Chord.rb', line 7

def to_bin(key)
  predur = 0
  ons = []
  offs = []
  maxdur = 0
  @notes.sort {|a, b|
    a.dur <=> b.dur
  }.each {|n|
    ons += [::Event::Note::rest(0), n.get_on_event(key)]
    maxdur = n.dur if maxdur < n.dur
  }.each {|n|
    currentdur = n.dur - predur
    offs += [::Event::Note::rest(currentdur), n.get_off_event(key)]
    predur = n.dur
  }
  (ons + offs).map {|e|
    e.extend(Midi::Event)
    e.to_bin
  }.flatten!
end