我目前正在开发一个应用程序,可以帮助用户调整他的吉他并生成吉他效果。这是实时的。我一直在寻找可以提供生成吉他效果(例如过载和延迟)的想法的 Java 应用程序,但我找不到任何东西。还需要实时创建波形的来源。您的评论会很有帮助,在此先感谢。
4 回答
约翰说:
首先,忘记 Java……其次,您将与硬件交互……Java 不支持这种东西。
天哪,这有点苛刻 - 你应该告诉 Sun 在他们发布 API 之前这是不可能的:http: //java.sun.com/products/java-media/sound/。在 Java 中处理了很多声音,我从来没有遇到过延迟或缓冲区的问题,即使在有些破旧的硬件上也是如此。
好例子@http ://www.jsresources.org/examples/index.html
好帮手@http://java.sun.com/products/java-media/sound/list.html
...话虽如此,John 对学习 DSP 和波形分析的评论是在 $$$。
玩得开心 - 戴夫
这个开源项目对你来说可能是一个很好的参考。有一个构造波形的函数 http://code.google.com/p/musicg/
关于低延迟声音处理的可行性:看看这篇关于Harmonicon 的文章,一个 java 软合成器。这是一个完全在 java 中实现的示例播放合成器,使用Metronome GC,它在实时操作系统上运行时具有 < 2 ms 的较高延迟保证。
关于波形生成/dsp,请查看这个问题中的示例,Java 生成声音,一个非常简单的波形生成示例。
首先,忘记Java。Java 是一个托管运行时,它进行垃圾收集。发生这种情况时,您会听到关闭的声音,因为您希望将声音缓冲区保持在较小以最小化延迟,
其次,您将与硬件(即声卡)交互,Java 不支持这种东西,因此您要么必须在 JNI 中编写一些硬件抽象,要么找到现有的解决方案,但这样做有问题。您不太可能从 Java 平台获得实时性能。
你想要做的是你想要去做C++
,你会想要了解更多关于偏微分、DSP、声音合成和波形分析的知识。这是相当多的工作,但如果你开始阅读相关研究,它应该会给你一个很好的方向感......