Я экспериментировал с созданием звукового сигнала с использованием Java. Я нашел this ответ на SO.Звук гудка Java: Произвести звук некоторых конкретных частот
Я использую код этого ответа для получения звуковых сигналов. Код:
import javax.sound.sampled.*;
public class Sound
{
public static float SAMPLE_RATE = 8000f;
public static void tone(int hz, int msecs)
throws LineUnavailableException
{
tone(hz, msecs, 1.0);
}
public static void tone(int hz, int msecs, double vol)
throws LineUnavailableException
{
byte[] buf = new byte[1];
AudioFormat af = new AudioFormat(SAMPLE_RATE,8,1,true,false);
SourceDataLine sdl = AudioSystem.getSourceDataLine(af);
sdl.open(af);
sdl.start();
for (int i=0; i < msecs*8; i++) {
double angle = i/(SAMPLE_RATE/hz) * 2.0 * Math.PI;
buf[0] = (byte)(Math.sin(angle) * 127.0 * vol);
sdl.write(buf,0,1);
}
sdl.drain();
sdl.stop();
sdl.close();
}
public static void main(String[] args) throws Exception {
Sound.tone(15000,1000);
}
}
В методе main
я использую Sound.tone(15000,1000);
производить звук частоты 15000 Гц играть за 1000 мс
Но, я могу услышать звук, если я меняю до:
Sound.tone(1,1000);
,.Sound.tone(19999,1000);
С научной точки зрения это невозможно.
- В первом случае звук должен быть инфразвуковой, и я не должен быть в состоянии воспринимать.
- Во втором случае я все равно не слышу звук, потому что, поскольку мы стареем, способность слышать имеет тенденцию к уменьшению, и человек примерно моего возраста должен только слышать звук приблизительно 16000 Гц.
Кроме того, я не могу услышать:
Sound.tone(0,1000);
(несколько, как и ожидалось)Sound.tone(20000,1000);
Так, Как я могу производить звуки некоторых конкретных частот?
Я искал в Интернете, но ничего не мог найти по этому поводу.
Ответы, приведенные перед этим правилом, объясняют, почему это происходит, но не дают ответа, который я хочу.
Вы все еще можете слушать звук, но вы не можете отличить частоту с человеческим глазом, когда они очень маленькие :) –
Но я, конечно, не слышу инфразвукового звука, который, по-видимому, я могу в соответствии с этой программой. – Hackerdarshi
Существует также вероятность того, что компьютеры просто не изготовлены для производства инфра- и ультразвука – Arc676