Reaper EEL2スクリプト言語 Sine Sweep Generator改造
JS:Sine Sweep Generatorは、 低い周波数からナイキスト周波数までサイン波で上り下りするプラグインでチャープ信号というやつ。 実験などでは結構便利に使えるのだが、標準の状態では0dBのマックス音量で鳴るので、ちょっと使いにくい。 このプラグインはVSTのようなものなのだけど、EEL2というスクリプト言語で書かれていて、ソースコードもReaperからアクセス可能で、その場で修正が出来てしまう。そこでEEL2スクリプトをいじってボリュームを加えてみた。 内容的には簡単で、ボリュームスライダーを追加して、その値から、dBからリニア変換し、出力に掛け算するというもの。 ただし、このEE2が、かなり癖のあるスクリプト言語。 C言語に近いけど、三項演算子とWhileしかないようなもの。 いろいろ安全装置がぶっ壊れたような言語に見えてしまう。 その代わりスクリプト言語としてはスピードでぶっちぎりという印象。 コンパイルも保存時もしくは読み込み時だろうか、瞬間的に終わる。実際リアルタイムの音処理もこなしてしまう。 ただし、日本語は打てないのでコメントは英語にするしかない。 EEL2の学習方法は、ここをよく見るしかないと思う。あとは具体的なソースコードを見るなり、気合で乗り切る。 https://www.reaper.fm/sdk/js/js.php desc:Sine Sweep2 slider1:8<1,100,1>Approx Sweep Length (sec) slider2:-6<-20,0,1>Volume (dB) in_pin:none out_pin:output (mono) out_pin:output (mono) @init cpos=0; dcpos=0; dir=0; idcpos=dcpos=$pi*16.0/srate; @slider gain=pow(10,slider2/20); len=srate*slider1; ddcpos=exp($pi*2/len); iddcpos=1/ddcpos; @sample spl0=spl1=sin(cpos)*gain; cpos+=dcpos; dir ? dcpos *= iddcpos : dcpos*=ddcp