Added input processing to state

This commit is contained in:
2026-04-27 14:16:28 +02:00
parent 787bf50957
commit a8c231df50
3 changed files with 45 additions and 36 deletions
+10 -32
View File
@@ -101,34 +101,16 @@ float amenbreak(float beat_samples, float playback_rate) {
void synth_init(state_t* state) {
osc.Init(SAMPLE_RATE);
osc.SetWaveform(vco_mode_to_daisy(VCO_SAW));
osc.SetFreq(440.0f);
osc.SetAmp(1.0f);
filter.Init(SAMPLE_RATE);
filter.SetFreq(2000.0f);
filter.SetRes(0.0f);
vco_env.Init(SAMPLE_RATE);
vco_env.SetTime(ADENV_SEG_ATTACK, 0.01f);
vco_env.SetTime(ADENV_SEG_DECAY, 0.8f);
vco_env.SetMin(0.0f);
vco_env.SetMax(1.0f);
vco_env.SetMin(0);
vco_env.SetMax(FILTER_FREQ_MAX);
filter_env.Init(SAMPLE_RATE);
filter_env.SetTime(ADENV_SEG_ATTACK, 0.01f);
filter_env.SetTime(ADENV_SEG_DECAY, 0.5f);
filter_env.SetMin(0.0f);
filter_env.SetMax(2000.0f);
state->clock_bpm = 0.1f;
filter_env.SetMin(0);
filter_env.SetMax(FILTER_FREQ_MAX);
clock_phase = 0.0f;
clock_trig = false;
amen_phase = 0.0f;
state->amen_enabled = true;
state->reverb_amount = 1.0;
}
float get_sample(void) {
@@ -160,25 +142,21 @@ float get_sample(void) {
float vco_freq = pot_to_freq(state->vco_freq, VCO_FREQ_MIN, VCO_FREQ_MAX);
if (state->quant_enabled) vco_freq = quantize(vco_freq, 12.0f);
//osc.SetFreq(vco_freq);
osc.SetFreq(vco_freq);
static int n = VCO_SINE;
osc.SetWaveform(vco_mode_to_daisy((vco_mode_t)(n++ % 4)));
//osc.SetAmp(1.0f);
osc.SetAmp(1.0f);
float vco_out = osc.Process();
float base_cutoff = pot_to_freq(state->filter_freq, FILTER_FREQ_MIN, FILTER_FREQ_MAX);
float mod_cutoff = base_cutoff + filter_env_out * (FILTER_FREQ_MAX - FILTER_FREQ_MIN);
mod_cutoff = fclamp(mod_cutoff, FILTER_FREQ_MIN, FILTER_FREQ_MAX);
//filter.SetFreq(mod_cutoff);
//filter.SetRes(state.filter_resonance);
filter.SetFreq(base_cutoff + filter_env_out);
filter.SetRes(state->filter_resonance);
filter.Process(vco_out);
float filtered = filter.Low();
float vca_out = filtered * vco_env_out;// * state.vco_volume;
float vca_out = filtered * vco_env_out * state->vco_volume;
float reverb_out = vca_out; //reverb(vca_out, state.reverb_amount);
float reverb_out = reverb(vca_out, state->reverb_amount);
float amen_out = 0.0f;
if (state->amen_enabled) amen_out = amenbreak(beat_samples, playback_rate);