我用Java编程,做了很多与web相关的事情,但我一直在考虑用某种语言创建一个非常简单的DAW。我考虑过C#,但它似乎不再支持Direct X(尽管有一些库的成功程度各不相同)。我很好奇是否有人对通过Java播放许多多声道声音有意见。我有时也需要修改一些VST支持(这可能不是微不足道的。我真的很担心我唯一的选择是C++,这会让我很不愉快,以至于我不会去做它(我知道一些C++,但还不足以写出这么紧张的东西)。
有谁有什么建议吗?谢谢
发布于 2010-10-15 19:09:25
毕竟,Java中的VST支持可能相当容易;我听说过使用http://github.com/mhroth/jvsthost的积极经验(也就是说,我在论坛上与之交谈过的人似乎很快就开始使用它,并成功地运行了许多不同的synths )。
顺便说一句:就我个人而言,我正在用Java语言开发一些使用SuperCollider作为音频后端的软件(免责声明:我对Java声音的实际经验有限)。虽然围绕SuperCollider构建DAW可能是可能的,但我不会真正推荐它作为这项工作的工具。然而,我也不太明白你为什么要构建一个DAW……如果你决定探索用电脑制作音乐的替代方法,你可以给SC看看(还有ChucK,我发现非常容易上手,而且非常有趣) :-)
不管怎样,回到问题上来。虽然我倾向于特别提到Java,但其中大部分也适用于C#:
传统上,在Java中,在时间至关重要的情况下,垃圾收集一直是一个令人担忧的问题;例如,在DAW中,这可能表现为不准确的计时或在输出中单击,其中GC中断程序的时间足够长,以至于它无法处理完整的缓冲区。如果您想要使用小缓冲区来实现低延迟,和/或不小心生成的垃圾数量,这一点尤其正确。但是,我不想传播关于Java声音的FUD :正如我所提到的,我自己并没有大量使用它,而且我相信这些问题正在得到改善。这当然是一个你需要注意的问题,但可能不是一个令人望而却步的问题。
我认为任何DAW中的一个大瓶颈都将是文件IO,只要采取适当的措施,它应该不会受到Java的影响。
如果您开始同时在多个通道上执行高强度的DSP,那么Java计算性能可能并不是完全最佳的(尽管可能真的不是很差);但是,如果您主要在DAW代码和任何带有VST的DSP中进行基本混合,那么他的计算性能应该是不成问题的。
在实际的音频IO方面,我看到还有针对Java的ASIO实现,如果您感兴趣的话。我甚至没有间接的经验,所以我真的不会担保他们。Java 1.7应该有改进的低延迟音频支持,FWIW (尽管据我所知,他们脑海中的应用程序并不像DAWs那样)。我不认为DirectX支持应该是DAW的主要因素。从这个意义上说,您可能不想忽视C#,因为它是一种非常好的语言。
发布于 2010-10-10 14:44:34
已经有一些DAW在使用java平台(例如frinika或javaDAW )。所以我认为这是一个合理的选择。
发布于 2013-05-10 05:17:58
我正在做类似的事情,所以我不得不说这是可能的,我的笔记本电脑被盗了,我不得不重新开始,但我已经重建了大部分。到目前为止,跟踪线程排列得很好,但我正在考虑实现像LWJGL的计时器这样的东西,以获得更好的精度。Tritonus是一个非常有用的库,你可以在jsresources.org上找到它,以及一些非常有用的例子。我在那里学到了很多。如果你给我发一封电子邮件我很乐意和你分享我的代码。
https://stackoverflow.com/questions/3899198
复制相似问题