簡易エフェクター
※※※JavaScriptで実行できるようにC++から移植しているので、処理が非常に遅いです※※※
16bit 2chのwavファイルを選択
畳み込みリバーブをする際は、こっちにIRファイルを入れる(16bit 2ch wavファイル)
IR...インパルス応答/インパルスレスポンス/Impulse Responseの略 任意の空間での破裂音みたいな音が記録されたファイル
ヨーク大学のOpenAirなどで配布されているので、そこからダウンロードする(ファイル形式が24bit 2chのwavファイルだった気がするので、事前に16bit 2chに変換しておく)
参考BPM(不正確?): ???
※数値補正:2^
参考調(不正確? 時間かかる PC+コンソール画面推奨): ???
※一応、一度に付けられるエフェクト(チェックボックスのチェック)は3つまでに制限
再生速度
速度: 1.00倍速
ピッチ:0.00
拍子入れ替え
BPM:
開始時間[秒]:
微小遅延
ボーカルキャンセラー(左右のチャンネルの差/2)
2chのままモノラル化
サンプリングレート変更(8000Hzで固定電話くらい)
サンプリングレート[Hz]:
逆再生
フランジャー
速度:1.00倍速
割合:0.5
畳み込みリバーブ(時間かかる 1曲2分~5分くらい)
※パソコン推奨 F12でコンソール画面をひらいておくこと(応答なしのポップアップが出るのを防ぐ ここで進捗が見れる)
割合: 0.25
無効周波数(x未満):200
コンプレッサー g(x)=f(x)*|f(x)|^(t-1)
t=1.00
出力音量(1より大きいと音割れする可能性あり):1.00倍
モノラル化(※audioタグのプレイヤーだとシークバーがバグる)
高校2年生の頃に作って、ちょくちょくアップデートしているC++のコードのJavaScript移植版
主な移植手順
- #defineをfunctionにする
- 型名をletにする/定数は型名を消す
- 関数の型名を消す
- ポインターなどの配列をnew Array() new Int16Array()などにする
- クラス演算子を関数にし、それに合わせて四則演算も関数にする
- メンバ変数/メソッドすべてにthis.をつける this->もthis.になおす
- 引数に入れる配列の長さの情報を消す(lengthがつかえるので)
- 一部の変数をnew DataView();から参照するように変更
- 一部のx[i]をx.getUint8(i) x[i] = y;をx.setUint8(i,y);のような形に直す
今後移植予定(2024/8/16)
- オルゴール
- 区間で切り抜き
- スケール測定(メジャー/マイナー)
- ...
元のコード(C++)はこちら (こっちだと畳み込みは大体1分以内におわる)
JavaScriptコードはこちら