0
1
mirror of https://github.com/radio95-rnt/fm95.git synced 2026-02-26 11:22:00 +01:00

maybe the darc will come

This commit is contained in:
2025-05-01 12:52:37 +02:00
parent 1d3171991e
commit 6c4aedc2c8
4 changed files with 31 additions and 6 deletions

View File

@@ -12,4 +12,20 @@ float modulate_fm(FMModulator *fm, float sample) {
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);
}
void init_refrenced_fm_modulator(RefrencedFMModulator* fm, Oscillator* osc, float deviation) {
fm->deviation = deviation;
fm->osc = osc;
}
float refrenced_modulate_fm(RefrencedFMModulator* fm, float sample) {
float inst_freq = sample * fm->deviation;
float phase = fm->osc->phase + ((M_2PI * inst_freq) / fm->osc->sample_rate);
if (phase >= M_2PI) {
phase -= M_2PI;
}
return sinf(phase);
}

View File

@@ -11,4 +11,12 @@ typedef struct
} FMModulator;
void init_fm_modulator(FMModulator *fm, float frequency, float deviation, float sample_rate);
float modulate_fm(FMModulator *fm, float sample);
float modulate_fm(FMModulator *fm, float sample);
typedef struct
{
float deviation;
Oscillator* osc;
} RefrencedFMModulator;
void init_refrenced_fm_modulator(RefrencedFMModulator *fm, Oscillator *osc, float deviation);
float refrenced_modulate_fm(RefrencedFMModulator *fm, float sample);