parent
8d2c2e887a
commit
2fd31d158a
@ -1,29 +1,89 @@
|
|||||||
NodeDictionary : IdentityDictionary {
|
NodeDictionary : IdentityDictionary {
|
||||||
getDefaultOr {
|
getDefaultOr {
|
||||||
| key, defaultValue |
|
| key, defaultValue |
|
||||||
if(this[\defaults][key].isNil, {
|
if(this[\defaults][key].isNil, {
|
||||||
^defaultValue
|
^defaultValue
|
||||||
}, {
|
}, {
|
||||||
^this[\defaults][key]
|
^this[\defaults][key]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
makeAnalysysNdef {
|
processSig {
|
||||||
^Ndef(this[\name], {
|
| sig, gate |
|
||||||
var input = SoundIn.ar(\bus.kr(0));
|
|
||||||
var signal = SynthDef.wrap(
|
var releaseNode = if (
|
||||||
func: this[\func],
|
this[\sustained].asBoolean,
|
||||||
prependArgs: [input]
|
{ 2 },
|
||||||
);
|
{ nil }
|
||||||
|
);
|
||||||
if(this[\convertToKr].isNil.not
|
|
||||||
and:
|
var envDoneAction = if (
|
||||||
this[\convertToKr] == true,
|
this[\sustained].asBoolean,
|
||||||
{
|
{ 0 },
|
||||||
A2K.kr(signal);
|
{ 2 }
|
||||||
}, {
|
);
|
||||||
signal;
|
|
||||||
});
|
if(this[\useLfo].asBoolean, {
|
||||||
});
|
var lfo = switch(this[\lfoWave])
|
||||||
}
|
{ \sin } { SinOsc }
|
||||||
|
{ \saw } { Saw }
|
||||||
|
{ \tri } { LFTri }
|
||||||
|
{ \pulse } { Pulse }
|
||||||
|
? SinOsc;
|
||||||
|
|
||||||
|
signal = signal * lfo.kr(
|
||||||
|
\lfoFreq.kr(1)
|
||||||
|
).range(
|
||||||
|
1 - \lfoGain.kr(0.5), 1
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
if(this[\useSaturation].asBoolean, {
|
||||||
|
this.getDefaultOr(\saturationSteps, 4).do {
|
||||||
|
signal = signal.tanh;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if(this[\useEnv].asBoolean, {
|
||||||
|
var att = this.getDefaultOr(\attack, 0.1);
|
||||||
|
var rel = this.getDefaultOr(\release, 0.1);
|
||||||
|
var curve = this.getDefaultOr(\curve, 1);
|
||||||
|
|
||||||
|
var env = Env(
|
||||||
|
[0, 0, 1, 0],
|
||||||
|
[0, \attack.kr(att), \release.kr(rel)],
|
||||||
|
[0, \attackCurve.kr(curve), \releaseCurve.kr(curve)],
|
||||||
|
releaseNode: releaseNode,
|
||||||
|
).kr(envDoneAction, gate: gate);
|
||||||
|
|
||||||
|
signal = signal * env;
|
||||||
|
});
|
||||||
|
|
||||||
|
if(this[\usePan].asBoolean, {
|
||||||
|
switch(this[\panning],
|
||||||
|
\splay, { signal = Splay.ar(signal, \spread.kr(1), center: \pan.kr(0)); },
|
||||||
|
\splayAz, { signal = SplayAz.ar(this[\panningChannels], signal, orientation: \orientation.kr(0.5)); },
|
||||||
|
\pan, { signal = Pan2.ar(signal, \pan.kr(0)); }
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
if(this[\postAmp].asBoolean, {
|
||||||
|
signal = signal * \postAmp.kr(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
// if(this[\detectSilence].asBoolean, {
|
||||||
|
// FreeSelf.kr(
|
||||||
|
// DetectSilence.ar(
|
||||||
|
// [signal[0], signal[1]] + Impulse.ar(0)
|
||||||
|
// ).product)
|
||||||
|
// });
|
||||||
|
|
||||||
|
if(this[\limitDuration].asBoolean, {
|
||||||
|
Line.kr(0, 1, \dur.kr(1), doneAction: 2);
|
||||||
|
});
|
||||||
|
|
||||||
|
signal = signal * \amp.kr(1);
|
||||||
|
|
||||||
|
^signal;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -1,18 +1,19 @@
|
|||||||
+ NodeDictionary {
|
+ NodeDictionary {
|
||||||
makeBufferProcessingNdef {
|
makeBufferProcessingNdef {
|
||||||
| name, buf, quant = 1.0 |
|
| name |
|
||||||
|
|
||||||
var internalName = if(name.isNil, {this[\name]}, {name});
|
var internalName = if(name.isNil, {this[\name]}, {name});
|
||||||
|
|
||||||
Ndef(internalName, {
|
Ndef(internalName, {
|
||||||
var freq, signal, env, gate;
|
var signal, gate;
|
||||||
|
|
||||||
signal = SynthDef.wrap(
|
gate = \gate.tr(0);
|
||||||
func: this[\func],
|
|
||||||
prependArgs: [buf]
|
|
||||||
);
|
|
||||||
|
|
||||||
signal * \amp.kr(1);
|
signal = SynthDef.wrap(
|
||||||
});
|
func: this[\func],
|
||||||
}
|
);
|
||||||
|
|
||||||
|
this.processSig(signal, gate);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -1,32 +1,18 @@
|
|||||||
+ NodeDictionary {
|
+ NodeDictionary {
|
||||||
makeBufferProcessingSynthDef {
|
makeBufferProcessingSynthDef {
|
||||||
SynthDef(this[\name], {
|
SynthDef(this[\name], {
|
||||||
var buf = \buf.kr;
|
var signal, gate;
|
||||||
var signal = SynthDef.wrap(
|
|
||||||
func: this[\func],
|
|
||||||
prependArgs: [buf]
|
|
||||||
);
|
|
||||||
|
|
||||||
signal = Pan2.ar(
|
gate = \gate.tr(0);
|
||||||
signal * \amp.kr(1),
|
|
||||||
\pan.kr(0)
|
|
||||||
);
|
|
||||||
|
|
||||||
if(this[\detectSilence].asBoolean, {
|
signal = SynthDef.wrap(
|
||||||
FreeSelf.kr(
|
func: this[\func],
|
||||||
DetectSilence.ar(
|
);
|
||||||
[signal[0], signal[1]] + Impulse.ar(0)
|
|
||||||
).product)
|
|
||||||
});
|
|
||||||
|
|
||||||
if(this[\limitDuration].asBoolean, {
|
Out.ar(
|
||||||
Line.kr(0, 1, \dur.kr(1), doneAction: 2);
|
\out.kr(0),
|
||||||
});
|
this.processSig(signal, gate);
|
||||||
|
);
|
||||||
Out.ar(
|
});
|
||||||
\out.kr(0),
|
}
|
||||||
signal
|
|
||||||
);
|
|
||||||
}).add;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,74 +1,24 @@
|
|||||||
+ NodeDictionary {
|
+ NodeDictionary {
|
||||||
makeSourceNdef {
|
makeSourceNdef {
|
||||||
| name |
|
| name |
|
||||||
var internalName = if(name.isNil, {this[\name]}, {name});
|
var internalName = if(name.isNil, {this[\name]}, {name});
|
||||||
|
|
||||||
Ndef(internalName, {
|
Ndef(internalName, {
|
||||||
var freq, signal, env, gate;
|
var freq, signal, gate;
|
||||||
|
|
||||||
var releaseNode = if (
|
gate = \gate.tr(0);
|
||||||
this[\sustained].asBoolean,
|
freq = \freq.kr(220);
|
||||||
{ 2 },
|
|
||||||
{ nil }
|
|
||||||
);
|
|
||||||
|
|
||||||
gate = \gate.tr(0);
|
if(this[\useFreqLag].asBoolean, {
|
||||||
freq = \freq.kr(220);
|
freq = Lag.kr(freq, \freqLag.kr(0.5));
|
||||||
|
});
|
||||||
|
|
||||||
if(this[\useFreqLag].asBoolean, {
|
signal = SynthDef.wrap(
|
||||||
freq = Lag.kr(freq, \freqLag.kr(0.5));
|
func: this[\func],
|
||||||
});
|
prependArgs: [freq, gate]
|
||||||
|
);
|
||||||
|
|
||||||
signal = SynthDef.wrap(
|
this.processSig(signal, gate);
|
||||||
func: this[\func],
|
});
|
||||||
prependArgs: [freq, gate]
|
}
|
||||||
);
|
|
||||||
|
|
||||||
if(this[\useLfo].asBoolean, {
|
|
||||||
var lfo = switch(this[\lfoWave])
|
|
||||||
{ \sin } { SinOsc }
|
|
||||||
{ \saw } { Saw }
|
|
||||||
{ \tri } { LFTri }
|
|
||||||
{ \pulse } { Pulse }
|
|
||||||
? SinOsc;
|
|
||||||
|
|
||||||
signal = signal * lfo.kr(
|
|
||||||
\lfoFreq.kr(1)
|
|
||||||
).range(
|
|
||||||
1 - \lfoGain.kr(0.5), 1
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
if(this[\useSaturation].asBoolean, {
|
|
||||||
this[\saturationSteps].do {
|
|
||||||
signal = signal.tanh;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if(this[\useEnv].asBoolean, {
|
|
||||||
var att = this.getDefaultOr(\attack, 0.1);
|
|
||||||
var rel = this.getDefaultOr(\release, 0.1);
|
|
||||||
var curve = this.getDefaultOr(\curve, 1);
|
|
||||||
|
|
||||||
var env = Env(
|
|
||||||
[0, 0, 1, 0],
|
|
||||||
[0, \attack.kr(att), \release.kr(rel)],
|
|
||||||
[0, \attackCurve.kr(curve), \releaseCurve.kr(curve)],
|
|
||||||
releaseNode: releaseNode,
|
|
||||||
).kr(0, gate: gate);
|
|
||||||
|
|
||||||
signal = signal * env;
|
|
||||||
});
|
|
||||||
|
|
||||||
if(this[\usePan].asBoolean, {
|
|
||||||
switch(this[\panning],
|
|
||||||
\splay, { signal = Splay.ar(signal, \spread.kr(1), center: \pan.kr(0)); },
|
|
||||||
\splayAz, { signal = SplayAz.ar(this[\panningChannels], signal, orientation: \orientation.kr(0.5)); },
|
|
||||||
\pan, { signal = Pan2.ar(signal, \pan.kr(0)); }
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
signal * \amp.kr(1);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,84 +1,24 @@
|
|||||||
+ NodeDictionary {
|
+ NodeDictionary {
|
||||||
makeSourceSynthDef {
|
makeSourceSynthDef {
|
||||||
^SynthDef(this[\name], {
|
^SynthDef(this[\name], {
|
||||||
var freq, signal, env, gate;
|
var freq, signal, gate;
|
||||||
|
|
||||||
var releaseNode = if (
|
gate = \gate.tr(0);
|
||||||
this[\sustained].asBoolean,
|
freq = \freq.kr(220);
|
||||||
{ 2 },
|
|
||||||
{ nil }
|
if(this[\useFreqLag].asBoolean, {
|
||||||
);
|
freq = Lag.kr(freq, \freqLag.kr(0.5));
|
||||||
|
});
|
||||||
var envDoneAction = if (
|
|
||||||
this[\sustained].asBoolean,
|
signal = SynthDef.wrap(
|
||||||
{ 0 },
|
func: this[\func],
|
||||||
{ 2 }
|
prependArgs: [freq, gate]
|
||||||
);
|
);
|
||||||
|
|
||||||
gate = \gate.tr(0);
|
Out.ar(
|
||||||
freq = \freq.kr(220);
|
\out.kr(0),
|
||||||
|
signal,
|
||||||
if(this[\useFreqLag].asBoolean, {
|
);
|
||||||
freq = Lag.kr(freq, \freqLag.kr(0.5));
|
});
|
||||||
});
|
}
|
||||||
|
|
||||||
signal = SynthDef.wrap(
|
|
||||||
func: this[\func],
|
|
||||||
prependArgs: [freq, gate]
|
|
||||||
);
|
|
||||||
|
|
||||||
if(this[\useLfo].asBoolean, {
|
|
||||||
var lfo = switch(this[\lfoWave])
|
|
||||||
{ \sin } { SinOsc }
|
|
||||||
{ \saw } { Saw }
|
|
||||||
{ \tri } { LFTri }
|
|
||||||
{ \pulse } { Pulse }
|
|
||||||
? SinOsc;
|
|
||||||
|
|
||||||
signal = signal * lfo.kr(
|
|
||||||
\lfoFreq.kr(1)
|
|
||||||
).range(
|
|
||||||
1 - \lfoGain.kr(0.5), 1
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
if(this[\useSaturation].asBoolean, {
|
|
||||||
this[\saturationSteps].do {
|
|
||||||
signal = signal.tanh;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if(this[\useEnv].asBoolean, {
|
|
||||||
var att = this.getDefaultOr(\attack, 0.1);
|
|
||||||
var rel = this.getDefaultOr(\release, 0.1);
|
|
||||||
var curve = this.getDefaultOr(\curve, 1);
|
|
||||||
|
|
||||||
var env = Env(
|
|
||||||
[0, 0, 1, 0],
|
|
||||||
[0, \attack.kr(att), \release.kr(rel)],
|
|
||||||
\envCurve.kr(curve),
|
|
||||||
releaseNode: releaseNode,
|
|
||||||
).kr(envDoneAction, gate: gate);
|
|
||||||
|
|
||||||
signal = signal * env;
|
|
||||||
});
|
|
||||||
|
|
||||||
switch(this[\panning],
|
|
||||||
\splay, { signal = Splay.ar(signal, \spread.kr(1), center: \pan.kr(0)); },
|
|
||||||
\splayAz, { signal = SplayAz.ar(this[\panningChannels], signal, orientation: \orientation.kr(0.5)); },
|
|
||||||
nil, { signal = Pan2.ar(signal, \pan.kr(0)); }
|
|
||||||
);
|
|
||||||
|
|
||||||
signal = signal * \amp.kr(1);
|
|
||||||
|
|
||||||
if(this[\postAmp].asBoolean, {
|
|
||||||
signal = signal * \postAmp.kr(1);
|
|
||||||
});
|
|
||||||
|
|
||||||
Out.ar(
|
|
||||||
\out.kr(0),
|
|
||||||
signal,
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in new issue