2012-10-26 35 views
5

私のアプリケーションでiPod/Musicアプリケーションを使用して再生されるサウンドのパワーを手に入れようとしています。iPhoneで再生される音楽のパワーを取得する

マイクでサウンドのパワーを得ること、またはAVAudioPlayerで自分のアプリでサウンドを再生し、次にaveragePowerForChannel:メソッドを使用することについては、すべてわかりました。 MPMusicPlayerControllerが私を助けることができるかどうか検索しましたが、私が望むところから得られる最も近いものは "nowPlayingItem"のMPMediaItemです。現在再生されている曲から多くの情報にアクセスできますが、 。

アプリ内の音楽アプリから再生される曲の現在のパワーを取得する方法はありますか?

答えて

0

iOS 7(volumeの属性はMPMusicPlayeriPodMusicPlayerの属性)では、Larmeの回答は推奨されていません。

AVAudioPlayer *somePlayer = [AVAudioPlayer new]; 
__autoreleasing NSError* error; 
somePlayer = [somePlayer initWithContentsOfURL:[[[MPMusicPlayerController systemMusicPlayer] nowPlayingItem] valueForProperty:MPMediaItemPropertyAssetURL] error:&error]; 
somePlayer.currentTime = [[MPMusicPlayerController systemMusicPlayer] currentPlaybackTime]; 
somePlayer.volume = 0; 
[somePlayer play]; 
[somePlayer setMeteringEnabled:YES]; 
[somePlayer updateMeters]; 
NSMutableArray* amps = [NSMutableArray array]; 
if (error != nil) { 
    NSLog(@"error: %@", error.debugDescription); 
} 
for (int i = 0; i < somePlayer.numberOfChannels; i++) { 
    [amps addObject:@(([somePlayer peakPowerForChannel:i] + 160.0)/160.0)]; 
    NSLog(@"Amplitude: %f db for channel %i", [somePlayer averagePowerForChannel:i], i); 
} 
float amp = 0; 
for (NSNumber *x in amps) { 
    amp += [x floatValue]; 
} 
amp /= amps.count; 
NSLog(@"amp: %f", amp); 
+0

私はこのプロジェクトでもう何年も働いていないので、あなたの答えはうまくいきません(Larmeの答えが得られます音量、そしてAlexChaffeeがコメントしたパワーではない)が、これは当時の私が探していたもののようであるので、とにかくそれを受け入れるだろう。 あなたはこの回答で他の誰かを助けてくれることを願っています:) – GawenBerger

0

これを試してみてください:myPlayer = [MPMusicPlayerController iPodMusicPlayer];

あなたはmyPlayer.volumeで音量を得ることができます。 フロートです。ステップは1/16です。

+1

ボリューム、ない力です:現在の曲(私は鉱山を行うときしかし、いくつかの奇妙な理由で、それは常に-120 dBを返す)とAVAudioPlayerインスタンスを取得する代わりに、これを試してみてください。パワーは、時々刻々のレベルで、デシベル・メーターで見ることができます。 – AlexChaffee

+0

ボリュームは廃止されました –

関連する問題