我有一個應用程序,允許用戶使用音頻單元在節拍中錄製。爲了達到這個目的,我從Apple的MixerHost示例代碼修改了Mixer類。如何阻止音頻文件在Apple的MixerHost中循環播放核心音頻示例
目前我的聲音文件循環,我想停止。我希望用戶能夠在聲音文件通過時保存混音。
的原因環路處於inputrendercallback
功能的以下部分的最後一行for loop
:
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。
有沒有人有關於如何做到這一點的任何想法?
謝謝。
你能解釋一下你的意思@ hotpaw2嗎?我通過在回調中向NSNotificationCenter註冊並在程序的另一部分中使用方法停止audiograph來解決此問題,但如果您可以概述更清潔的C解決方案,那麼我將不勝感激。 – 2012-04-21 12:54:30
有效的解決方案不一定看起來更清潔。設置標誌並進行輪詢是一種常見的工作解決方案,即使「醜陋」也是如此。 – hotpaw2 2012-04-21 14:18:38
這不是我的意思是熱水。我在說,如果你能以比我更好或更「清潔」的解決方案來幫助我,我肯定會歡迎它。據我瞭解,我的解決方案是「髒」,但我開始認爲它可能是好的。所以,如果我錯了,請幫助我! – 2012-04-21 15:59:22