From 4c472c0fc021037f2221386f484acd9c1ae8f5e6 Mon Sep 17 00:00:00 2001 From: KubaPro010 Date: Wed, 26 Mar 2025 13:26:45 +0100 Subject: [PATCH] optimize the fm modulator --- lib/fm_modulator.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/fm_modulator.c b/lib/fm_modulator.c index 275d0ac..5fbb3a7 100644 --- a/lib/fm_modulator.c +++ b/lib/fm_modulator.c @@ -9,8 +9,7 @@ void init_fm_modulator(FMModulator *fm, float frequency, float deviation, float float modulate_fm(FMModulator *fm, float sample) { float inst_freq = fm->frequency+(sample*fm->deviation); - if (inst_freq < 0.0f) inst_freq = 0.0f; - float out = sinf(fm->osc_phase); - fm->osc_phase = fmodf(fm->osc_phase + ((M_2PI * inst_freq) / fm->sample_rate), M_2PI); - return out; + fm->osc_phase += (M_2PI * inst_freq) / fm->sample_rate; + fm->osc_phase -= (fm->osc_phase >= M_2PI) ? M_2PI : 0.0f; + return sinf(fm->osc_phase); } \ No newline at end of file