REAPERのEffectsフォルダにはIvanov氏が作った「Pink Noise Generator」というJSFXが入っていたのですが、ソースを読んでみるとホワイトノイズにフィルタをかけてピンクにしているものでした。ホワイトノイズにフィルタをかけるのではなくピンクノイズを直接生成するプログラムをPythonで作ったことがあるので、それをリアルタイムで動作するようにしてみます。
Voss-McCartney法そのままで、効率化もまったくしていません。しかも定数をそのまま書いているので汚いコードですが、低域から高域まできれいなピンクノイズが出力されます。
以下、JSFXコードです。
desc:Prosix Pinknoise Generator //tags: generator synthesizer //author: MARUI Atsushi slider1:-6<-60,0,0.1>Level (dB) @init t = 0; outmax = 0; @slider slider1<=-60 ? gain=0 : gain=pow(10, slider1/20); @sample r1 = rand(); t % 2 == 0 ? r2 = rand(); t % 4 == 1 ? r4 = rand(); t % 8 == 3 ? r8 = rand(); t % 16 == 7 ? r16 = rand(); t % 32 == 15 ? r32 = rand(); t % 64 == 31 ? r64 = rand(); t % 128 == 63 ? r128 = rand(); t % 256 == 127 ? r256 = rand(); t % 512 == 255 ? r512 = rand(); t % 1024 == 511 ? r1024 = rand(); out = r1 + r2 + r4 + r8 + r16 + r32 + r64 + r128 + r256 + r512 + r1024; abs(out) > outmax ? outmax=abs(out); out = (out / outmax - 0.5) * 1.9999; spl0 = out * gain; spl1 = out * gain; t = t+1;