我有一个音序器风格的应用程序,可以播放小的、预先录制的 wav 文件。用户可以设置节拍、旋律等。这一切都建立在 OpenAL 之上,它可以很好地一次播放大量样本并防止输出被剪辑。
我想创建一个录制功能,将传出的音频录制到用户可以保存、共享等的文件中。似乎录制麦克风输入很容易,但是在所有内容混合在一起后录制系统音频要少得多琐碎的。OpenAL 会让我利用输出流并将其复制到文件中吗?我是否需要连接到 remoteIO 音频单元,如果需要,这是否意味着转储 OpenAL 并使用核心音频和音频单元重写所有内容?
我似乎在这个话题上找不到太多东西,考虑到有多少音乐创作应用程序,我很惊讶这还没有在某个地方被讨论出来。我希望,如果不是一个明确的答案,至少有人能指出我正确的方向。
这是我的“播放声音”方法的样子,以防万一。
ALenum err = alGetError();
NSNumber * numVal = [self.soundDictionary objectForKey:soundKey];
NSUInteger bufferID = [numVal unsignedIntValue];
NSUInteger sourceID = [self nextAvailableSource];
alSourcei(sourceID, AL_BUFFER, 0);
alSourcei(sourceID, AL_BUFFER, bufferID);
alSourcef(sourceID, AL_PITCH, 1.0);
alSourcef(sourceID, AL_GAIN, .6);
err = alGetError();
if (err != 0) {
NSLog(@"OpenAL play sound error!!");
}
alSourcePlay(sourceID);