2016-11-28 7 views
-1

で音を発生、次のステートメントを使用する:トーンを生成するためのJavaプログラムのほとんどのJava

for(int i=0; i<milliseconds*frequency/1000; i++){ 
    double angle = i/(frequency/hertz)*2.0*Math.PI; 
    buffer[0]=(byte)(Math.sin(angle)*volume); 
} 

IはMath.sin(angle)関数によって返される角度のsin値がバッファ配列に格納されていることを知ります。しかし、このステートメントはどのように波形を生成するために働くのですか?

double angle = i/(frequency/hertz)*2.0*Math.PI; 
+0

のナイキスト・レートとシャノンの標本化定理に迅速な読み取りを行う

ベストよりAのような音 -

また、あなたはこれがあなたを投げた場合は(少なくとも二回、所望の周波数トーンでは、サンプリングレートを確認してくださいプログラミングの質問よりも数学の質問 – UnholySheep

+0

@UnholySheepはまだ有効なIMO – Gabriel

答えて

0

先頭へ戻るすべての結果が出力配列の最初の要素に詰め込まれています。あなたはそれをbuffer [i]に割り当てたいが、現在はすべてをbuffer [0]に入れる。

あなたのコードスニペットでは、変数frequencyとhertzを使用します(これは人を混乱させるでしょう)。私はあなたが希望するトーンの周波数を指定したいと思うし、あなたはsampling_rateを指定する必要があります。これにより、位相増分がfreq * 2pi/sampling_rateになります。これをインデックス変数 'i'でスケールすると、離散位相ポイントが得られます。 。運

関連する問題