Java软件合成库

时间:2020-03-06 14:49:25  来源:igfitidea点击:

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

我想最好的描述方式是:"吉他英雄",但没有固定的曲目。所有由我们即时创作的原创音乐,但该软件都会利用其音乐理论知识(以及一些监督学习算法)来确保我们输入的内容听起来很美。

听起来有点傻,像那样解释,但是可以。我认为这将成为一个有趣的附带项目。

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

最重要的是,它听起来应该令人难以置信。。。真正丰富,分层,纹理化的合成器,带有可配置参数的小样。声学乐器的仿真对我而言并不重要。

我的第二个优先事项是,严格地将它用作库应该很简单,根本不涉及GUI。 (如果有一个合成器具有惊人的输出,但它与GUI紧密耦合,那么我可能会考虑将音频部分从应用程序中剥离出来,但我宁愿从一个包含良好的库开始)。

我知道我可以将MIDI发送到独立的合成器,但是我认为在我学习合成器代码的同时学习一些DSP会很酷。

有什么建议?

哦,是的,我在Windows上,所以只能使用posix的东西。

谢谢!

解决方案

你检查过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)中。