Class: JSound::Midi::Devices::Transformer

Inherits:
JSound::Midi::Device show all
Defined in:
lib/jsound/midi/devices/transformer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from JSound::Midi::Device

#<=, #>>, #close, #open, #open?, #output, #output=, #to_s, #type

Methods included from JSound::Mixins::TypeFromClassName

included

Constructor Details

#initialize(&message_processor) ⇒ Transformer

Returns a new instance of Transformer.



11
12
13
# File 'lib/jsound/midi/devices/transformer.rb', line 11

def initialize(&message_processor)
  @message_processor = message_processor
end

Instance Attribute Details

#message_processorObject

The transformation block: a lambda that takes a message and returns either a transformed message or an Enumerable list of messages



9
10
11
# File 'lib/jsound/midi/devices/transformer.rb', line 9

def message_processor
  @message_processor
end

Instance Method Details

#message(message) ⇒ Object



15
16
17
18
19
20
21
22
23
24
# File 'lib/jsound/midi/devices/transformer.rb', line 15

def message(message)
  if @output and @message_processor
    transformed_message = @message_processor.call(message)
    if transformed_message.is_a? Enumerable
      transformed_message.each{|m| @output.message(m) }
    else
      @output.message(transformed_message) if transformed_message
    end
  end
end