操作系统10.6下的音频队列服务文档现在包括一个音调参数:
kAudioQueueParam_Pitch音调的数量会改变音频队列的播放,在2400到2400美分之间(其中1200美分对应一个音乐八度音阶)此参数仅在启用时间/变桨处理器时可用。
同一文档的其他部分仍然说音量是唯一可用的参数,我找不到任何关于上述时间/音高处理器的参考。
有人知道这是指什么吗?直接向参数写入值对播放没有影响(尽管不会引发错误)。同样,写入音量设置也可以。
在没有苹果支持的情况下,像往常一样令人沮丧。
这仅在iOS 7之前的OSX上可用。如果你查看AudioQueue.h,你会发现它只在iOS 7上有条件可用。[注意:在重读时,我看到你指的是OS X,而不是iOS,但希望以下是跨平台的]
此外,在设置time_pitch算法之前,您需要启用time_pitch的队列,并且只有Spectral算法支持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));