私はオーディオ信号の周波数変調のために次のコードを書いています。オーディオ自体の長さは1秒で、8000 Hzでサンプリングされます。私は50Hzの周波数の正弦波(サンプリング周波数の一部として表される)を使って、このオーディオ信号にFMを適用したいと思っています。変調信号は、1対の側波帯のみを生成するように変調指数が0.25である。周波数変調(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;
}
あなたの質問は何ですか? –
さて、このコードは動作していないようだし、うまく動作しないのかどうかはわかりません。私は別のスレッド(http://stackoverflow.com/questions/8655121/frequency-modulation-fm)でこの質問をし、単に私がそこに伝えられたことを実装しようとしました。 –