Hi there
I am trying to control a few Ndefs and a Pdef via TouchOSC (https://www.dropbox.com/s/u081w9k7e519skr/instrument.touchosc?dl=0).
(
(
OSCdef.new(
\bins_4,
{
arg msg, time, addr, port;
Pdef(\zingy).set(\bins, msg[1].linexp(0,1,0.05,30));
},
'/inst_4/bins'
);
);
(
OSCdef.new(
\dur_4,
{
arg msg, time, addr, port;
Pdef(\zingy).set(\dur, msg[1].linexp(0,1,0.01,2));
},
'/inst_4/dur'
);
);
(
OSCdef.new(
\factor_4,
{
arg msg, time, addr, port;
Pdef(\zingy).set(\factor, msg[1].linlin(0,1,0,1));
},
'/inst_4/factor'
);
);
(
OSCdef.new(
\freq_4,
{
arg msg, time, addr, port;
Pdef(\zingy).set(\freqhi, msg[1].linexp(0,1,10,17000));
},
'/inst_4/freq'
);
);
(
OSCdef.new(
\interp_4,
{
arg msg, time, addr, port;
Pdef(\zingy).set(\interp, msg[1].linlin(0,1,0,1));
},
'/inst_4/interp'
);
);
(
OSCdef.new(
\level_4,
{
arg msg, time, addr, port;
Pdef(\zingy).set(\level, msg[1].linlin(0,1,0,2));
},
'/inst_4/level'
);
);
(
OSCdef.new(
\pan_4,
{
arg msg, time, addr, port;
Pdef(\zingy).set(\pan, msg[1].linlin(0,1,-1,1));
},
'/inst_4/pan'
)
);
(
OSCdef.new(
\shift_4,
{
arg msg, time, addr, port;
Pdef(\zingy).set(\shift, msg[1].linlin(0,1,-15,15));
},
'/inst_4/shift'
);
);
(
OSCdef.new(
\wrap_4,
{
arg msg, time, addr, port;
Pdef(\zingy).set(\wrap, msg[1].linexp(0,1,0.01,4));
},
'/inst_4/wrap'
);
);
(
OSCdef.new(
\on_4,
{
arg msg, time, addr, port;
if(msg[1]==1.0) {
(
(
SynthDef(\sinegrain, {
arg pan,freq,stretch,shift,interp,bins,factor,mul,wrap,level;
var grain, chain;
grain = (LFPar.ar(freq, 0, mul)*(XLine.kr(1.001,0.001,0.1,doneAction:2)-0.001));
chain = FFT({LocalBuf(1024)}!2,grain);
chain = PV_BinShift(chain,stretch,shift,interp);
chain = PV_MagSmear(chain,bins);
chain = PV_MagSmooth(chain,factor);
Out.ar(0,Pan2.ar(XFade2.ar(grain.wrap2(wrap),(IFFT(chain)),pan,level)))
}).add;
);
(
Pdef(\zingy).envir = (dur: 0.1, freqlo: 100, freqhi: 7000, pan: (-1), bins:1.0, factor:0.1,mul:0.1,
shift:0.2, interp:0, level:0.1, wrap:0.2)
);
Spec.add(\freqlo, \freq); Spec.add(\freqhi, \freq);
Pdef(\zingy).source = Pbind(
\instrument, \sinegrain,
\freq, Pwhite(Pkey(\freqlo), Pkey(\freqhi)),
);
)
} {
Pdef(\zingy).clear
};
},
'/inst_4/on'
)
);
(
OSCdef.new(
\play_4,
{
arg msg, time, addr, port;
if(msg[1]==1.0) {
Pdef(\zingy).play
} {
Pdef(\zingy).stop(3)
};
},
'/inst_4/play'
)
)
);
(
(
OSCdef.new(
\freqa_5,
{
arg msg, time, addr, port;
Ndef(\greyhole).set(\freqa, msg[1].linexp(0,1,0.25,100));
},
'/inst_5/freqa'
);
);
(
OSCdef.new(
\freqb_5,
{
arg msg, time, addr, port;
Ndef(\greyhole).set(\freqb, msg[1].linexp(0,1,0.01,1.4));
},
'/inst_5/freqb'
);
);
(
OSCdef.new(
\mul_5,
{
arg msg, time, addr, port;
Ndef(\greyhole).set(\mul, msg[1].linexp(0,1,0.01,2.4));
},
'/inst_5/mul'
);
);
(
OSCdef.new(
\densc_5,
{
arg msg, time, addr, port;
Ndef(\greyhole).set(\densc, msg[1].linexp(0,1,0.03,10));
},
'/inst_5/densc'
);
);
(
OSCdef.new(
\repeat_5,
{
arg msg, time, addr, port;
Ndef(\greyhole).set(\repeat, msg[1].linexp(0,1,0.25,100));
},
'/inst_5/repeat'
);
);
(
OSCdef.new(
\mulsig_5,
{
arg msg, time, addr, port;
Ndef(\greyhole).set(\mulsig, msg[1].linexp(0,1,0.02,6));
},
'/inst_5/mulsig'
);
);
(
OSCdef.new(
\delay_5,
{
arg msg, time, addr, port;
Ndef(\greyhole).set(\delay, msg[1].linexp(0,1,0.01,1));
},
'/inst_5/delay'
)
);
(
OSCdef.new(
\freqd_5,
{
arg msg, time, addr, port;
Ndef(\greyhole).set(\freqd, msg[1].linexp(0,1,0.05,20));
},
'/inst_5/freqd'
);
);
(
OSCdef.new(
\damp_5,
{
arg msg, time, addr, port;
Ndef(\greyhole).set(\damp, msg[1].linexp(0,1,0.01,2));
},
'/inst_5/damp'
);
);
(
OSCdef.new(
\feedb_5,
{
arg msg, time, addr, port;
Ndef(\greyhole).set(\feedb, msg[1].linexp(0,1,0.01,4));
},
'/inst_5/feedb'
);
);
(
OSCdef.new(
\modd_5,
{
arg msg, time, addr, port;
Ndef(\greyhole).set(\modd, msg[1].linexp(0,1,0.01,3));
},
'/inst_5/modd'
);
);
(
OSCdef.new(
\modf_5,
{
arg msg, time, addr, port;
Ndef(\greyhole).set(\modf, msg[1].linexp(0,1,0.1,50));
},
'/inst_5/modf'
);
);
(
OSCdef.new(
\size_5,
{
arg msg, time, addr, port;
Ndef(\greyhole).set(\size, msg[1].linexp(0,1,0.05,20));
},
'/inst_5/size'
);
);
(
OSCdef.new(
\pan_5,
{
arg msg, time, addr, port;
Ndef(\greyhole).set(\pan, msg[1].linlin(0,1,-1,1));
},
'/inst_5/pan'
);
);
(
OSCdef.new(
\amp_5,
{
arg msg, time, addr, port;
Ndef(\greyhole).set(\amp, msg[1].linlin(0,1,0,1));
},
'/inst_5/amp'
);
);
(
OSCdef.new(
\on_5,
{
arg msg, time, addr, port;
if(msg[1]==1.0) {
(
Ndef(\greyhole,
{ |freqa=5,
freqb=0.07, mul=0.12,
densc=0.5, repeat=5,mulsig=0.3,
delay=2,freqd=1,damp=0.1,
feedb=0.2,modd=0.1,modf=2,size=1,pan=(-1),amp=0.7|
{
// LFTri resposible for low frequencies / rhythms
var inSig = LFTri.ar(LFDNoise0.ar(freqa).exprange(0.1, 1000));
var lfo = { LFDNoise3.ar(freqb).linexp(-1, 1, 1, 10) } ! 2;
var i = Demand.kr(Dust.kr(densc), 0, Dxrand((0..10), repeat));
var sig = Fb1.ar({ |in, out|
// in[0][0] is the current (stereo) sample inSig
// in[0][1] is the current (stereo) sample lfo
(
in[0][1] * (
in[0][0] * mul + (
// changes between out[in-23], out[n-41] and
// out[n-60] cause high frequency changes,
// Select depends on a signal from outside,
// not previous samples as in example (2i)
(in[1][0].squared - Select.kr(i, out).squared).sqrt
)
)
).tanh
}, [inSig, lfo], 2, [2, 1], [[23, 81, 60]],
blockSize: s.options.blockSize,
blockFactor: 64 / s.options.blockSize
) * mulsig;
var delaysig = DelayC.ar(Gendy3.ar(sig, delay, LFDNoise3.ar(freqd!2).range(0.01, 0.1)).lag(0.0006));
// add frequency modulation by delay modulation
// lopass filtering with lag
XFade2.ar(DelayC.ar(sig, delay, LFDNoise3.ar(freqd!2).range(0.01, 0.1)).lag(0.0006),
GreyholeRaw.ar(sig*0.9,delaysig*0.1,damp, delay, LFDNoise3.ar(freqd!2).range(0.01, 0.1),feedb,modd,modf,size).lag(0.0006),pan,amp)
}
})
)
} {
Ndef(\greyhole).clear(5)
};
},
'/inst_5/on'
)
);
(
OSCdef.new(
\play_5,
{
arg msg, time, addr, port;
if(msg[1]==1.0) {
Ndef(\greyhole).play(0,2).fadeTime(2)
} {
Ndef(\greyhole).stop(3)
};
},
'/inst_5/play'
)
)
)
If I start \zingy first and \greyhole afterwards with TouchOSC the sound stops for a few seconds. The other way round this problem doesnât occur.
What can I do about this?
Thanks!