Class: Deftones::Core::Param

Inherits:
Signal
  • Object
show all
Defined in:
lib/deftones/core/param.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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(**options)
  super
  @lfo = nil
  @audio_source = nil
  @modulation_amount = 1.0
end

Instance Attribute Details

#audio_sourceObject (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

#lfoObject

Returns the value of attribute lfo.



6
7
8
# File 'lib/deftones/core/param.rb', line 6

def lfo
  @lfo
end

#modulation_amountObject (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

Returns:

  • (Boolean)


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

Raises:

  • (ArgumentError)


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)

Returns:

  • (Boolean)


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