module RawMIDI::Device

Attributes

card[R]
id[R]
name[R]

Public Class Methods

new(card_or_id, id, **info) click to toggle source
# File lib/rawmidi/device.rb, line 5
def initialize(card_or_id, id, **info)
  @card = card_or_id.is_a?(Card) ? card_or_id : Card.new(card_or_id)
  @id = id

  info = get_subdevice_info if info.empty?
  @name = info[:name]
  @input = info[:input]
  @output = info[:output]
end

Public Instance Methods

close() click to toggle source
# File lib/rawmidi/device.rb, line 29
def close
  return if closed?
  API::Device.close(@midi_p)
  @midi_p = nil
  true
end
closed?() click to toggle source
# File lib/rawmidi/device.rb, line 40
def closed?
  !open?
end
handle_name() click to toggle source
# File lib/rawmidi/device.rb, line 15
def handle_name
  "#{@card.handle_name},#{@id},0"
end
inspect() click to toggle source
# File lib/rawmidi/device.rb, line 19
def inspect
  "#<#{self.class.name}:#{"0x%014x" % object_id} #{handle_name} #{@name.inspect} #{open? ? 'open' : 'closed'}>"
end
open() click to toggle source
# File lib/rawmidi/device.rb, line 23
def open
  fail 'already open' if @midi_p
  @midi_p = API::Device.open(handle_name, direction, :sync)
  true
end
open?() click to toggle source
# File lib/rawmidi/device.rb, line 36
def open?
  !!@midi_p
end

Private Instance Methods

get_subdevice_info() click to toggle source
# File lib/rawmidi/device.rb, line 46
def get_subdevice_info
  API::Card.with_control(@card.id) do |ctl_p|
    API::Device.subdevice_info(ctl_p, @id)
  end
end