122 lines
2.2 KiB
Text
122 lines
2.2 KiB
Text
|
#lang scribble/manual
|
||
|
@(require (for-label racket))
|
||
|
|
||
|
@title{PingPong}
|
||
|
Stereo ping-pong delay.@section{related}
|
||
|
Classes/SinOsc
|
||
|
@section{categories}
|
||
|
UGens>Delays>Buffer
|
||
|
|
||
|
|
||
|
@section{description}
|
||
|
|
||
|
|
||
|
Bounces sound between two outputs… Like a ping-pong ball. PingPong is
|
||
|
actually a compound built upon link::Classes/RecordBuf:: and
|
||
|
link::Classes/PlayBuf:: .
|
||
|
|
||
|
|
||
|
@section{classmethods}
|
||
|
|
||
|
|
||
|
@section{method}
|
||
|
ar
|
||
|
|
||
|
@section{argument}
|
||
|
bufnum
|
||
|
First index of a multi channel buffer.
|
||
|
|
||
|
@section{argument}
|
||
|
inputs
|
||
|
An array of audio inputs, the same size as your buffer.
|
||
|
|
||
|
@section{argument}
|
||
|
delayTime
|
||
|
Delay time in seconds.
|
||
|
|
||
|
@section{argument}
|
||
|
feedback
|
||
|
Feedback coefficient.
|
||
|
|
||
|
@section{argument}
|
||
|
rotate
|
||
|
|
||
|
Which rotates the inputArray by one step. (left → right, right →
|
||
|
left). Rotation of 0 (or 2) would result in no rotation to the
|
||
|
inputArray.
|
||
|
|
||
|
|
||
|
@section{Examples}
|
||
|
|
||
|
|
||
|
|
||
|
@racketblock[
|
||
|
|
||
|
(
|
||
|
s = Server.local;
|
||
|
s.waitForBoot({
|
||
|
|
||
|
b = Buffer.alloc(s,44100 * 2, 2);
|
||
|
|
||
|
SynthDef("help-PingPong",{ arg out=0,bufnum=0,feedback=0.5,delayTime=0.2;
|
||
|
var left, right;
|
||
|
left = Decay2.ar(Impulse.ar(0.7, 0.25), 0.01, 0.25,
|
||
|
SinOsc.ar(SinOsc.kr(3.7,0,200,500)));
|
||
|
right = Decay2.ar(Impulse.ar(0.5, 0.25), 0.01, 0.25,
|
||
|
Resonz.ar(PinkNoise.ar(4), SinOsc.kr(2.7,0,1000,2500), 0.2));
|
||
|
|
||
|
Out.ar(0,
|
||
|
PingPong.ar(bufnum, [left,right], delayTime, feedback, 1)
|
||
|
)
|
||
|
}).play(s,[\out, 0, \bufnum, b.bufnum,\feedback,0.5,\delayTime,0.1]);
|
||
|
});
|
||
|
)
|
||
|
|
||
|
|
||
|
(
|
||
|
s = Server.local;
|
||
|
s.waitForBoot({
|
||
|
|
||
|
b = Buffer.alloc(s,44100 * 2, 2);
|
||
|
|
||
|
SynthDef("help-PingPong",{ arg out=0,bufnum=0;
|
||
|
var left, right;
|
||
|
left = Decay2.ar(Impulse.ar(0.7, 0.25), 0.01, 0.25,
|
||
|
SinOsc.ar(SinOsc.kr(3.7,0,200,500)));
|
||
|
right = Decay2.ar(Impulse.ar(0.5, 0.25), 0.01, 0.25,
|
||
|
Resonz.ar(PinkNoise.ar(4), SinOsc.kr(2.7,0,1000,2500),
|
||
|
0.2));
|
||
|
|
||
|
Out.ar(0,
|
||
|
PingPong.ar(bufnum, [left,right] * EnvGen.kr(Env([1, 1, 0], [2, 0.1])),
|
||
|
0.1, 0.8, 1)
|
||
|
)
|
||
|
}).play(s,[\out, 0, \bufnum, b.bufnum]);
|
||
|
});
|
||
|
)
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
(
|
||
|
|
||
|
Patch({ arg buffer,feedback=0.5,delayTime=0.2;
|
||
|
var left, right;
|
||
|
left = Decay2.ar(Impulse.ar(0.7, 0.25), 0.01, 0.25,
|
||
|
SinOsc.ar(SinOsc.kr(3.7,0,200,500)));
|
||
|
right = Decay2.ar(Impulse.ar(0.5, 0.25), 0.01, 0.25,
|
||
|
Resonz.ar(PinkNoise.ar(4), SinOsc.kr(2.7,0,1000,2500), 0.2));
|
||
|
|
||
|
PingPong.ar(buffer.bufnumIr, [left,right], delayTime, feedback, 1)
|
||
|
|
||
|
}).gui
|
||
|
|
||
|
)
|
||
|
|
||
|
::
|
||
|
|
||
|
]
|
||
|
|
||
|
|