Class: SynthBlocks::Synth::PolyVoice

Inherits:
Object
  • Object
show all
Defined in:
lib/synth_blocks/synth/polysynth.rb

Overview

:nodoc:

Instance Method Summary collapse

Constructor Details

#initialize(sfreq, parent, preset) ⇒ PolyVoice

Returns a new instance of PolyVoice.



9
10
11
12
13
14
15
16
17
# File 'lib/synth_blocks/synth/polysynth.rb', line 9

def initialize(sfreq, parent, preset)
  @sampling_frequency = sfreq
  @parent = parent
  @preset = preset
  @oscillator = SynthBlocks::Core::Oscillator.new(sfreq)
  @filter = SynthBlocks::Core::StateVariableFilter.new(sfreq)
  @amp_env = SynthBlocks::Mod::Adsr.new(@preset[:amp_env_attack], @preset[:amp_env_decay], @preset[:amp_env_sustain], @preset[:amp_env_release])
  @flt_env = SynthBlocks::Mod::Adsr.new(@preset[:flt_env_attack], @preset[:flt_env_decay], @preset[:flt_env_sustain], @preset[:flt_env_release])
end

Instance Method Details

#run(started, stopped, frequency, velocity) ⇒ Object



19
20
21
22
23
# File 'lib/synth_blocks/synth/polysynth.rb', line 19

def run(started, stopped, frequency, velocity)
  osc_out = @oscillator.run(frequency, waveform: @preset[:osc_waveform])
  osc_out = @filter.run(osc_out, @parent.get(:flt_frequency, started) + @flt_env.run(started, stopped) * @parent.get(:flt_envmod, started), @preset[:flt_Q])
  osc_out = osc_out * @amp_env.run(started, stopped) * velocity
end