我想制作一个非常简单的合成器。
简而言之,我想播放一个wav文件,让它在特定点循环,直到触摸被释放。
我正在寻找一些示例代码,(不需要是免费的)。
对于这样一个基本问题,我一直在谷歌上搜索,虽然这个确切的主题似乎没有任何内容,除非我错过了一些重要的术语。
另外,我正在描述的是波表合成器还是音板?
答案 0 :(得分:3)
我称之为采样器。
这是一个可以帮助您入门的示例项目:
https://sites.google.com/site/iphonecoreaudiodevelopment/remoteio-playback
另见:
答案 1 :(得分:0)
您需要将声音数据存储在内存中,并使用某种read()命令填充要发送到声卡的字节数组。 read()命令必须跟踪它在读取之间的位置,因此必须保持持久指针。您将测试指针的位置,看看您是否已到达终点,并在需要时重置为开头。
具体情况将取决于您选择的语言。
我用Java做了这个,增加了以不同速度播放的可能性。 http://www.hexara.com/VSL/VSL2.htm 这有点迟钝。自从发布以来我已经学到了一点,但还没有回去修复它。程序请求权限,并从计算机加载wav文件。它应该是16位,立体声,44100fps,小端。
WaveTable合成略有不同,因为只存储了一次波的迭代并将其用作源数据。
以下是斯坦福大学CCRMA网站的简短讨论: https://ccrma.stanford.edu/~bilbao/booktop/node9.html 我用这种方法制作了一个Java“Theremin” http://www.hexara.com/VSL/JTheremin.htm
使用WaveTable,您可以决定数组的大小。如果它是2的幂,则可以在每次递增后对指针进行位掩码,这比进行比较和复位更快。