Какой самый простой способ генерировать синусоидальный звук любой частоты в Java? Размер образца более 2 байт помог бы, но это не имеет значения.
Thanks
createSinWaveBuffer () метод в этих ответах не производит хорошие данные формы сигнала для игры непрерывно. Потребность иметь последний байт быть близким нулем, чтобы иметь полную форму сигнала. Лучший пример -
protected static final float SAMPLE_RATE = 16 * 1024;
public static byte[] createSinWaveBuffer(double freq) {
double waveLen = 1.0/freq;
int samples = (int) Math.round(waveLen * 5 * SAMPLE_RATE);
byte[] output = new byte[samples];
double period = SAMPLE_RATE / freq;
for (int i = 0; i < output.length; i++) {
double angle = 2.0 * Math.PI * i / period;
output[i] = (byte)(Math.sin(angle) * 127f); }
return output;
}