事前に録音された小さな 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);