ヘルプではUGen > Delaysとして分類されています。エフェクトとしてのディレイには CombC
などを使います。 DelayC
などはただの遅延素子なのでフィードバックはかかりません。
exception in real time: alloc failed
が出るときは s.options.memSize
で確保するメモリを増やしてサーバを再起動します。デフォルトでは8192KBが確保されます。
s.options.memSize = 1000000; // 1GBのメモリを確保。
SynthDef(\delay,
{ | out(0), in(0), delayTime(0.2), decaytime(16), wet(0.5) |
var input = In.ar(in, 2);
var dry = input * (1 - wet);
var delay = CombC.ar(input, 4, delayTime, decaytime, wet, dry);
OffsetOut.ar(out, delay);
}
).add;
TempoClock.tempo = 140 / 60;
~seq = Pbind(
\degree, Pseq([0, 2.2, 4.35, 6.67, 8.81], inf),
\dur, 0.5,
\amp, 0.3,
\out, 10
);
~delay = Pfx(~seq, \delay, \delayTime, 0.63, \in, 10).play;
以下はステレオディレイの例です。 Pfxb
を使う場合は SynthDef
の出力チャンネル数を s.options.numOutputBusChannels
以下にしないとエラーがでるようなので注意してください。
SynthDef(\delayStereo,
{ | out(0), in(0), delayTimeL(0.2), delayTimeR(0.15), decaytime(16)
, wet(0.5) |
var input = In.ar(in, 2);
var dry = input * (1 - wet);
var delayL = CombC.ar(input[0], 4, delayTimeL, decaytime, wet, dry[0]);
var delayR = CombC.ar(input[1], 4, delayTimeR, decaytime, wet, dry[1]);
OffsetOut.ar(out, [delayL, delayR]);
}
).add;
~seq1 = Pbind(
\out, 10,
\degree, Pseq([[0, 3], [0, 5], [2, 5], [2, 7]], inf),
\amp, 0.2
);
~seq2 = Pbind(
\out, 10,
\degree, Pseq([
Pseq([Rest], 4),
Pseq([14, 11, 8, Rest])
], inf),
\dur, 4,
\amp, 0.2
);
~seq3 = Pbind(
\out, 10,
\degree, Pseq([
Pseq([Rest], 8),
Pseq([-10, -9, -11, -10, -9, -11, -10, -14])
], inf),
\dur, 8,
\amp, 0.4
);
~par = Ppar([~seq1, ~seq2, ~seq3]);
TempoClock.tempo = 100 / 60;
~delay = Pfxb(~par, \delayStereo,
\in, 10,
\delayTimeL, TempoClock.beatDur * 0.78,
\delayTimeR, TempoClock.beatDur * 0.666,
).play;