2011-05-13 124 views
1

這應該可以在Mac OS X上通過覆蓋AudioStreamBasicDescription中的採樣率然後創建一個新的輸出隊列來實現。是否有可能改變音頻文件的播放音高

我已經能夠檢索默認採樣率並寫入一個新採樣率(即用48000替換44100),但這不會導致輸出信號發生任何音高變化。

err = AudioFileGetProperty(mAudioFile, kAudioFilePropertyDataFormat, &size, &mDataFormat); 
     if (err != noErr) 
      NSLog(@"Couldn't determine the audio file format"); 
     Float64 mySampleRate = mDataFormat.mSampleRate; //the initial rate 
     if (inRate != 1) { 
//write a new value 
      mDataFormat.mSampleRate = inRate; 
      //then 
err = AudioQueueNewOutput etc. 

任何建議將不勝感激。

回答

0

更改採樣率不會改變音頻的音高。您可能會認爲回放速度更快的音高更高。然而,這是感知而非現實。

要改變音高,您需要通過數字信號處理(DSP)庫處理音頻數據。另外,看看通過AudioUnit運行它:

Audio Unit Programming Guide

+0

改變採樣率*不*改變音頻的音調。它一起改變音高和節奏。這不僅僅是感知。當然,你可以單獨改變音高,但不要改變速度。 – 2014-05-18 20:54:50