リバーブつけた
今までのなんちゃってリバーブをFreeverbに変更した。ソースコードは以下のページからリンクされているページで入手できる。
prettoguitar.blogspot.com
リンク先はFreeverb3というVSTの作者のページ。Freeverbより音質がよいらしい。ESP32で動くかどうかは分からない。
freeverb3vst.osdn.jp
freeverbsource.zipをダウンロードし、
- allpass.cpp, allpass.hpp
- comb.cpp, comb.hpp
- denormals.h
- revmodel.cpp, revmodel.hpp
- tuning.h
をESP32ソースファイルの置き場所にコピーし、
revmodel *freeverb;
:
freeverb = new revmodel();
でリバーブモデル?を生成しておく。入出力バッファを
float revInput1[64], revInput2[64]; float revOutput1[64], revOutput2[64];
で64サンプル×2ch分確保しておく。ym2151.cのym2151_update_one()で得られる64サンプル2ch分をrevInput1/2[]に格納して
freeverb->processreplace(revInput1, revInput2, revOutput1, revOutput2, 64, 1);
を呼び出すとrevOutput1/2[]に出力される。これをi2s_write()に渡すとリバーブされた音が出る。思っていた以上にきれいな音だった。耳の肥えていない自分にはこれで十分かな。パラメータはroomsize, damp, wet, dry, widthの5つ。tuning.hに初期値が設定してある。dryが0だったので0.67に変更した。
ESP32で処理するときの負荷だが、44100サンプル作るのに
だった。結構ぎりぎり! 今はcore0で実行している。BLE MIDIと一緒に使うのは無理かもしれない。