Convolution Reverb、畳み込みリヴァーブ。録音された残響情報(インパルス・レスポンス・データ=IRデータ)を元に、その残響を忠実にシミュレートするリバーブ。
以下のマニュアルを参照した。
http://kymatica.com/scdoc_demo/Classes/PartConv.html
またフリーのIRデータは以下にあり。
http://www.xs4all.nl/~fokkie/IR.htm
前もって{}.fork;でIRデータの下処理が必要。マニュアルのコードを整理し、OSCでPureDataからコントロールできるようにした筆者のコードは以下のとおり。OSCresponderで下処理。SynthDefで畳み込みリヴァーブを立ち上げる。
r=OSCresponderNode(nil, "s_irr",{
arg time,responder,msg;
~irspectrum.free;
currentEnvironment.clear;
{
var ir, irbuffer, bufsize;
irbuffer= Buffer.read(s, "/home/yk/Desktop/ir/Factory.wav");
s.sync;
bufsize= PartConv.calcBufSize(2048, irbuffer);
~irspectrum= Buffer.alloc(s, bufsize, 1, bufnum:76);
~irspectrum.preparePartConv(irbuffer, 2048);
s.sync;
irbuffer.free;
}.fork;
}).add;
SynthDef("reverb",{
var input;
arg mix = 0.5;
input = In.ar(17);
Out.ar(30, (PartConv.ar(input, 2048, 76)) * mix);
}).load(s);
------
環境 Ubuntu 8.04 [WUBIインストール]
* デスクトップ環境を Xfce に置き換え(Xubuntu)
* RTカーネルを導入 2.6.24-29-rt
* SuperCollider Versin 3.4.2 + SC3pulgins + quarks
* PureData extended Version 0.42.5
------
以下のマニュアルを参照した。
http://kymatica.com/scdoc_demo/Classes/PartConv.html
またフリーのIRデータは以下にあり。
http://www.xs4all.nl/~fokkie/IR.htm
前もって{}.fork;でIRデータの下処理が必要。マニュアルのコードを整理し、OSCでPureDataからコントロールできるようにした筆者のコードは以下のとおり。OSCresponderで下処理。SynthDefで畳み込みリヴァーブを立ち上げる。
r=OSCresponderNode(nil, "s_irr",{
arg time,responder,msg;
~irspectrum.free;
currentEnvironment.clear;
{
var ir, irbuffer, bufsize;
irbuffer= Buffer.read(s, "/home/yk/Desktop/ir/Factory.wav");
s.sync;
bufsize= PartConv.calcBufSize(2048, irbuffer);
~irspectrum= Buffer.alloc(s, bufsize, 1, bufnum:76);
~irspectrum.preparePartConv(irbuffer, 2048);
s.sync;
irbuffer.free;
}.fork;
}).add;
SynthDef("reverb",{
var input;
arg mix = 0.5;
input = In.ar(17);
Out.ar(30, (PartConv.ar(input, 2048, 76)) * mix);
}).load(s);
------
環境 Ubuntu 8.04 [WUBIインストール]
* デスクトップ環境を Xfce に置き換え(Xubuntu)
* RTカーネルを導入 2.6.24-29-rt
* SuperCollider Versin 3.4.2 + SC3pulgins + quarks
* PureData extended Version 0.42.5
------