diff --git a/NodeDictionary/NodeDictionary.sc b/NodeDictionary/NodeDictionary.sc index e9c4e71..667be12 100644 --- a/NodeDictionary/NodeDictionary.sc +++ b/NodeDictionary/NodeDictionary.sc @@ -1,29 +1,89 @@ NodeDictionary : IdentityDictionary { - getDefaultOr { - | key, defaultValue | - if(this[\defaults][key].isNil, { - ^defaultValue - }, { - ^this[\defaults][key] - }); - } - - makeAnalysysNdef { - ^Ndef(this[\name], { - var input = SoundIn.ar(\bus.kr(0)); - var signal = SynthDef.wrap( - func: this[\func], - prependArgs: [input] - ); - - if(this[\convertToKr].isNil.not - and: - this[\convertToKr] == true, - { - A2K.kr(signal); - }, { - signal; - }); - }); - } + getDefaultOr { + | key, defaultValue | + if(this[\defaults][key].isNil, { + ^defaultValue + }, { + ^this[\defaults][key] + }); + } + + processSig { + | sig, gate | + + var releaseNode = if ( + this[\sustained].asBoolean, + { 2 }, + { nil } + ); + + var envDoneAction = if ( + this[\sustained].asBoolean, + { 0 }, + { 2 } + ); + + 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; + } } \ No newline at end of file diff --git a/NodeDictionary/makeBufferProcessingNdef.sc b/NodeDictionary/makeBufferProcessingNdef.sc index 03e87f3..9cc45d6 100644 --- a/NodeDictionary/makeBufferProcessingNdef.sc +++ b/NodeDictionary/makeBufferProcessingNdef.sc @@ -1,18 +1,19 @@ + NodeDictionary { - makeBufferProcessingNdef { - | name, buf, quant = 1.0 | + makeBufferProcessingNdef { + | name | - var internalName = if(name.isNil, {this[\name]}, {name}); + var internalName = if(name.isNil, {this[\name]}, {name}); - Ndef(internalName, { - var freq, signal, env, gate; + Ndef(internalName, { + var signal, gate; - signal = SynthDef.wrap( - func: this[\func], - prependArgs: [buf] - ); + gate = \gate.tr(0); - signal * \amp.kr(1); - }); - } + signal = SynthDef.wrap( + func: this[\func], + ); + + this.processSig(signal, gate); + }); + } } \ No newline at end of file diff --git a/NodeDictionary/makeBufferProcessingSynthDef.sc b/NodeDictionary/makeBufferProcessingSynthDef.sc index 26d0659..753b847 100644 --- a/NodeDictionary/makeBufferProcessingSynthDef.sc +++ b/NodeDictionary/makeBufferProcessingSynthDef.sc @@ -1,32 +1,18 @@ + NodeDictionary { - makeBufferProcessingSynthDef { - SynthDef(this[\name], { - var buf = \buf.kr; - var signal = SynthDef.wrap( - func: this[\func], - prependArgs: [buf] - ); + makeBufferProcessingSynthDef { + SynthDef(this[\name], { + var signal, gate; - signal = Pan2.ar( - signal * \amp.kr(1), - \pan.kr(0) - ); + gate = \gate.tr(0); - if(this[\detectSilence].asBoolean, { - FreeSelf.kr( - DetectSilence.ar( - [signal[0], signal[1]] + Impulse.ar(0) - ).product) - }); + signal = SynthDef.wrap( + func: this[\func], + ); - if(this[\limitDuration].asBoolean, { - Line.kr(0, 1, \dur.kr(1), doneAction: 2); - }); - - Out.ar( - \out.kr(0), - signal - ); - }).add; - } + Out.ar( + \out.kr(0), + this.processSig(signal, gate); + ); + }); + } } \ No newline at end of file diff --git a/NodeDictionary/makeSourceNdef.sc b/NodeDictionary/makeSourceNdef.sc index 7015363..354f3ae 100644 --- a/NodeDictionary/makeSourceNdef.sc +++ b/NodeDictionary/makeSourceNdef.sc @@ -1,74 +1,24 @@ + NodeDictionary { - makeSourceNdef { - | name | - var internalName = if(name.isNil, {this[\name]}, {name}); - - Ndef(internalName, { - var freq, signal, env, gate; - - var releaseNode = if ( - this[\sustained].asBoolean, - { 2 }, - { nil } - ); - - gate = \gate.tr(0); - freq = \freq.kr(220); - - 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)], - [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); - }); - } + makeSourceNdef { + | name | + var internalName = if(name.isNil, {this[\name]}, {name}); + + Ndef(internalName, { + var freq, signal, gate; + + gate = \gate.tr(0); + freq = \freq.kr(220); + + if(this[\useFreqLag].asBoolean, { + freq = Lag.kr(freq, \freqLag.kr(0.5)); + }); + + signal = SynthDef.wrap( + func: this[\func], + prependArgs: [freq, gate] + ); + + this.processSig(signal, gate); + }); + } } \ No newline at end of file diff --git a/NodeDictionary/makeSourceSynthDef.sc b/NodeDictionary/makeSourceSynthDef.sc index db88694..109c9ac 100644 --- a/NodeDictionary/makeSourceSynthDef.sc +++ b/NodeDictionary/makeSourceSynthDef.sc @@ -1,84 +1,24 @@ + NodeDictionary { - makeSourceSynthDef { - ^SynthDef(this[\name], { - var freq, signal, env, gate; - - var releaseNode = if ( - this[\sustained].asBoolean, - { 2 }, - { nil } - ); - - var envDoneAction = if ( - this[\sustained].asBoolean, - { 0 }, - { 2 } - ); - - gate = \gate.tr(0); - freq = \freq.kr(220); - - 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, - ); - }); - } + makeSourceSynthDef { + ^SynthDef(this[\name], { + var freq, signal, gate; + + gate = \gate.tr(0); + freq = \freq.kr(220); + + if(this[\useFreqLag].asBoolean, { + freq = Lag.kr(freq, \freqLag.kr(0.5)); + }); + + signal = SynthDef.wrap( + func: this[\func], + prependArgs: [freq, gate] + ); + + Out.ar( + \out.kr(0), + signal, + ); + }); + } } \ No newline at end of file