mirror of
https://github.com/radio95-rnt/fm95.git
synced 2026-02-26 19:23:51 +01:00
oscillator function
This commit is contained in:
2
.vscode/.server-controller-port.log
vendored
2
.vscode/.server-controller-port.log
vendored
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"port": 13452,
|
||||
"time": 1735839820567,
|
||||
"time": 1735894326191,
|
||||
"version": "0.0.3"
|
||||
}
|
||||
@@ -26,4 +26,11 @@ float get_oscillator_cos_sample(Oscillator *osc) {
|
||||
osc->phase -= M_2PI;
|
||||
}
|
||||
return sample;
|
||||
}
|
||||
|
||||
float get_oscillator_sin_multiplier_ni(Oscillator *osc, float multiplier) {
|
||||
return sinf(osc->phase*multiplier)
|
||||
}
|
||||
float get_oscillator_cos_multiplier_ni(Oscillator *osc, float multiplier) {
|
||||
return sinf(osc->phase*multiplier)
|
||||
}
|
||||
@@ -11,3 +11,5 @@ void init_oscillator(Oscillator *osc, float frequency, float sample_rate);
|
||||
void change_oscillator_frequency(Oscillator *osc, float frequency);
|
||||
float get_oscillator_sin_sample(Oscillator *osc);
|
||||
float get_oscillator_cos_sample(Oscillator *osc);
|
||||
float get_oscillator_sin_multiplier_ni(Oscillator *osc, float multiplier);
|
||||
float get_oscillator_cos_multiplier_ni(Oscillator *osc, float multiplier);
|
||||
@@ -155,8 +155,8 @@ int main() {
|
||||
uninterleave(input, left, right, BUFFER_SIZE*2);
|
||||
|
||||
for (int i = 0; i < BUFFER_SIZE; i++) {
|
||||
float sin38 = sinf(pilot_osc.phase*2);
|
||||
float cos38 = cosf(pilot_osc.phase*2); // Stereo carrier should be a harmonic of the pilot which is in phase, best way to generate the harmonic is to multiply the pilot's phase by two, so it is mathematically impossible for them to not be in phase
|
||||
float sin38 = get_oscillator_sin_multiplier_ni(&pilot_osc, 2);
|
||||
float cos38 = get_oscillator_cos_multiplier_ni(&pilot_osc, 2); // Stereo carrier should be a harmonic of the pilot which is in phase, best way to generate the harmonic is to multiply the pilot's phase by two, so it is mathematically impossible for them to not be in phase
|
||||
float pilot = get_oscillator_sin_sample(&pilot_osc); // This is after because if it was before then the stereo would be out of phase by one increment, so [GET STEREO] ([GET PILOT] [INCREMENT PHASE])
|
||||
float l_in = left[i];
|
||||
float r_in = right[i];
|
||||
|
||||
@@ -149,7 +149,7 @@ int main() {
|
||||
uninterleave(input, left, right, BUFFER_SIZE*2);
|
||||
|
||||
for (int i = 0; i < BUFFER_SIZE; i++) {
|
||||
float stereo_carrier = sinf(pilot_osc.phase*2); // Stereo carrier should be a harmonic of the pilot which is in phase, best way to generate the harmonic is to multiply the pilot's phase by two, so it is mathematically impossible for them to not be in phase
|
||||
float stereo_carrier = get_oscillator_sin_multiplier_ni(&pilot_osc, 2); // Stereo carrier should be a harmonic of the pilot which is in phase, best way to generate the harmonic is to multiply the pilot's phase by two, so it is mathematically impossible for them to not be in phase
|
||||
float pilot = get_oscillator_sin_sample(&pilot_osc); // This is after because if it was before then the stereo would be out of phase by one increment, so [GET STEREO] ([GET PILOT] [INCREMENT PHASE])
|
||||
float l_in = left[i];
|
||||
float r_in = right[i];
|
||||
|
||||
Reference in New Issue
Block a user