ユーザーがオーディオユニットを使用してビートを記録できるアプリを持っています。これを実現するために、Apple の MixerHost サンプル コードから Mixer クラスを変更しました。
現在、サウンド ファイルがループしており、これを停止したいと考えています。サウンド ファイルが完成したら、ユーザーがミックスを保存できるようにしたいと思います。
ループの理由は、関数for loop
の次のセクションの最後の行にあります。inputrendercallback
for (UInt32 frameNumber = 0; frameNumber < inNumberFrames; ++frameNumber) {
outSamplesChannelLeft[frameNumber] = dataInLeft[sampleNumber];
if (isStereo) outSamplesChannelRight[frameNumber] = dataInRight[sampleNumber];
sampleNumber++;
// After reaching the end of the sound stored in memory--that is, after
// (frameTotalForSound / inNumberFrames) invocations of this callback--loop back to the
// start of the sound so playback resumes from there.
if (sampleNumber >= frameTotalForSound) sampleNumber = 0;
}
サンプルが使い果たされたら、コールバックにサンプルの要求を停止するように指示するために変更する必要があることは理解してif (sampleNumber >= frameTotalForSound) sampleNumber = 0;
いますが、この C-Struct を操作するよりも、Objective C でメソッドを呼び出す方がはるかに快適です。
これを行う方法について誰かアイデアがありますか?
ありがとう。