2011-06-02 91 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));