Files
BuboQuark/Classes/BuboNodeProxy.sc
Raphaël Forment 208826fd66 Tweaking stuff and FX
Trying to get yet another alternative syntax for writing fxs easily
2024-05-29 13:41:11 +02:00

106 lines
2.8 KiB
Python

+ ProxySpace {
solo {
arg name, fadeTime=4;
var names = name.isArray.if({ name }, { [name] });
this.do({ |proxy|
if (names.includes(proxy.key).not, {
proxy.stop(fadeTime: fadeTime);
});
});
}
silence {|fadeTime=0|
this.stop(fadeTime: fadeTime)
}
}
+ NodeProxy {
prepareToPlay {
| proxy, quant, fade |
proxy.quant = quant;
proxy.fadeTime = fade;
// proxy.play;
}
/* Syntax for sending MIDI messages */
>> {
arg pattern;
var quant = BuboUtils.getQuantFromPattern(pattern);
var fade = BuboUtils.getFadeFromPattern(pattern);
pattern = EventShortener.process(
pattern, this.key, \midi, 0
);
this[0] = Pbind(*pattern);
this.prepareToPlay(this, quant, fade);
^this
}
/* MIDI CC Operator */
>>+ {
arg pattern;
var quant = BuboUtils.getQuantFromPattern(pattern);
var fade = BuboUtils.getFadeFromPattern(pattern);
pattern = EventShortener.process(
pattern, this.key, 'midicc', 0
);
this[0] = Pbind(*pattern);
this.prepareToPlay(this, quant, fade);
^this
}
/* Player syntax sugar */
=> {
arg pattern;
var quant = BuboUtils.getQuantFromPattern(pattern);
var fade = BuboUtils.getFadeFromPattern(pattern);
pattern = EventShortener.process(pattern, this.key, 'buboEvent', 1);
pattern = EffectChain.process(pattern, this.key);
this[0] = Pbind(*pattern);
this.prepareToPlay(this, quant, fade);
^this
}
/* Granular Sampler */
+=> {
arg pattern;
var quant = BuboUtils.getQuantFromPattern(pattern);
var fade = BuboUtils.getFadeFromPattern(pattern);
pattern = EventShortener.process(pattern, this.key, 'granular', 1);
pattern = EffectChain.process(pattern, this.key);
this[0] = Pbind(*pattern);
this.prepareToPlay(this, quant, fade);
^this
}
/* Pmono player */
-> {
arg pattern;
var quant = BuboUtils.getQuantFromPattern(pattern);
var fade = BuboUtils.getFadeFromPattern(pattern);
pattern = EventShortener.process(pattern, this.key, 'pmono', 1);
this[0] = Pmono(*pattern);
this.prepareToPlay(this, quant, fade);
^this
}
/* Audio Looper (sample playback) */
==> {
// TODO: fix this terrible mess
arg pattern;
var quant = BuboUtils.getQuantFromPattern(pattern);
var fade = BuboUtils.getFadeFromPattern(pattern);
var nbSlices = this.getValueFromPattern(pattern, 'slices', 1);
var time = (Pkey(\dur) / Pfunc { currentEnvironment.clock.tempo }) / nbSlices;
pattern = EventShortener.process(
pattern, this.key, \looper, time
);
this[0] = Pmono(*pattern);
this.prepareToPlay(this, quant, fade);
^this
}
}