hey, im trying to use the pulse divider class PSPdiv (its a Pspawner wrapper class) from the https://github.com/dkmayer/miSCellaneous_lib to use its \dur
values inside a Pmono and getting not the same result compared with chaining Pdefn(\durs)
. (there are also some nils in the post window with the PSPdiv, dont know why). any help is very much appreciated.
// SynthDef
(
var ixa, shaper;
ixa = { |freq, in, index|
var phase, waveform, sig;
phase = Phasor.ar(Impulse.ar(0), freq / SampleRate.ir, 0, 1);
waveform = (phase % 0.5 * 2pi).sin * (2 * (phase % 0.5 < 0.25) - 1);
waveform = waveform + (2 * (phase % 0.5 >= 0.25));
waveform = waveform + (2 * (phase >= 0.5));
sig = (waveform + (in * index)).fold2;
sig;
};
shaper = {|in, mix, amount|
var k, shaped;
k = 2 * amount / (1 - amount);
shaped = (1 + k) * in / (1 + (k * in.abs));
shaped = XFade2.ar(in, shaped, mix);
};
SynthDef(\bass, {
arg index=1, iScale=5;
var trig = \trig.tr(1);
var trigMod = LFNoise0.ar(8).round;
var sig, gainEnv, iEnv, mod;
var low, mid, high;
var lowFreq, highFreq;
iEnv = EnvGen.ar(Env([0, index, index * iScale, index], [0.0001, 5, 1], \lin), trig);
gainEnv = EnvGen.ar(Env([0, 1, 1, 0], [0, \atk.kr(0.2), \rel.kr(0.01)], \curve.kr(-5)), (trig * trigMod).abs);
mod = Sweep.ar(trig * trigMod, [51.913, 726.783]);
sig = ixa.(51.913, ((mod * 2pi) + (pi/3)).wrap(-pi, pi), iEnv);
sig = (sig * [2, 0.05]).mean;
lowFreq = 207.652;
highFreq = 1038.26;
low = LPF.ar(LPF.ar(sig, lowFreq), lowFreq);
sig = sig - low;
mid = LPF.ar(LPF.ar(sig, highFreq), highFreq);
high = sig - mid;
// lows
low = low + PitchShift.ar(low, 0.2, 2);
low = shaper.(low, 1, \amount.kr(0.2));
// highs
high = (high * \boost.kr(3).dbamp).tanh;
sig = low + mid + high;
sig = sig * gainEnv * \amp.kr(0.25);
sig = MidEQ.ar(sig, 13289.75, 0.7, 8);
sig = LeakDC.ar(sig);
sig = Limiter.ar(sig);
Out.ar(\out.kr(0), sig);
}).add;
)
///////////////////// chain Pdefn(\durs) //////////////////////
(
Pdefn(\durs, Pbind(\dur, 0.2));
Pdef(\bass,
Ppar({ |i|
Pmono(\bass,
\dur, Pkey(\dur).poll,
\atk, 0.2,
\rel, 0.01,
\curve, -5,
\amount, 0.2,
\index, Pwhite(0.0,0.03),
\boost, 3,
\trig, Pwhite(0.5, 1.0, inf),
\amp, 0.15,
\out, i,
)
} !2 ) <> Pdefn(\durs)
);
)
Pdef(\bass).play;
Pdef(\bass).stop;
////////// PSPdiv ///////////////////////
(
~bass = { |durs|
Ppar({ |i|
Pmono(\bass,
\dur, Pseq(durs).poll,
\atk, 0.2,
\rel, 0.01,
\curve, -5,
\smooth, 0.5,
\index, Pwhite(0.0,0.03),
\boost, 3,
\trig, Pwhite(0.5, 1.0, inf),
\amp, 0.15,
\out, i,
)
} !2 )
};
~pulse = 1;
~div = 5;
~divBase = 1;
~divType = \seq;
Pdef(\rhythm,
PSPdiv(
PL(\pulse),
~bass,
PL(\div),
PL(\divBase),
PL(\divType)
),
);
)
Pdef(\rhythm).play;
Pdef(\rhythm).stop;