我有一个应用程序,允许用户使用音频单元记录节拍。为了实现这一点,我从 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 中调用方法要比操作这个 C-Struct 更舒服。
有人对如何做到这一点有任何想法吗?
谢谢。