class MTK::IO::MIDIInput

Common behavior for realtime MIDI input.

Attributes

device[R]

The underlying output device implementation wrapped by this class. The device type depends on the platform.

Public Class Methods

available_input_types() click to toggle source
# File lib/mtk/io/midi_input.rb, line 14
def available_input_types
  @available_input_types ||= []
end
devices() click to toggle source

All available input devices.

# File lib/mtk/io/midi_input.rb, line 27
def devices
  @devices ||= available_input_types.map{|input_type| input_type.devices }.flatten
end
devices_by_name() click to toggle source

Maps input device names to the input device.

# File lib/mtk/io/midi_input.rb, line 32
def devices_by_name
  @devices_by_name ||= (
  available_input_types.each_with_object( Hash.new ) do |input_type,hash|
    hash.merge!( input_type.devices_by_name )
  end
  )
end
find_by_name(name) click to toggle source
# File lib/mtk/io/midi_input.rb, line 40
def find_by_name(name)
  if name.is_a? Regexp
    matching_name = devices_by_name.keys.find{|device_name| device_name =~ name }
    device = devices_by_name[matching_name]
  else
    device = devices_by_name[name.to_s]
  end
  open(device) if device
end
inherited(subclass) click to toggle source
# File lib/mtk/io/midi_input.rb, line 10
def inherited(subclass)
  available_input_types << subclass
end
input_types_by_device() click to toggle source
# File lib/mtk/io/midi_input.rb, line 18
def input_types_by_device
  @input_types_by_device ||= (
  available_input_types.each_with_object( Hash.new ) do |input_type,hash|
    input_type.devices.each{|device| hash[device] = input_type }
  end
  )
end
open(device) click to toggle source
# File lib/mtk/io/midi_input.rb, line 50
def open(device)
  input_type = input_types_by_device[device]
  input_type.new(device) if input_type
end

Private Class Methods

new(input_device, options={}) click to toggle source
# File lib/mtk/io/midi_input.rb, line 57
def initialize(input_device, options={})
  @device = input_device
  @device.open
  @options = options
end

Public Instance Methods

name() click to toggle source
# File lib/mtk/io/midi_input.rb, line 72
def name
  @device.name
end
record() click to toggle source
# File lib/mtk/io/midi_input.rb, line 76
def record
end
stop() click to toggle source
# File lib/mtk/io/midi_input.rb, line 79
def stop
end
to_timeline() click to toggle source
# File lib/mtk/io/midi_input.rb, line 82
def to_timeline
  MTK::Events::Timeline.new
end