2

AudioTrack を使用して生成している正弦波にリバーブ エフェクトを適用しようとしています。getAudioSessionId() メソッドを実行するとエラーが発生したため、presetReverb を試して、ドキュメントのように audiosession 0 に適用しましたが、リバーブはまったく適用されませんでした。そこで、EnvironmentalReverb と audiosession 0 を試し、さらに getAudioSessionId() を使用しましたが、どちらもリバーブを作成しませんでした。

これが私のコードです:

t = new Thread()
    {
        public void run()
        {
            setPriority(Thread.MAX_PRIORITY);
            int buffsize = AudioTrack.getMinBufferSize(sr, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);

            AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sr, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, buffsize, AudioTrack.MODE_STREAM);

            EnvironmentalReverb reverb = new EnvironmentalReverb(1,0);

            audioTrack.attachAuxEffect(reverb.getId());
            reverb.setDiffusion((short) 1000);
            reverb.setReverbLevel((short) 1000);
            reverb.setDecayTime(10000);
            reverb.setReverbDelay(100);
            reverb.setDensity((short) 1000);
            audioTrack.setAuxEffectSendLevel(1.0f);
            reverb.setEnabled(true);

            short samples[] = new short[buffsize];
            int amp = 32767;
            double twopi = 2*Math.PI;
            double fr = 262.f;
            double ph = 0.0;

            audioTrack.play();

            while(isRunning)
            {
                fr = 262;

                for(int i=0; i < buffsize; i++)
                {
                    samples[i] = (short) (amp*Math.sin(ph));
                    ph += twopi*fr/sr;
                }
                audioTrack.write(samples, 0, buffsize);
            }
            audioTrack.stop();
            audioTrack.release();

        }
    };
    t.start();

マニフェストでオーディオ設定の変更権限を持っているのに、リバーブ効果が作成されないのはなぜですか?

4

1 に答える 1

0

2 つのこと: 1 つ目は、「書き込み」または「再生」の前に必ずエフェクトをセットアップ (およびアタッチ) することです。2 つ目は、PresetReverb を機能させたい場合は、これを実行してから AudioTrack (または MediaPlayer) にアタッチする必要があります。

PresetReverb reverb = new PresetReverb(1, 0);

この途中のサンプル コードと、一番下の私の応答を参照してください: Android MediaPlayer with AudioEffect : Getting Error (-22,0)

于 2015-01-24T21:39:41.477 に答える