Method: MIDIJRuby::API#write_output

Defined in:
lib/midi-jruby/api.rb

#write_output(device, data) ⇒ Boolean

Write the given MIDI message to the given output device

Parameters:

  • device (Java::ComSunMediaSound::MidiOutDevice)
  • data (Array<Fixnum>)

Returns:

  • (Boolean)


102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/midi-jruby/api.rb', line 102

def write_output(device, data)
  bytes = Java::byte[data.size].new
  data.each_with_index { |byte, i| bytes.ubyte_set(i, byte) }
  if SYSEX_STATUS_BYTES.include?(data.first)
    message = SysexMessage.new
    message.set_message(bytes, data.length.to_java(:int))
  else
    message = ShortMessage.new
    begin
      message.set_message(*bytes)
    rescue
      # support older java versions
      message.set_message(bytes)
    end
  end
  @receiver[device].send(message, device.get_microsecond_position)
  true
end