楽器のエフェクターでは、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