Class: MIDIOps::Observer

Inherits:
Object
  • Object
show all
Defined in:
lib/midiops/observer.rb

Instance Method Summary collapse

Constructor Details

#initializeObserver

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_firstObject



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