如何在iphone sdk中一起输出音频电平测量和音高变化

时间:2012-04-13 07:36:49

标签: iphone audio avaudioplayer pitch

我有一个应用程序,用户可以在其中录制音频并播放音调。 并且还应测量输出功率。 我知道avaudioplayer和cocos声音引擎的计量属性。但是使用这些我无法一起完成我的需求。 我怎么能一起做这些(音高变换和电平测量)。任何人都可以帮助我。

修改

  CDSoundEngine *soundEngine = [[CDSoundEngine alloc] init];

 NSArray *defs = [NSArray arrayWithObjects: [NSNumber numberWithInt:1],nil]; 
        [soundEngine defineSourceGroups:defs];
[soundEngine loadBuffer: 0 filePath: soundPath];
   ALuint soundID= [soundEngine playSound: 0 sourceGroupId: 0 pitch: PITCH pan: 0.0f gain: 2.0f loop: NO];

这是我目前正在使用的代码工作正常,但我无法测量输出功率。 在AVAudioPlayer的情况下 有一个属于meteringenabled的房产

[player setMeteringEnabled:YES];

我们可以通过

检索电源
  [player updateMeters];
    Float32 peak=[player peakPowerForChannel:0];

但我无法通过AVAudioPlayer改变音高

这是我的问题

2 个答案:

答案 0 :(得分:1)

@johnykutty没有选项可以通过使用avaudio播放器来改变声音。你需要通过外部库来获得音高变化....

答案 1 :(得分:1)

有一种方法可以使用外部库:Dirac3音频库 - http://dirac.dspdimension.com/Dirac3_Technology_Home_Page/Dirac3_Technology.html

此处提供了一个简单的教程:http://purplelilgirl.tumblr.com/post/3915153445/tutorial-other-ways-to-chipmunkify-your-voice

但许可费用为1000欧元。有一个免费版本,但您必须阅读许可协议,以确定您是否可以在商业产品中使用它(如果我已经正确阅读了协议,只要您给作者提供信用就可以使用它。)