3

OS 10.6 下的音频队列服务文档现在包含一个音高参数:

kAudioQueueParam_Pitch 音频队列播放音高偏移的音分数,范围为 -2400 到 2400 音分(其中 1200 音分对应于一个音乐八度音阶)。此参数仅在启用时间/音高处理器时可用。

同一文档的其他部分仍然说音量是唯一可用的参数,我找不到上面提到的时间/音高处理器的任何参考。

有谁知道这是指什么?直接将值写入参数对播放没有影响(尽管不会引发错误)。同样,写入音量设置确实有效。

像往常一样令人沮丧,没有Apple的支持。

4

1 回答 1

2

这仅在 iOS 7 之前的 OSX 上可用。如果您查看 AudioQueue.h,您会发现它有条件地仅在 iOS 7 上可用。 [注意:在重新阅读时,我看到您指的是 OS X,而不是 iOS,而是希望以下是跨平台的]

另外需要在设置time_pitch算法开启time_pitch的队列,只有Spectral算法支持pitch(都支持rate)

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));
于 2013-08-23T20:36:56.163 回答