2011-06-02 76 views
3

用於音頻隊列服務的文檔OS 10.6下現在包括一個音調參數:audioqueue kAudioQueueParam_Pitch

kAudioQueueParam_Pitch 美分,音高移位音頻隊列的播放的數量,範圍-2400through 2400美分(其中1200美分對應於一個音樂八度音。) 只有啓用時間/音高處理器時,此參數纔可用。

同一文檔的其他部分仍然說,音量是唯一可用的參數,而且我找不到任何對上述時間/音高處理器的引用。

有誰知道這是指什麼?直接向參數寫入值對播放沒有影響(儘管不會引發錯誤)。同樣寫入音量設置也行。

像往常一樣沮喪,沒有蘋果的支持。

回答

2

這隻在OSX上可用,直到iOS 7.如果你看看AudioQueue.h,你會發現它僅在iOS 7上有條件可用。[注:在重新閱讀我看到你指的是OS X,不是的iOS,但希望下面是跨平臺]

此外,還需要啓用time_pitch 隊列之前設置time_pitch算法,只有譜算法支持間距(所有的支持率)

result = AudioQueueNewOutput(&(pAqData->mDataFormat), aqHandleOutputBuffer, pAqData, 
          0, kCFRunLoopCommonModes , 0, &(pAqData->mQueue)); 
// enable time_pitch 
UInt32 trueValue = 1; 
AudioQueueSetProperty(pAqData->mQueue, kAudioQueueProperty_EnableTimePitch, &trueValue, sizeof(trueValue)); 
UInt32 timePitchAlgorithm = kAudioQueueTimePitchAlgorithm_Spectral; // supports rate and pitch 
AudioQueueSetProperty(pAqData->mQueue, kAudioQueueProperty_TimePitchAlgorithm, &timePitchAlgorithm, sizeof(timePitchAlgorithm));