Class: MIDIOps::Observer
- Inherits:
-
Object
- Object
- MIDIOps::Observer
- Defined in:
- lib/midiops/observer.rb
Instance Method Summary collapse
-
#initialize ⇒ Observer
constructor
A new instance of Observer.
- #listen(input) ⇒ Object
- #listen_device(device_name) ⇒ Object
- #listen_first ⇒ Object
- #on(event, &handler) ⇒ Object
- #on_cc(ch, number, &handler) ⇒ Object
- #on_key_press(ch, note_string, &handler) ⇒ Object (also: #on_key)
- #on_key_release(ch, note_string, &handler) ⇒ Object
- #on_pitchbend(ch, &handler) ⇒ Object
Constructor Details
#initialize ⇒ Observer
Returns a new instance of Observer.
9 10 11 |
# File 'lib/midiops/observer.rb', line 9 def initialize @handler = Handler.new end |
Instance Method Details
#listen(input) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 |
# 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) ⇒ Object
46 47 48 49 50 51 52 53 54 55 |
# 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 ⇒ Object
57 58 59 |
# File 'lib/midiops/observer.rb', line 57 def listen_first listen UniMIDI::Input.first.open end |
#on(event, &handler) ⇒ Object
13 14 15 |
# File 'lib/midiops/observer.rb', line 13 def on event, &handler @handler.add event, handler end |
#on_cc(ch, number, &handler) ⇒ Object
17 18 19 |
# 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) ⇒ Object Also known as: on_key
21 22 23 |
# 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 |
#on_key_release(ch, note_string, &handler) ⇒ Object
26 27 28 |
# 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) ⇒ Object
30 31 32 |
# File 'lib/midiops/observer.rb', line 30 def on_pitchbend ch, &handler @handler.add [224+ch, :ARG, :ARG], handler end |