Class: MIDIInstrument::Input

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/midi-instrument/input.rb

Overview

Enable a node to listen for MIDI messages on a MIDI input

Defined Under Namespace

Classes: InputContainer

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Input

Returns a new instance of Input.

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :sources (Array<UniMIDI::Input>, UniMIDI::Input)
  • :input_map (Hash)


14
15
16
17
18
# File 'lib/midi-instrument/input.rb', line 14

def initialize(options = {})
  @listener = Listener.new(options[:sources])
  @devices = InputContainer.new(@listener)
  @channel = nil
end

Instance Attribute Details

#channelObject

Returns the value of attribute channel.



8
9
10
# File 'lib/midi-instrument/input.rb', line 8

def channel
  @channel
end

#devicesObject

Returns the value of attribute devices.



8
9
10
# File 'lib/midi-instrument/input.rb', line 8

def devices
  @devices
end

Instance Method Details

#add(*messages) ⇒ Array<MIDIMessage> Also known as: <<

Manually add messages to the input

Parameters:

  • messages (Array<MIDIMessage>, MIDIMessage, *MIDIMessage)

Returns:

  • (Array<MIDIMessage>)


34
35
36
37
38
# File 'lib/midi-instrument/input.rb', line 34

def add(*messages)
  messages = Message.to_messages([messages].flatten).compact
  @listener.add(*messages) unless messages.empty?
  messages
end

#omniBoolean Also known as: omni_on

Set the listener to acknowledge notes on all channels

Returns:

  • (Boolean)


43
44
45
46
# File 'lib/midi-instrument/input.rb', line 43

def omni
  @channel = nil
  true
end

#receive(match = {}, &block) ⇒ Listen

Add a MIDI input callback

Parameters:

  • match (Hash) (defaults to: {})

    Matching spec

  • callback (Proc)

Returns:

  • (Listen)


24
25
26
27
28
29
# File 'lib/midi-instrument/input.rb', line 24

def receive(match = {}, &block)
  if block_given?
    @listener.receive(match) { |event| yield(event) }
  end
  self
end