Monday, July 28, 2014

Reverbいらないよね?だって動いてないもん

AndroidのAudioEffectにReverbっていう機能があるんだけど、これの効果が全然わからない。

楽器のエフェクターでは、Reverbってのはめちゃかっこいいエフェクトの一つなので、すっごく期待してんだけど、全然効果を感じられないので、使い方が間違ってんのかなぁとずっと疑問におもってました。
また、端末によっては動いているものもあるんだろうと、、
だけど、テスト用に売られているNexusシリーズで動いていることを実感できないとなっては、これサポートする意味あんの?と思う次第です。

ちなみに、公式サイトによると、Reverbは他のEffectとは異なり次のような点で注意しなければならないようです。

1AudioSessionは0で生成しないといけない。
2SendLvelを設定しておかないといけない。
3EffectをMediaPlayerにAttachしないといけない。

上記のルールを守ると次のようなコードになります。

PresetReverb mReverb = new PresetReverb(1, 0);
mReverb.setPreset(PresetReverb.PRESET_LARGEROOM);
mReverb.setEnabled(true);
mp1.attachAuxEffect(mReverb.getId());
mp1.setAuxEffectSendLevel(1.0f);

しかし効果は分からない、あとはMediaPlayerを生成しDataSourceを設定するまえに設定するのか?その後なのか?ぐらいだけど、両方ためしてみたけど効果を感じられなかったです。
そもそも、DataSourceに前に設定とか、後とかの設定が本当に意味があるのだったら、すっごくステート管理が面倒になるのでやりたくはない。
あと、ほかにもフェフェクトとしてEnvironmentalReverbまであるので、これとの組み合わせによる管理も必要だし、ただでさえ、Effect周りは何度もOn/Offをしたり曲をきりかえたりすると稀にフリーズしたり落ちたりするので、これ以上面倒な実装をいれたくないというのが本音です。

こんなのに頭使うぐらいなら、Gain操作をしてReplayGapの実装をしたほうがどんだけ有意義かわからないですよね。
てわけで、Reverb機能は実装しない方向で考えてます。

もし、こうやったら良いという情報があればご一報をください。
そのときは喜んで実装いたします。




No comments:

Post a Comment