From 9b3c1afd38406fb33e7f3cdcb579fd9642dd8e86 Mon Sep 17 00:00:00 2001 From: Raphael Forment Date: Wed, 27 Dec 2023 15:03:23 +0100 Subject: [PATCH] add files to the repo --- Bubo.quark | 18 ++++++++++++++++++ Classes/BuboArray.sc | 37 +++++++++++++++++++++++++++++++++++++ Classes/BuboBoot.sc | 25 +++++++++++++++++++++++++ Classes/BuboFreqScope.sc | 6 ++++++ Classes/BuboGui.sc | 5 +++++ Classes/BuboNdef.sc | 3 +++ Classes/BuboNodeProxy.sc | 36 ++++++++++++++++++++++++++++++++++++ Classes/BuboObject.sc | 5 +++++ Classes/BuboPbind.sc | 23 +++++++++++++++++++++++ Classes/BuboScope.sc | 6 ++++++ 10 files changed, 164 insertions(+) create mode 100644 Bubo.quark create mode 100644 Classes/BuboArray.sc create mode 100644 Classes/BuboBoot.sc create mode 100644 Classes/BuboFreqScope.sc create mode 100644 Classes/BuboGui.sc create mode 100644 Classes/BuboNdef.sc create mode 100644 Classes/BuboNodeProxy.sc create mode 100644 Classes/BuboObject.sc create mode 100644 Classes/BuboPbind.sc create mode 100644 Classes/BuboScope.sc diff --git a/Bubo.quark b/Bubo.quark new file mode 100644 index 0000000..70a1e88 --- /dev/null +++ b/Bubo.quark @@ -0,0 +1,18 @@ +( + name: "BuboQuark", + summary: "My setup for livecoding with SuperCollider", + path: "BuboQuark", + author: "BuboBubo", + version: "0.0.1", + since: "2023", + schelp: "", + dependencies: [ + "https://github.com/scztt/Singleton.quark", + "https://github.com/scztt/Require.quark", + "https://github.com/supercollider-quarks/BatLib", + "https://github.com/supercollider-quarks/Bjorklund", + ], + url: "https://raphaelforment.fr", + version: 1.0, + isCompatible: {Main.versionAtLeast(3, 1)} +) diff --git a/Classes/BuboArray.sc b/Classes/BuboArray.sc new file mode 100644 index 0000000..171d364 --- /dev/null +++ b/Classes/BuboArray.sc @@ -0,0 +1,37 @@ ++ Array { + pat { + arg node_proxy, quant=4, fade=0.05; + node_proxy.quant_(quant); + node_proxy.fadeTime = fade; + node_proxy[0] = Pbind(*this); + ^node_proxy; + } + + pbind { + ^Pbind(*this) + } + + pseq { arg repeats=inf, offset=0; + ^Pseq(this, repeats, offset); + } + + pshuf { arg repeats=1; + ^Pshuf(this, repeats); + } + + prand { arg repeats=inf; + ^Prand(this, repeats); + } + + pxrand { arg repeats=inf; + ^Pxrand(this, repeats); + } + + pwrand { arg weights, repeats=1; + ^Pwrand(this, weights, repeats); + } + + pwhite { arg repeats=inf; + ^Pwhite(this[0], this[1], repeats); + } +} diff --git a/Classes/BuboBoot.sc b/Classes/BuboBoot.sc new file mode 100644 index 0000000..fbdffcb --- /dev/null +++ b/Classes/BuboBoot.sc @@ -0,0 +1,25 @@ +Boot { + *new { + arg path = "/Users/bubo/.config/livecoding"; + var s = Server.default; + var p; + s.options.numBuffers = 1024 * 128; // Nombre de buffers disponibles pour stocker des samples + s.options.memSize = 8192 * 64; // Mémoire disponible pour le serveur + s.options.numWireBufs = 2048; // Augmenter ce nombre si "exceeded number of interconnect buffers" + s.options.maxNodes = 1024 * 32; // Changer cette valeur si le son saute avec le message "too many nodes" + s.options.device = "BlackHole 16ch"; // Choix de l'interface audio à utiliser + s.options.numOutputBusChannels = 16; // Indiquer le nombre de sorties de son interface audio + s.options.numInputBusChannels = 16; // Indiquer le nombre d'entrées de son interface audio + p = ProxySpace.push(Server.default.boot); + p.makeTempoClock; // Gestion du tempo + p.clock.tempo = 120/60; + Bank.root = path +/+ "samples"; // Chemin vers les samples + Bank.lazyLoading = True; // Lazy loading des samples + Server.default.waitForBoot({ + (path +/+ "Synthdefs.scd").load; // Chargement des synthétiseurs + StageLimiter.activate; // StageLimiter pour les oreilles + "== 💻 LIVE CODING PRÊT 💻 == ".postln; + }); + + } +} diff --git a/Classes/BuboFreqScope.sc b/Classes/BuboFreqScope.sc new file mode 100644 index 0000000..7687813 --- /dev/null +++ b/Classes/BuboFreqScope.sc @@ -0,0 +1,6 @@ +FScope { + + *new { + ^Server.default.freqscope.window.alwaysOnTop_(true); + } +} diff --git a/Classes/BuboGui.sc b/Classes/BuboGui.sc new file mode 100644 index 0000000..d16d22e --- /dev/null +++ b/Classes/BuboGui.sc @@ -0,0 +1,5 @@ +Gui { + *new { + ^Server.default.makeGui.window.alwaysOnTop_(true); + } +} diff --git a/Classes/BuboNdef.sc b/Classes/BuboNdef.sc new file mode 100644 index 0000000..c54907d --- /dev/null +++ b/Classes/BuboNdef.sc @@ -0,0 +1,3 @@ ++ Ndef { +} + diff --git a/Classes/BuboNodeProxy.sc b/Classes/BuboNodeProxy.sc new file mode 100644 index 0000000..c1e4126 --- /dev/null +++ b/Classes/BuboNodeProxy.sc @@ -0,0 +1,36 @@ ++ NodeProxy { + + fx { + arg number=1, wet=1, function = {|in| in}; + this[number] = \filter -> function; + this.set(("wet" ++ number).asSymbol, wet); + ^this; + } + + fx1 { arg wet, function; this.fx(\wet100, wet, function); } + fx2 { arg wet, function; this.fx(\wet200, wet, function); } + fx3 { arg wet, function; this.fx(\wet300, wet, function); } + fx4 { arg wet, function; this.fx(\wet400, wet, function); } + fx5 { arg wet, function; this.fx(\wet500, wet, function); } + fx6 { arg wet, function; this.fx(\wet600, wet, function); } + fx7 { arg wet, function; this.fx(\wet700, wet, function); } + fx8 { arg wet, function; this.fx(\wet800, wet, function); } + fx9 { arg wet, function; this.fx(\wet900, wet, function); } + + wet { arg number=1, wet=1; + this.set(("wet" ++ number).asSymbol, wet); + ^this; + } + + xwet { arg number=1, wet=1; + this.xset(("wet" ++ number).asSymbol, wet); + ^this; + } + + fxin { + arg number=1, wet=1, function = {|in| in}; + this[number] = \filterIn -> function; + this.set(("wet" ++ number).asSymbol, wet); + ^this; + } +} diff --git a/Classes/BuboObject.sc b/Classes/BuboObject.sc new file mode 100644 index 0000000..e5c4ebb --- /dev/null +++ b/Classes/BuboObject.sc @@ -0,0 +1,5 @@ +Panic { + *new { + CmdPeriod.run; + } +} diff --git a/Classes/BuboPbind.sc b/Classes/BuboPbind.sc new file mode 100644 index 0000000..1d6c259 --- /dev/null +++ b/Classes/BuboPbind.sc @@ -0,0 +1,23 @@ ++ Pbind { + fastest { ^this.set(\dur, 1/8) } + faster { ^this.set(\dur, 1/4) } + fast { ^this.set(\dur, 1/2) } + slow { ^this.set(\dur, 2) } + slower { ^this.set(\dur, 4) } + slowest { ^this.set(\dur, 8) } + + lowest { ^this.set(\octave, 2) } + lower { ^this.set(\octave, 3) } + low { ^this.set(\octave, 4) } + high { ^this.set(\octave, 6) } + higher { ^this.set(\octave, 7) } + highest { ^this.set(\octave, 8) } + + fff { ^this.set(\amp, 2) } + ff { ^this.set(\amp, 1) } + f { ^this.set(\amp, 0.5) } + p { ^this.set(\amp, 0.3) } + pp { ^this.set(\amp, 0.2) } + ppp { ^this.set(\amp, 0.1) } +} + diff --git a/Classes/BuboScope.sc b/Classes/BuboScope.sc new file mode 100644 index 0000000..5b4fa65 --- /dev/null +++ b/Classes/BuboScope.sc @@ -0,0 +1,6 @@ +Scope { + + *new { + ^Server.default.scope.window.alwaysOnTop_(true); + } +}