class MIDIInstrument::Output
Send MIDI messages
Attributes
channel[R]
devices[R]
mute[W]
Public Class Methods
new()
click to toggle source
# File lib/midi-instrument/output.rb, line 9 def initialize @channel = nil @channel_filter = nil @mute = false @devices = [] end
Public Instance Methods
channel=(channel)
click to toggle source
Set the output to convert all emitted notes to a specific channel @param [Fixnum, nil] channel @return [Boolean]
# File lib/midi-instrument/output.rb, line 19 def channel=(channel) @channel_filter = if channel.nil? nil else MIDIFX::Limit.new(:channel, channel, :name => :output_channel) end @channel = channel true end
devices=(devices)
click to toggle source
Replace the devices with the given devices @param [Array<UniMIDI::Outputs>] devices @return [OutputContainer]
# File lib/midi-instrument/output.rb, line 70 def devices=(devices) @devices.clear @devices += devices @devices end
mute()
click to toggle source
Mute the output @return [TrueClass]
# File lib/midi-instrument/output.rb, line 51 def mute @mute = true end
mute?()
click to toggle source
Is the output muted? @return [Boolean]
# File lib/midi-instrument/output.rb, line 63 def mute? @mute end
puts(*args)
click to toggle source
Emit messages @param [*Fixnum, *MIDIMessage::NoteOn, *MIDIMessage::NoteOff, *String] args @return [Array<Fixnum>]
# File lib/midi-instrument/output.rb, line 32 def puts(*args) messages = Message.to_messages(*args) messages = filter_output(messages) bytes = messages.map(&:to_bytes).flatten if !@mute @devices.each { |output| output.puts(*bytes) } end bytes end
Also aliased as: <<
toggle_mute()
click to toggle source
Toggle muted output @return [Boolean]
# File lib/midi-instrument/output.rb, line 45 def toggle_mute @mute = !@mute end
unmute()
click to toggle source
Un-mute the output @return [FalseClass]
# File lib/midi-instrument/output.rb, line 57 def unmute @mute = false end
Private Instance Methods
filter_output(messages)
click to toggle source
Filter messages for output @param [Array<MIDIMessage::ChannelMessage>] messages @return [Array<MIDIMessage::ChannelMessage>]
# File lib/midi-instrument/output.rb, line 81 def filter_output(messages) if @channel_filter.nil? messages else messages.map { |message| @channel_filter.process(message) } end end