我正在使用binaural beats进行一些工作,并试图构建一个Java应用程序,该应用程序可以以略有不同的频率(大约25-30Hz的差异)播放两种声音。
在理想的情况下,我想为Java提供两个整数输入,例如440和410,并让Java播放440Hz音调和410Hz音调。
鉴于我在javax.sound.*
类中看到的内容,看来Java仅支持等效的钢琴音符... A4 @ 440Hz,然后是A-sharp-4 @ 466.164Hz,反之则是G-sharp-4 @ 415.305Hz。虽然“相邻”通常在产生双耳节拍的范围内,但我正在尝试实现对音调频率的更多控制。
由于简单的音频合成只不过是频率,强度和时间长度,在我看来,是在javax.sound.*
类的肠子中某个地方,当我告诉Java播放“A4”时,会出现某种查找,那是440Hz。问题在于是否有办法破解该表以说“A4.1”等于449Hz。
我一直在搞砸javax.sound.midi
,还没有探索过javax.sound.sampled
;看来我需要采样音色才能使用sampled
类;我喜欢综合。如果我弄错了,请指引我正确。
我见过的大多数第三方接口(interface)都是专门针对音乐制作和操纵的,因此,它们在处理微音方面的能力受到限制。是否有人对解决方案有任何经验或建议?
最佳答案
您可以使用javax.sound.sampled.*
中的类生成样本并将其发送到声卡;基本上创建一个软件振荡器。
它需要一些知识,但是当您开始工作时会很有趣;)
创建此文件时,我正在与这些分类游戏:http://bobusumisu.net/testing/bobusynth-alpha1/
这是让我入门的教程:http://www.drdobbs.com/jvm/230500178