J'ai écrit le code suivant pour la modulation de fréquence d'un signal audio. L'audio lui-même est de 1 seconde, échantillonné à 8000 Hz. Je veux appliquer FM à ce signal audio en utilisant une onde sinusoïdale avec une fréquence de 50 Hz (exprimée comme une fraction de la fréquence d'échantillonnage). Le signal de modulation a un indice de modulation de 0,25 de manière à créer une seule paire de bandes latérales.extrait de code de modulation de fréquence (FM)
for (i = 0; i < 7999; i++) {
phi_delta = 8000 - 8000 * (1 + 0.25 * sin(2* pi * mf * i));
f_phi_accum += phi_delta; //this can have a negative value
/*keep only the integer part that'll be used as an index into the input array*/
i_phi_accum = f_phi_accum;
/*keep only the fractional part that'll be used to interpolate between samples*/
r_phi_accum = f_phi_accum - i_phi_accum;
//If I'm getting negative values should I convert them to positive
//r_phi_accum = fabs(f_phi_accum - i_phi_accum);
i_phi_accum = abs(i_phi_accum);
/*since i_phi_accum often exceeds 7999 I have to add this if statement so as to prevent out of bounds errors */
if (i_phi_accum < 7999)
output[i] = ((input[i_phi_accum] + input[i_phi_accum + 1])/2) * r_phi_accum;
}
Ok, mais quelle est votre question? –
Eh bien, ce code ne semble pas fonctionner et je ne suis même pas sûr si c'est supposé fonctionner. J'ai posé cette question dans un autre fil (http://stackoverflow.com/questions/8655121/frequency-modulation-fm) et j'ai simplement essayé de mettre en œuvre ce qu'on m'avait dit. –