Class: Deftones::Core::Param
Instance Attribute Summary collapse
-
#audio_source ⇒ Object
readonly
Returns the value of attribute audio_source.
-
#lfo ⇒ Object
Returns the value of attribute lfo.
-
#modulation_amount ⇒ Object
readonly
Returns the value of attribute modulation_amount.
Instance Method Summary collapse
- #audio_rate? ⇒ Boolean (also: #audioRate)
- #connect(destination, output_index: 0, input_index: 0) ⇒ Object
- #connect_audio(source, amount: 1.0) ⇒ Object (also: #connectAudio)
- #disconnect_audio(source = nil) ⇒ Object (also: #disconnectAudio)
-
#initialize(**options) ⇒ Param
constructor
A new instance of Param.
- #modulation_samples(num_frames, start_frame) ⇒ Object private
- #modulation_source?(source) ⇒ Boolean private
- #process(num_frames, start_frame = 0) ⇒ Object
- #set_param(param) ⇒ Object (also: #setParam)
Constructor Details
#initialize(**options) ⇒ Param
Returns a new instance of Param.
8 9 10 11 12 13 |
# File 'lib/deftones/core/param.rb', line 8 def initialize(**) super @lfo = nil @audio_source = nil @modulation_amount = 1.0 end |
Instance Attribute Details
#audio_source ⇒ Object (readonly)
Returns the value of attribute audio_source.
6 7 8 |
# File 'lib/deftones/core/param.rb', line 6 def audio_source @audio_source end |
#lfo ⇒ Object
Returns the value of attribute lfo.
6 7 8 |
# File 'lib/deftones/core/param.rb', line 6 def lfo @lfo end |
#modulation_amount ⇒ Object (readonly)
Returns the value of attribute modulation_amount.
6 7 8 |
# File 'lib/deftones/core/param.rb', line 6 def modulation_amount @modulation_amount end |
Instance Method Details
#audio_rate? ⇒ Boolean Also known as: audioRate
47 48 49 |
# File 'lib/deftones/core/param.rb', line 47 def audio_rate? !@audio_source.nil? end |
#connect(destination, output_index: 0, input_index: 0) ⇒ Object
20 21 22 23 24 |
# File 'lib/deftones/core/param.rb', line 20 def connect(destination, output_index: 0, input_index: 0) super @param = destination if destination.respond_to?(:value=) self end |
#connect_audio(source, amount: 1.0) ⇒ Object Also known as: connectAudio
30 31 32 33 34 35 36 37 |
# File 'lib/deftones/core/param.rb', line 30 def connect_audio(source, amount: 1.0) raise ArgumentError, "audio source is required" if source.nil? raise ArgumentError, "audio source must render or process samples" unless modulation_source?(source) @audio_source = source @modulation_amount = amount.to_f self end |
#disconnect_audio(source = nil) ⇒ Object Also known as: disconnectAudio
39 40 41 42 43 44 45 |
# File 'lib/deftones/core/param.rb', line 39 def disconnect_audio(source = nil) return self if source && source != @audio_source @audio_source = nil @modulation_amount = 1.0 self end |
#modulation_samples(num_frames, start_frame) ⇒ Object (private)
70 71 72 73 74 75 76 77 78 |
# File 'lib/deftones/core/param.rb', line 70 def modulation_samples(num_frames, start_frame) if @audio_source.respond_to?(:values) @audio_source.values(num_frames, start_frame) elsif @audio_source.respond_to?(:render) @audio_source.render(num_frames, start_frame) else @audio_source.process(num_frames, start_frame) end end |
#modulation_source?(source) ⇒ Boolean (private)
66 67 68 |
# File 'lib/deftones/core/param.rb', line 66 def modulation_source?(source) source.respond_to?(:values) || source.respond_to?(:process) || source.respond_to?(:render) end |
#process(num_frames, start_frame = 0) ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/deftones/core/param.rb', line 51 def process(num_frames, start_frame = 0) values = super return values unless @audio_source modulation = modulation_samples(num_frames, start_frame) values.zip(modulation).map { |base, sample| base + (sample.to_f * @modulation_amount) } end |
#set_param(param) ⇒ Object Also known as: setParam
15 16 17 18 |
# File 'lib/deftones/core/param.rb', line 15 def set_param(param) @param = param self end |