Java で純粋なトーンを生成する静的メソッドを開発しようとしています。
最初は簡単そうに見えたのですが、ダブルアレイをラウドスピーカーに書き込もうとすると、ハーモニクスが多すぎることに気づきました。
スペクトル アナライザー (ソノメーター) でテストしてから、配列の結果をグラフィックに描画しました。私がそれをやったとき、私は問題を見てきました:
それは波形についてです、それは突然です。この配列を滑らかにしたいのですが、やり方がわかりません。
これはコードです:
/**
* Genera un tono puro.
* @param bufferSize Tamaño del buffer.
* @param fs Frecuencia de muestreo.
* @param f0 Frecuencia central.
* @return El tono puro.
*/
public static double[] generateTone(int bufferSize, int fs, int f0) {
double[] tone = new double[bufferSize]; // Tono
double angle; // Ángulo del tono
// Sólo hace falta recorrer la mitad del array, ya que hay simetría:
for (int i = 0; i < tone.length / 2; i++) {
angle = 2 * Math.PI * f0 * i / fs; // Calculamos la variación del ángulo
// Tenemos que conseguir que la señal sea menos abrupta para reducir al máximo los armónicos):
tone[2 * i + 1] = tone[2 * i] = Math.sin(angle); // Aprovechamos la simetría
}
return tone;
} // getSinus()