class SMF::Sequence::WS
Public Class Methods
new(o, cb)
click to toggle source
# File lib/smf/io.rb, line 349 def initialize(o, cb) @o, @cb = o, cb end
Public Instance Methods
read()
click to toggle source
# File lib/smf/io.rb, line 448 def read @cb.header(@o.format, @o.ntrks, @o.division, @o.tc) @o.each do |ck| case ck when Track read_track(ck) else @cb.unknownchunk(ck.ckid, ck.body) end end @cb.result end
Private Instance Methods
read_meta(ev)
click to toggle source
# File lib/smf/io.rb, line 351 def read_meta(ev) case ev when SequenceNumber @cb.sequencenumber(ev.num) when Text case ev when GeneralPurposeText; @cb.generalpurposetext(ev.text) when CopyrightNotice; @cb.copyrightnotice(ev.text) when TrackName; @cb.trackname(ev.text) when InstrumentName; @cb.instrumentname(ev.text) when Lyric; @cb.lyric(ev.text) when Marker; @cb.marker(ev.text) when CuePoint; @cb.cuepoint(ev.text) when ProgramName; @cb.programname(ev.text) when DeviceName; @cb.devicename(ev.text) when Text0A; @cb.text0a(ev.text) when Text0B; @cb.text0b(ev.text) when Text0C; @cb.text0c(ev.text) when Text0D; @cb.text0d(ev.text) when Text0E; @cb.text0e(ev.text) when Text0F; @cb.text0f(ev.text) end when ChannelPrefix @cb.channelprefix(ev.ch) when MIDIPort @cb.midiport(ev.num) when EndOfTrack @cb.endoftrack when SetTempo @cb.settempo(ev.tempo) when SMPTEOffset @cb.smpteoffset(ev.hr, ev.mn, ev.se, ev.fr, ev.ff, ev.tc) when TimeSignature @cb.timesignature(ev.nn, ev.dd, ev.cc, ev.bb) when KeySignature @cb.keysignature(ev.sf, ev.mi) when SequencerSpecific @cb.sequencerspecific(ev.data) else @cb.unknownmeta(ev.type, ev.data) end end
read_track(tr)
click to toggle source
# File lib/smf/io.rb, line 394 def read_track(tr) @cb.track_start offset = 0 tr.each do |ev| @cb.delta(ev.offset - offset) case ev when NoteOff if ev.fake? @cb.noteon(ev.ch, ev.note, 0) else @cb.noteoff(ev.ch, ev.note, ev.vel) end when NoteOn @cb.noteon(ev.ch, ev.note, ev.vel) when PolyphonicKeyPressure @cb.polyphonickeypressure(ev.ch, ev.note, ev.val) when ControlChange @cb.controlchange(ev.ch, ev.num, ev.val) when ProgramChange @cb.programchange(ev.ch, ev.num) when ChannelPressure @cb.channelpressure(ev.ch, ev.val) when PitchBendChange @cb.pitchbendchange(ev.ch, ev.val) when AllSoundOff @cb.allsoundoff(ev.ch) when ResetAllControllers @cb.resetallcontrollers(ev.ch) when LocalControl @cb.localcontrol(ev.ch, ev.val) when AllNotesOff @cb.allnotesoff(ev.ch) when OmniOff @cb.omnioff(ev.ch) when OmniOn @cb.omnion(ev.ch) when MonoMode @cb.monomode(ev.ch, ev.val) when PolyMode @cb.polymode(ev.ch) when ExclusiveF0 @cb.exclusivef0(ev.data) when ExclusiveF7 @cb.exclusivef7(ev.data) when Meta read_meta(ev) end offset = ev.offset end @cb.track_end end