• 締切済み

javaで三角波を合成

javaでbyte配列を使って for(int i=0;i<triangle_wave.length;i++){ double s=0; for(int j=0;j<=2;j++){ double a = (2*j+1)*i*F0*Math.PI*2/Fs;(Math.sin((2*j+1)*i*F0*Math.PI*2/Fs)/(Math.pow((2*j+1),2)))); s += (double)(Math.pow((-1),j)*(Math.sin(a)/(Math.pow((2*j+1),2)))); } triangle_wave[i]= (byte)(110*8*s/(Math.pow(Math.PI,2))); } AudioFormat format = new AudioFormat((float)Fs,16,1,true,false); InputStream bytefile = new ByteArrayInputStream(triangle_wave); File file = new File("test.wav"); AudioInputStream inputstreem = new AudioInputStream(bytefile,format,wave.length); AudioSystem.write(inputstreem,AudioFileFormat.Type.WAVE,file); のような感じで三角波を作ったのですが、これをwavファイルに出力してSonicVisualiserでスペクトルを見ると基本周波数が出てきません。これはどうしてでしょうか? また、量子化ビット数を16から8にするとスペクトルに基本周波数が出てきます。量子化ビット数を2倍にすると周波数も2倍になるということなのでしょうか?

みんなの回答

  • myuki1232
  • ベストアンサー率57% (97/170)
回答No.1

ソースは読んでませんが、周波数以前に波形を見ればわかるのではありませんか?