Module: UniMIDI::Device::InstanceMethods

Included in:
Input, Output
Defined in:
lib/unimidi/device.rb

Overview

Methods that are shared by both Input and Output instances

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object

Add attributes for the device instance :direction, :id, :name



160
161
162
163
164
165
166
167
# File 'lib/unimidi/device.rb', line 160

def self.included(base)
  base.send(:attr_reader, :direction)
  base.send(:attr_reader, :enabled)
  base.send(:attr_reader, :id)
  base.send(:attr_reader, :name)
  base.send(:alias_method, :enabled?, :enabled)
  base.send(:alias_method, :type, :direction)
end

Instance Method Details

#close(*args) ⇒ Boolean

Close the device Params are passed to the underlying device object

Parameters:

  • args (*Object)

Returns:

  • (Boolean)


148
149
150
151
152
153
154
155
156
# File 'lib/unimidi/device.rb', line 148

def close(*args)
  if @enabled
    @device.close(*args)
    @enabled = false
    true
  else
    false
  end
end

#initialize(device) ⇒ Object

Parameters:

  • device (AlsaRawMIDI::Input, AlsaRawMIDI::Output, CoreMIDI::Destination, CoreMIDI::Source, MIDIJRuby::Input, MIDIJRuby::Output, MIDIWinMM::Input, MIDIWinMM::Output)


107
108
109
110
111
112
# File 'lib/unimidi/device.rb', line 107

def initialize(device)
  @device = device
  @enabled = false

  populate_from_device
end

#open(*args, &block) ⇒ Input, Output

Enable the device for use Params are passed to the underlying device object Can be passed a block to which the device will be passed in as the yieldparam

Parameters:

  • args (*Object)

Returns:



119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/unimidi/device.rb', line 119

def open(*args, &block)
  unless @enabled
    @device.open(*args)
    @enabled = true
  end
  if block_given?
    begin
      yield(self)
    ensure
      close
    end
  else
    at_exit do
      close
    end
  end
  self
end

#pretty_nameString

A human readable display name for this device

Returns:

  • (String)


140
141
142
# File 'lib/unimidi/device.rb', line 140

def pretty_name
  "#{id}) #{name}"
end