2013-01-03 46 views
3

我想知道是否有可能在xcode中減慢聲音。我的意思是我將在xcode中的支持文件中添加一些.mp3文件,然後創建可以加速或減速的應用程序。例如使用滑塊。它甚至有可能嗎?如果是的話,任何人都可以幫助我一些想法?謝謝控制聲音的速度xcode

+0

對於什麼平臺,iOS或OS X? – NSGod

+5

只是爲了清晰起見,您想減慢播放速度,不要減慢聲音的速度,正確嗎?由於聲速依賴於聲波通過的介質。 – propstm

+0

適用於iOS,我希望減慢/加快聲音的速度。喜歡它是120bpm,我想使它成爲100bpm或150bpm – TomasJ

回答

2

AVAudioPlayer有一個rate屬性,它應該能夠幫助你實現你的目標。 http://developer.apple.com/library/IOS/#documentation/AVFoundation/Reference/AVAudioPlayerClassReference/Reference/Reference.html

音頻播放器的播放速率。 @Property浮動率

討論

1.0此屬性的默認值提供正常重放速率。 可用範圍從0.5到半速播放到2.0 用於雙倍播放。

要設置音頻播放器的播放速率,您必須首先啓用速率 調整,如enableRate屬性說明中所述。

我還發現了一個好,所以張貼在AVAudioPlayer的速度: AVAudioPlayer rate

似乎正如你所提到的,你可以用值滑塊設置爲0.5〜2.0和的valueChanged修改音頻播放速度像通過使用

- (IBAction)changeValue:(UISlider *)sender 
{ 
    //made up assumed ivar names 
    if ([_audioPlayer respondsToSelector:@selector(setEnableRate:)]) 
     _audioPlayer.enableRate = YES; 
    if ([_audioPlayer respondsToSelector:@selector(setRate:)]) 
     _audioPlayer.rate = [NSNumber numberWithFloat:slideValue]; 
} 
+0

我不確定如何使用它?我應該在哪裏放我的mp3音樂。我想象它會有一個按鈕,它將開始播放聲音,並且還會有一個滑塊,它可以加快/減慢聲音。我知道如何編碼這個按鈕,但我怎麼能把它連接到滑塊? – TomasJ

0

以比其採樣率更快或更慢的速率播放PCM音頻會改變其音調,並且還會引入相當大的人爲因素。如果您確定,則您使用的方法是將MP3解碼爲PCM音頻,然後使用Direct Digital Synthesis Oscillator來控制播放速率。

如果您想保持音調但改變速度,您需要音頻時間伸縮算法。

Dirac3 from DSP Dimension是可以做到這一點的商業產品,可用於iOS應用程序的授權許可。其他商業解決方案存在

DSP Dimension的blog提供了一個有用的教程,介紹如何使用FFT實現音高偏移 的基礎知識。時間延伸本質上是相同的過程。然而,DIRAC插件中有一些祕密的東西,他們沒有告訴你。

被警告,除非你是電子工程,物理或數學畢業生,否則填補空白可能很難。