たま日記

たまに書く

リバーブつけた

今までのなんちゃってリバーブを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と一緒に使うのは無理かもしれない。