用Java生成声音

用Java生成声音,java,signal-processing,trigonometry,Java,Signal Processing,Trigonometry,在大多数用于生成音调的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],则当前将所有内容都填充到缓冲区[0]中 在代码片段

在大多数用于生成音调的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],则当前将所有内容都填充到缓冲区[0]中

在代码片段中,使用变量frequency和hertz(这会让人困惑)。我认为您需要指定所需的音调频率,并且需要规定采样率。这样,相位增量最终将是freq*2pi/sampling_rate,如果你通过索引变量“i”来缩放它,这将给你离散的相位点

还要确保采样率至少是所需频率音调的两倍(如果这让你感到困惑的话,请快速阅读奈奎斯特速率和香农的采样定理)


“祝你好运”

听起来更像是一道数学题,而不是一道编程题question@UnholySheep国际海事组织仍然有效
double angle = i/(frequency/hertz)*2.0*Math.PI;