diff --git a/voice.c b/voice.c index 9a98d4c..60b9c02 100644 --- a/voice.c +++ b/voice.c @@ -17,8 +17,8 @@ static inline void voice_tick(struct voice_t *voice) voice->sample++; } -static double _R = 2.7; -static double _C = 4.3; +static double _R = 4700.0; +static double _C = 0.000000047; static inline void voice_filter(struct voice_t *voice, float l, float r) { @@ -53,8 +53,8 @@ void voice_run(struct voice_t *voice, uint32_t samples, float *left, float *righ amplitude = env_getamplitude(&_env2, voice->sample, voice->released) * voice->velocity * voice->velocity * 1.5; if (amplitude > 0.0) { - l *= voice->osc[1].tri * (1.0 + voice->osc[2].sin * 0.25); - r *= voice->osc[1].tri * (1.0 + voice->osc[2].sin * 0.25); + l += amplitude * voice->osc[1].tri * (1.0 + voice->osc[2].sin * 0.25); + r += amplitude * voice->osc[1].tri * (1.0 + voice->osc[2].sin * 0.25); } voice_filter(voice, l, r);