Class: Musa::MIDIVoices::MIDIVoices

Inherits:
Object
  • Object
show all
Defined in:
lib/musa-dsl/midi/midi-voices.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sequencer:, output:, channels:, do_log: nil) ⇒ MIDIVoices

Returns a new instance of MIDIVoices.



15
16
17
18
19
20
21
22
23
24
# File 'lib/musa-dsl/midi/midi-voices.rb', line 15

def initialize(sequencer:, output:, channels:, do_log: nil)
  do_log ||= false

  @sequencer = sequencer
  @output = output
  @channels = channels.arrayfy.explode_ranges
  @do_log = do_log

  reset
end

Instance Attribute Details

#do_logObject

Returns the value of attribute do_log.



13
14
15
# File 'lib/musa-dsl/midi/midi-voices.rb', line 13

def do_log
  @do_log
end

#voicesObject (readonly)

Returns the value of attribute voices.



30
31
32
# File 'lib/musa-dsl/midi/midi-voices.rb', line 30

def voices
  @voices
end

Instance Method Details

#fast_forward=(enabled) ⇒ Object



32
33
34
# File 'lib/musa-dsl/midi/midi-voices.rb', line 32

def fast_forward=(enabled)
  @voices.each { |voice| voice.fast_forward = enabled }
end

#panic(reset: nil) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/musa-dsl/midi/midi-voices.rb', line 36

def panic(reset: nil)
  reset ||= false

  @voices.each(&:all_notes_off)

  @output.puts MIDIEvents::SystemRealtime.new(0xff) if reset
end

#resetObject



26
27
28
# File 'lib/musa-dsl/midi/midi-voices.rb', line 26

def reset
  @voices = @channels.collect { |channel| MIDIVoice.new(sequencer: @sequencer, output: @output, channel: channel, do_log: @do_log) }.freeze
end