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(ch, note_string, &handler)
Alias for: on_key_press
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