有人能给我一些关于如何合成乐器声音(钢琴、鼓、吉他等)的方向吗?
我甚至不知道该找什么。
谢谢。
我不确定现在是否仍然存在这个问题,但是Android似乎存在延迟问题,无法进行真正的音频合成。在我看来,NanoStudio是iOS上最好的音频应用程序,而作者迄今为止拒绝制作Android版本,因为该框架尚未准备好。
请参考以下链接:
这完全取决于您正在创建的应用程序类型,如果它将成为Akai APC触发声音的应用程序,则可能没问题。如果您想要进行真正的合成(制作波形以复制钢琴,吉他和鼓),这就是JASS上面提到的内容,那么Android可能无法处理。
如果您正在寻找有关通过合成模拟有机乐器的指南,请查看Fred Welsh的书籍 http://www.synthesizer-cookbook.com/。
https://sites.google.com/site/androidsynthesizer/
最终,如果您想创建一个完整的合成器或多轨应用程序,您将不得不将您的振荡器、滤波器等渲染为可以输入到MediaPlayer的音频流。您不一定需要MIDI来做到这一点。http://jazarimusic.com/2011/06/audio-on-android-a-developers-perspective/
有趣的阅读。有两个项目可能值得关注,JASS (Java Audio Synthesis System) 和 PureData。尽管 PureData 可能是较为困难的选择,但也非常有趣。
Android上的MIDI支持很糟糕。(音频支持也是如此,但这是另一回事。)有一篇有趣的博客文章讨论了Android上(缺乏)MIDI功能。以下是他为解决某些限制所做的工作:
就我个人而言,我通过以下方式解决了动态MIDI生成问题:以编程方式生成一个MIDI文件,将其写入设备存储器,使用该文件启动媒体播放器并让其播放。如果您只需要播放动态MIDI声音,则速度足够快。我怀疑它对于创建用户控制的MIDI东西(如序列器)没有用处,但对于其他情况非常好。
很遗憾,Android在官方Java SDK中取消了MIDI支持。
也就是说,您无法直接播放音频流。您必须使用提供的MediaStream类。
您将需要使用一些DSP(数字信号处理)知识和NDK来完成此操作。
如果有一个通用包(不一定是针对Android),可以让您做到这一点,我不会感到惊讶。
希望这能为您指明正确的方向!