class MIDIOps::Observer
Public Class Methods
new()
click to toggle source
# File lib/midiops/observer.rb, line 9 def initialize @handler = Handler.new end
Public Instance Methods
listen(input)
click to toggle source
# File lib/midiops/observer.rb, line 34 def listen input EM.run do loop do input.gets.each do |events| events[:data].each do |ev| @handler.handle ev end end end end end
listen_device(device_name)
click to toggle source
# File lib/midiops/observer.rb, line 46 def listen_device device_name if !(dev = UniMIDI::Input.find_by_name device_name).nil? listen dev.open elsif !(dev = UniMIDI::Input.find { |input| input.name.include? device_name }).nil? listen dev.open else raise RuntimeError, "Specified device \"#{device_name}\" not available; available device(s): #{UniMIDI::Input.map{|i| '"' + i.name + '"' }.join(', ')}" end end
listen_first()
click to toggle source
# File lib/midiops/observer.rb, line 57 def listen_first listen UniMIDI::Input.first.open end
on(event, &handler)
click to toggle source
# File lib/midiops/observer.rb, line 13 def on event, &handler @handler.add event, handler end
on_cc(ch, number, &handler)
click to toggle source
# File lib/midiops/observer.rb, line 17 def on_cc ch, number, &handler @handler.add [176+ch, number, :ARG], handler end
on_key_press(ch, note_string, &handler)
click to toggle source
# File lib/midiops/observer.rb, line 21 def on_key_press ch, note_string, &handler @handler.add [144+ch, MIDIOps::Note.note_to_code(note_string), :ARG], handler end
Also aliased as: on_key
on_key_release(ch, note_string, &handler)
click to toggle source
# File lib/midiops/observer.rb, line 26 def on_key_release ch, note_string, &handler @handler.add [128+ch, MIDIOps::Note.note_to_code(note_string), :ARG], handler end
on_pitchbend(ch, &handler)
click to toggle source
# File lib/midiops/observer.rb, line 30 def on_pitchbend ch, &handler @handler.add [224+ch, :ARG, :ARG], handler end