用于Java的软件Synth库

我最近一直在思考一个我想要工作的音乐导向项目。 有点像游戏……有点像工作室工作站(FL Studio,Reason)。

我想描述它的最佳方式是:像“吉他英雄”,但没有jar头轨道。 所有原创音乐 – 由您即时创作 – 但软件将使用其音乐理论知识(以及一些监督学习算法)来确保您的输入变成听起来很棒的东西。

这听起来有点傻,这样解释,但是你去了。 这是我认为会成为一个有趣的侧面项目的东西。

无论如何,我正在寻找一个用于生成实际音频的Java库。 在sourceforge上浏览,有无数的软件合成器,我不知道该选择哪个。

我的首要任务是它应该听起来令人难以置信……真正丰富,分层,有纹理的合成器,配有大量可配置参数。 声学仪器的仿真对我来说并不重要。

我的第二个优先事项是,严格用作库,应该是直截了当的,根本不涉及任何GUI。 (如果有一个真正令人惊叹的输出的合成器,但它与GUI紧密耦合,那么我可能会考虑从应用程序中删除音频部分,但我宁愿从一个包含很好的库开始)。

我知道我可以将MIDI发送到一个独立的合成器,但我认为阅读实际的合成代码并在我学习时学习一点DSP会很酷。

有什么建议么?

哦,是的,我在Windows上,所以posix-only的东西是不行的。

谢谢!

你看过JFugue了吗? 它是“用于编程音乐的开源Java API,没有MIDI的复杂性”。

其他信息:找到JFugue文档(pdf)中引用的其他几个资源:

  • 音频合成引擎项目 :Java的MIDI合成器的开源版本

  • Gervill :作为音频合成引擎项目提案创建的开源软件合成器

是的,几年前我注意到了JFugue。 这是我有趣的计算机/音乐书签列表:

http://delicious.com/BenjiSmith/computermusic http://delicious.com/BenjiSmith/programming.java.libraries.music

但JFugue完全是关于音乐本身的结构……旋律,和声,节奏等……

我现在正在寻找的只是合成器。 这样的东西……

Synth s = new Synth(); Instrument i = s.getInstrument("Robot Bass"); i.makeAwesome(true); 

然后我将我的事件发送到MIDI流(或合成器库提供的​​任何控件API)。

如果Clojure是一个可接受的选项(在JVM上运行,很容易与Java集成),那么绝对值得检查Overtone 。

它使用SuperCollider作为合成引擎,但将其全部包含在一个不错的DSL和交互式编程环境中。

minim不是一个java合成器,但它是一个处理库,我想它也应该很容易与vanilla java一起使用。