Sorted out a lot of bugs
parent
d42a177db9
commit
e5bfc0d79d
44
grains.scd
44
grains.scd
|
@ -149,12 +149,16 @@ s.sampleRate
|
||||||
\pitch,
|
\pitch,
|
||||||
{
|
{
|
||||||
arg out, posb, triggerb, track=1, dir=1, detune=0.0, chorus=0, harmonic=2;
|
arg out, posb, triggerb, track=1, dir=1, detune=0.0, chorus=0, harmonic=2;
|
||||||
var base, chor;
|
var tracking, base, chor, det, csig, dsig;
|
||||||
base = dir * Schmidt.kr(Slope.kr(posb), 0, 0) * 2 - 1;
|
csig = Latch.kr(WhiteNoise.kr(), In.kr(triggerb));
|
||||||
chor = chorus * harmonic.pow((Latch.kr(WhiteNoise.kr(), In.kr(triggerb)) + 0.5).floor) + (1 - chorus);
|
dsig = Latch.kr(WhiteNoise.kr(), In.kr(triggerb));
|
||||||
Out.kr(out, base * chor);
|
tracking = Schmidt.kr(Slope.kr(posb), 0, 0) * 2 - 1;
|
||||||
|
base = dir * (track * tracking + (1 - track));
|
||||||
|
det = detune * dsig + 1;
|
||||||
|
chor = chorus * harmonic.pow(csig + 0.5).floor + (1 - chorus);
|
||||||
|
Out.kr(out, base * chor * det);
|
||||||
}
|
}
|
||||||
).play(s, [ \out, ~pitchb, \triggerb, ~triggerb, \posb, ~playbacklfob, \dir, 1, ]);
|
).play(s, [ \out, ~pitchb, \triggerb, ~triggerb, \posb, ~playbacklfob, \dir, 1, \track, 0]);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -188,11 +192,10 @@ s.sampleRate
|
||||||
trigger = Impulse.kr(120);
|
trigger = Impulse.kr(120);
|
||||||
pitch = In.kr(pitchb);
|
pitch = In.kr(pitchb);
|
||||||
blen = BufDur.kr(buffer);
|
blen = BufDur.kr(buffer);
|
||||||
//pos = Wrap.kr(In.kr(posb, 1) + WhiteNoise.kr(blur), 0, 1);
|
pos = Wrap.kr(In.kr(posb, 1) + WhiteNoise.kr(blur), 0, 1);
|
||||||
pos = In.kr(posb, 1) * blen;
|
|
||||||
pans = pan + WhiteNoise.kr(jitter) + (track * (In.kr(posb, 1) - 1));
|
pans = pan + WhiteNoise.kr(jitter) + (track * (In.kr(posb, 1) - 1));
|
||||||
filtfreq = (In.kr(modb, 1) * freq * 0.5) + freq;
|
filtfreq = (In.kr(modb, 1) * freq * 0.5) + freq;
|
||||||
grains = TGrains.ar(2, trigger, buffer, 1, pos, size, pans, amp);
|
grains = TGrains.ar(2, trigger, buffer, pitch, pos * blen, size, pans, amp);
|
||||||
Out.ar(out, RLPF.ar(grains, filtfreq, rq));
|
Out.ar(out, RLPF.ar(grains, filtfreq, rq));
|
||||||
}
|
}
|
||||||
).play(s, [
|
).play(s, [
|
||||||
|
@ -231,14 +234,6 @@ s.sampleRate
|
||||||
// s.sync(); // this needs to be done in a routine because it calls yield
|
// s.sync(); // this needs to be done in a routine because it calls yield
|
||||||
// sidebar -
|
// sidebar -
|
||||||
|
|
||||||
ServerMeter.new(s, 8, 8);
|
|
||||||
|
|
||||||
~mixer.set(\in, 0);
|
|
||||||
~recordb;
|
|
||||||
|
|
||||||
~monitor.set(\in, ~usbinput);
|
|
||||||
|
|
||||||
~mixer.set(\in, 0);
|
|
||||||
|
|
||||||
(
|
(
|
||||||
|
|
||||||
|
@ -302,9 +297,9 @@ OSCdef.freeAll;
|
||||||
|
|
||||||
~to.slider('/grains/buffer', 0, TouchOSCScale(0, 1), {});
|
~to.slider('/grains/buffer', 0, TouchOSCScale(0, 1), {});
|
||||||
|
|
||||||
~to.xy('/grains/speed', [ 1, 40 ], TouchOSCScale(0, 2), TouchOSCScale(0, 120), { | v |
|
~to.xy('/grains/speed', [ 1, 120 ], TouchOSCScale(0, 2), TouchOSCScale(0, 240), { | v |
|
||||||
~playbacklfo.set(\speed, v[0] / ~buflen);
|
~playbacklfo.set(\speed, v[0]);
|
||||||
~trigger.set(\freq, v[1]);
|
~trigger.set(\freq, v[1] / ~buflen);
|
||||||
});
|
});
|
||||||
|
|
||||||
~to.button('/grains/mode', 0, { |v|
|
~to.button('/grains/mode', 0, { |v|
|
||||||
|
@ -315,7 +310,7 @@ OSCdef.freeAll;
|
||||||
~granulator.set(\posb, mode[1]);
|
~granulator.set(\posb, mode[1]);
|
||||||
~playbacklfo = mode[0];
|
~playbacklfo = mode[0];
|
||||||
~playbacklfob = mode[1];
|
~playbacklfob = mode[1];
|
||||||
~playbacklfo.set(\speed, ~to.v('/grains/speed')[0]);
|
~playbacklfo.set(\speed, ~to.v('/grains/speed')[0] / ~buflen);
|
||||||
}, {
|
}, {
|
||||||
[ "Bad mode index", v ].postln;
|
[ "Bad mode index", v ].postln;
|
||||||
});
|
});
|
||||||
|
@ -348,9 +343,12 @@ OSCdef.freeAll;
|
||||||
|
|
||||||
~to.button('/grainfx/chorus', 0, { |v| ~pitch.set(\chorus, v) });
|
~to.button('/grainfx/chorus', 0, { |v| ~pitch.set(\chorus, v) });
|
||||||
|
|
||||||
|
~to.slider('/grainfx/detune', 0, TouchOSCScale(0, 0.059), { |v| ~pitch.set(\detune, v) });
|
||||||
|
|
||||||
|
|
||||||
~to.slider('/grainfx/pan', 0, TouchOSCScale(-1, 1), { |v| ~granulator.set(\pan, v) });
|
~to.slider('/grainfx/pan', 0, TouchOSCScale(-1, 1), { |v| ~granulator.set(\pan, v) });
|
||||||
~to.slider('/grainfx/track', 0, TouchOSCScale(-1, 1), { |v| ~granulator.set(\track, v) });
|
~to.slider('/grainfx/track', 0.5, TouchOSCScale(-1, 1), { |v| ~granulator.set(\track, v) });
|
||||||
~to.slider('/grainfx/jitter', 0, TouchOSCScale(0, 1), { |v| ~granulator.set(\jitter, v) });
|
~to.slider('/grainfx/jitter', 0.25, TouchOSCScale(0, 1), { |v| ~granulator.set(\jitter, v) });
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -367,6 +365,7 @@ OSCdef.freeAll;
|
||||||
// );
|
// );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
~to.xy(
|
~to.xy(
|
||||||
'/fx/filter',
|
'/fx/filter',
|
||||||
[ 10000, 0.3 ],
|
[ 10000, 0.3 ],
|
||||||
|
@ -399,6 +398,7 @@ OSCdef.freeAll;
|
||||||
~posdisplay.stop;
|
~posdisplay.stop;
|
||||||
|
|
||||||
~playbacklfob;
|
~playbacklfob;
|
||||||
|
~pitchb.scope;
|
||||||
|
|
||||||
~posb;
|
~posb;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue