我想做一个非常简单的synth。
简而言之,我想播放一个wav文件,并在某些点循环,直到触摸被释放。
我正在寻找一些示例代码,(不需要是免费的)。
对于这样一个基本的问题,我很抱歉,我一直在谷歌这个,虽然似乎没有关于这个确切的话题,除非我错过了一些重要的术语。
还有,我所描述的是一个波表合成器,还是一个音板?
我把它叫做采样器
下面是一个示例项目,将帮助您开始:
https://sites.google.com/site/iphonecoreaudiodevelopment/remoteio-playback参见:
The Audio Programming Book
The Core Audio Book
我的一个示例项目
您需要将声音数据存储在内存中,并使用某种read()命令填充要发送给声卡的字节数组。read()命令必须跟踪它在读取之间的位置,因此必须维护一个持久指针。你将测试指针的位置,看看你是否已经到达终点,并在需要时重置到起点。
当然,具体取决于你选择的语言。
我用Java做了这个,增加了以不同速度播放的可能性。http://www.hexara.com/VSL/VSL2.htm有点慢。我已经学到了一些自从张贴,但还没有回去修复它。该程序会请求允许,并让你从电脑上加载一个wav文件。它应该是16位,立体声,44100fps, little-endian。
WaveTable合成有点不同,因为只有一个波的单一迭代被存储并用作源数据。
以下是斯坦福大学CCRMA网站上的一段简短讨论:https://ccrma.stanford.edu/~bilbao/booktop/node9.html我用这种方法制作了一个Java"Theremin"。http://www.hexara.com/VSL/JTheremin.htm使用WaveTable,您可以决定数组的大小。如果是2的幂,则可以在每次增量之后对指针进行位掩码,这比进行比较和重置要快。