module Midi::Chord

Public Instance Methods

to_bin(key) click to toggle source
# 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