From 22eea12b173fda07b4bcc89873daddec199ef5ea Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 30 Sep 2024 11:50:32 +0200 Subject: [PATCH] add wavefolder and envelope + velocity toggles --- synth/tx_operator.h | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/synth/tx_operator.h b/synth/tx_operator.h index aad079f..d209eaa 100644 --- a/synth/tx_operator.h +++ b/synth/tx_operator.h @@ -1,6 +1,5 @@ #pragma once #include "../clip/wavefolder.h" -#include "../util/averager.h" #include "tx_envelope.h" #include "tx_sineosc.h" @@ -10,28 +9,32 @@ public: tx_operator() : ratio {1} , amplitude {1.0f} - , wavefolding_amt {1.0f} + , envelope_enabled {true} + , velocity_enabled {true} { } tx_envelope envelope; tx_sineosc oscillator; + wavefolder folder; float ratio; float amplitude; - float wavefolding_amt; + bool envelope_enabled; + bool velocity_enabled; float process_sample(const bool& gate, const bool& trigger, const float& frequency, const float& velocity, const float& pm = 0) { - float env = envelope.process_sample(gate, trigger); - float avg = m_averager.process_sample(wavefolding_amt); - m_wavefolder.amount = avg; + float env = envelope_enabled ? envelope.process_sample(gate, trigger) : 1.f; // drifts and sounds better! if (envelope.is_busy()) { float osc = oscillator.process_sample(trigger, frequency, pm); - m_wavefolder.process_sample(osc); - return osc * env * velocity; + folder.process_sample(osc); + + float adjusted_velocity = velocity_enabled ? velocity : 1.f; + + return osc * env * adjusted_velocity; } else { return 0.; } @@ -42,9 +45,5 @@ public: this->envelope.set_samplerate(samplerate); this->oscillator.set_samplerate(samplerate); } - -private: - averager m_averager; - wavefolder m_wavefolder; }; } // namespace trnr