AVAudioRecorder peakPowerForChannel iphoneをアップデートしていません

私のココス2dのゲームでは、私はiPhoneのマイクから音声を検出したいと思うし、これは自動的に私はavaudiorecorderのpeakPowerForChannelを使用して再生する必要があります コード:

const double ALPHA = 0.05;
    NSString *[email protected]"nil";
            NSError *error;
    if(checker.recording){
        [checker updateMeters];
        [email protected]"checker";
        peakPowerForChannel = pow(10, (ALPHA* [checker peakPowerForChannel:0]));
    }
    else if (recorder.recording) {
        [recorder updateMeters];
        peakPowerForChannel = pow(10, (ALPHA * [recorder peakPowerForChannel:0]));
         [email protected]"recorder";
    }
  //NSLog(@"-------------- %f",lowPassResults);
    lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;  
    NSLog(@"%@ >>>>>>>>>>>>>>>>>>>>>> %f   peakPowerForChannel ---%f",currentRecorder,lowPassResults,peakPowerForChannel);
  if (lowPassResults >0.4){
        if (!recorder.recording) {
            [checker stop];
}
    else{
        if (recorder.recording) {
            [recorder stop];
 [checker record];

        }
    }

初めて正常に動作します。オーディオを再生した後、[recorder peakPowerForChannel:0]は一定の値を与えます どうすればこの問題を解決できますか

ありがとうございました

1

1 答え

[recorder updateMeters] updates the value once only. Every time you check for [recorder peakPowerForChannel:0] value. You must call [recorder updateMeters] method. So good way is to check for the value in a timer and call [recorder updateMeters] method before checking the value.

5
追加された
私が問題にしたコードはタイムカードバックに置かれています
追加された 著者 Johnykutty,
私は値を更新しない理由がある。これは、単純なオーディオエンジン(cocos2d)を使用してオーディオエフェクトを再生したために発生します。 avaudioplayerで変更しました
追加された 著者 Johnykutty,
素敵なアプリ、私はそれが好きです。私の必要性は、オートリスニングを実装し、リスニング後に音調の変化(ピッチの変化)で話すことです。それを実装する方法を教えてください。
追加された 著者 Johnykutty,
コード内のチェッカーとレコーダーは何ですか?彼らは2つの異なるレコーダーですか?
追加された 著者 Nikhil Aneja,
私はこのコードを理解できません。何をしたいのですか? if(lowPassResults> 0.4){if(!recorder.recording){[チェッカの停止]; } else {if(recorder.recording){[レコーダーの停止]; [チェッカレコード]; }レコーダーが2回目であるかどうかわからない。 peakPowerForChannel = 0の初期値を初期化する。次にログをチェックする
追加された 著者 Nikhil Aneja,
gr8 .. :) ..なぜ私はココスでCDAudioManagerを使用していないのだろう...私はココスのボイスレコーディングに基づいて3つのアプリケーションを作成しました..私はそれらのすべてのCDAudioManagerを使用...私はどの機能あなたは実装したい.. [リンク] itunes.apple.com/us/app/kooka/id401134800?mt = 8
追加された 著者 Nikhil Aneja,
私は、CDAudioManagerを使用してサウンドを再生しました。AVAudioRecorderは録音に使用されました。
追加された 著者 Nikhil Aneja,
私が実装したことを2実装したいと思うことを意味します。:Pあなたがしたことは正しいです。私はあなたのコードをチェックした。あなたが変更する必要がある主なものは1レコーダーだけです。 CDAudioMangerで再生します。実際にAVAudio Playerの問題は、あなたのサウンドを保存し、それを再生することです。だから、しばらくするとメモリの問題が発生し、アプリがクラッシュします。したがって、これを避けるには、同じスロットを使用してCDAudioManagerを格納する必要があります。 1回だけ演奏する音が1つだけ保存されます。私はあなたにその機能を教えてあげます。 [email protected]で私をオフラインで追加してください..
追加された 著者 Nikhil Aneja,