diff --git a/Bubo.quark b/BuboQuark.quark similarity index 52% rename from Bubo.quark rename to BuboQuark.quark index c95a545..6983ef4 100644 --- a/Bubo.quark +++ b/BuboQuark.quark @@ -1,11 +1,13 @@ ( name: "BuboQuark", summary: "My setup for livecoding with SuperCollider", - path: "BuboQuark", author: "BuboBubo", + copyright: "Raphaël Maurice Forment", + license: "GPL-3", version: "0.0.1", + path: "BuboQuark", since: "2023", - schelp: "", + schelp: "BuboQuark", dependencies: [ "https://github.com/scztt/Singleton.quark", "https://github.com/scztt/Require.quark", @@ -13,6 +15,12 @@ "https://github.com/supercollider-quarks/Bjorklund", ], url: "https://raphaelforment.fr", - version: 1.0, - isCompatible: {Main.versionAtLeast(3, 1)} + isCompatible: {Main.versionAtLeast(3, 1)}, + preInstall: {|data| + File.mkdir("~/.config/livecoding/samples/"); + "/!\\ BuboQuark: Creating folder at ~./config/livecoding/samples/".postln; + }, + postUninstall: { + "/!\\ BuboQuark: Samples at '~/.config/livecoding/samples/' must be deleted manually".warn; + }, ) diff --git a/Classes/BuboBoot.sc b/Classes/BuboBoot.sc index 423d271..68157c7 100644 --- a/Classes/BuboBoot.sc +++ b/Classes/BuboBoot.sc @@ -1,6 +1,6 @@ Boot { *new { - arg samplePath = "/Users/bubo/.config/livecoding/samples"; + arg samplePath; var banner = "┳┓ ┓ ┳┓\n" "┣┫┓┏┣┓┏┓ ┣┫┏┓┏┓╋\n" "┻┛┗┻┗┛┗┛ ┻┛┗┛┗┛┗"; @@ -11,27 +11,46 @@ Boot { var s = Server.default; var clock = LinkClock(130 / 60).latency_(Server.default.latency).permanent_(true); var localPath = this.class.filenameSymbol.asString.dirname +/+ "Configuration"; - "=-=-=-=-=-=-=-=-=-=-=".postln; - banner.postln; - "=-=-=-=-=-=-=-=-=-=-=".postln; - 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 + this.fancyPrint(banner, 40); + s.options.numBuffers = 1024 * 128; + s.options.memSize = 8192 * 64; + s.options.numWireBufs = 2048; + s.options.maxNodes = 1024 * 32; + s.options.device = "BlackHole 16ch"; + s.options.numOutputBusChannels = 16; + s.options.numInputBusChannels = 16; p = ProxySpace.push(Server.default.boot, clock: clock); c = clock; - Bank.root = samplePath; // Chemin vers les samples - Bank.lazyLoading = true; // Lazy loading des samples + Bank.root = samplePath ? "/Users/bubo/.config/livecoding/samples"; + Bank.lazyLoading = true; Server.default.waitForBoot({ - (localPath +/+ "Synthdefs.scd").load; // Chargement des synthétiseurs - (localPath+/+ "Startup.scd").load; // Chargement post-configuration - StageLimiter.activate; // StageLimiter pour les oreilles - "=-=-=-=-=-=-=-=-=-=-=".postln; - ready.postln; - "=-=-=-=-=-=-=-=-=-=-=".postln; + (localPath +/+ "Synthdefs.scd").load; + (localPath+/+ "Startup.scd").load; + StageLimiter.activate; + this.fancyPrint(ready, 40); }); } + + /* + * Routine that prints the current state of the session every bar + */ + *monitorMessage { + CmdPeriod.add({}) + } + + /* + * Convenience method for printing a message with a fancy separator. + */ + *fancyPrint { + arg message, length; + var separator= length.collect({ + arg index; + if (index % 2 == 0, "=", "-") + }); + separator = separator.join(""); + [separator, message, separator].do({ + arg each; + each.postln; + }); + } }