|
|
@ -31,6 +31,8 @@ |
|
|
|
* SOFTWARE. |
|
|
|
* SOFTWARE. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Rev 10 March 2021 - Corrected interpolation formula Bob L
|
|
|
|
|
|
|
|
|
|
|
|
#include "synth_sin_cos_f32.h" |
|
|
|
#include "synth_sin_cos_f32.h" |
|
|
|
|
|
|
|
|
|
|
|
// 513 values of the sine wave in a float array:
|
|
|
|
// 513 values of the sine wave in a float array:
|
|
|
@ -80,7 +82,7 @@ void AudioSynthSineCosine_F32::update(void) { |
|
|
|
/* Read two nearest values of input value from the sin table */ |
|
|
|
/* Read two nearest values of input value from the sin table */ |
|
|
|
a = sinTable512_f32[index]; |
|
|
|
a = sinTable512_f32[index]; |
|
|
|
b = sinTable512_f32[index+1]; |
|
|
|
b = sinTable512_f32[index+1]; |
|
|
|
blockS->data[i] = amplitude_pk * (a + 0.001953125*(b-a)*deltaPhase); /* Linear interpolation process */ |
|
|
|
blockS->data[i] = amplitude_pk * (a + (b-a)*deltaPhase); /* Linear interpolation process */ |
|
|
|
|
|
|
|
|
|
|
|
/* Shift forward phaseS_C and get cos. First, the calculation of index of the table */ |
|
|
|
/* Shift forward phaseS_C and get cos. First, the calculation of index of the table */ |
|
|
|
phaseC = phaseS + phaseS_C; |
|
|
|
phaseC = phaseS + phaseS_C; |
|
|
@ -90,7 +92,7 @@ void AudioSynthSineCosine_F32::update(void) { |
|
|
|
/* Read two nearest values of input value from the sin table */ |
|
|
|
/* Read two nearest values of input value from the sin table */ |
|
|
|
a = sinTable512_f32[index]; |
|
|
|
a = sinTable512_f32[index]; |
|
|
|
b = sinTable512_f32[index+1]; |
|
|
|
b = sinTable512_f32[index+1]; |
|
|
|
blockC->data[i] = amplitude_pk * (a + 0.001953125*(b-a)*deltaPhase); /* Linear interpolation process */ |
|
|
|
blockC->data[i] = amplitude_pk * (a + (b-a)*deltaPhase); /* Linear interpolation process */ |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
AudioStream_F32::transmit(blockS, 0); |
|
|
|
AudioStream_F32::transmit(blockS, 0); |
|
|
|