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

optimize the osclillator

This commit is contained in:
2025-03-26 13:24:13 +01:00
parent 7fbe7ec5e3
commit 5b8b3def6d
2 changed files with 13 additions and 9 deletions

View File

@@ -1,5 +1,5 @@
{
"port": 13452,
"time": 1742920067458,
"time": 1742991617814,
"version": "0.0.3"
}

View File

@@ -22,16 +22,20 @@ float get_oscillator_cos_sample(Oscillator *osc) {
return sample;
}
float get_oscillator_sin_multiplier_ni(Oscillator *osc, float multiplier) { // ni = No Increment
return sinf(fmodf(osc->phase * multiplier, M_2PI));
float get_oscillator_sin_multiplier_ni(Oscillator *osc, float multiplier) {
float new_phase = osc->phase * multiplier;
new_phase -= (new_phase >= M_2PI) ? M_2PI : 0.0f;
return sinf(new_phase);
}
float get_oscillator_cos_multiplier_ni(Oscillator *osc, float multiplier) {
return cosf(fmodf(osc->phase * multiplier, M_2PI));
float new_phase = osc->phase * multiplier;
new_phase -= (new_phase >= M_2PI) ? M_2PI : 0.0f;
return cosf(new_phase);
}
void advance_oscillator(Oscillator *osc) {
osc->phase += osc->phase_increment;
if (osc->phase >= M_2PI) {
osc->phase -= M_2PI;
}
}
osc->phase += osc->phase_increment;
osc->phase -= (osc->phase >= M_2PI) ? M_2PI : 0.0f;
osc->phase = (fabsf(osc->phase) < 1e-10f) ? 0.0f : osc->phase;
}