如何在 iphone sdk 中同时进行输出音频电平测量和音高变化
Posted
技术标签:
【中文标题】如何在 iphone sdk 中同时进行输出音频电平测量和音高变化【英文标题】:How to do output audio level metering and pitch changing together in iphone sdk 【发布时间】:2012-04-13 07:36:49 【问题描述】:我有一个应用程序,用户可以在其中录制音频并在音调发生一些变化的情况下播放它。 并且还应测量输出体积功率。 我知道 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 的情况下 有一个属性计量启用
[玩家 setMeteringEnabled:YES];
我们可以通过
来获取能量 [player updateMeters];
Float32 peak=[player peakPowerForChannel:0];
但我无法通过 AVAudioPlayer 更改音高
这是我的问题
【问题讨论】:
@MDT 我已经添加了相关代码 【参考方案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 欧元。有免费版本,但是你必须阅读许可协议,看看你是否可以在商业产品中使用它(如果我正确阅读了协议,你可以使用它,只要你给作者署名)。
【讨论】:
【参考方案2】:@johnykutty 没有使用 avaudio 播放器更改声音的选项。您需要通过外部库来更改音高....
【讨论】:
以上是关于如何在 iphone sdk 中同时进行输出音频电平测量和音高变化的主要内容,如果未能解决你的问题,请参考以下文章
如何结合 AudioQueuePause 和 AudioQueueGetCurrentTime 在 iPhone SDK 中恢复音频播放?