From 397e31d43800ba95fa41fd9434f779826344c1de Mon Sep 17 00:00:00 2001 From: Raphael Forment Date: Wed, 27 Dec 2023 14:59:50 +0100 Subject: [PATCH] initialise the readme --- README.md | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..03a7348 --- /dev/null +++ b/README.md @@ -0,0 +1,75 @@ +# BuboQuark: Simple, hassle-free live coding + + +This repository is a collection of tools and methods that I use to make live coding easier on **SuperCollider**. My aim is to make that setup easy to install on my other computers. This repository is not bringing anything new or interesting. This is merely a default configuration for my **SuperCollider** install. It's just a bunch of scripts that I use to make my life easier and I am no expert. I rely heavily on **JITLib** and other Quarks that I find useful. + +## Installation + +To install the **BuboQuark**, simply run the following command in your favorite **SC** editor: +```bash +Quarks.install("https://github.com/Bubobubobubobubo/BuboQuark") +``` + +## Usage + +This quark brings syntax shortcuts and minor improvements (_highly personal matter_) to make **SuperCollider** easier to handle on stage. + +### Boot method + +There is a `Boot()` class that acts as a configuration file for my setup. This configuration file is rather classic: + +- raises the conservative options of `Server.default` +- pushes everything into a `ProxySpace` +- set paths for samples and synthdefs +- install a `StageLimiter` not to blow up my speakers + +**Note:** I put my configuration into `./config/livecoding/` and there should be a folder named `samples/` and a file called `Synthdefs.scd`. + +### Simplified useful commands + +- `Panic()`: shortcut for `CmdPeriod.run`. +- `Boot(path)`: boot my config (**hardcoded** path or user specified path) +- `Scope()`: a scope that always stays on top! +- `FScope()`: a frequency scope that always stay on top! +- `Gui()`: a server GUI window that always stay on top! + +### Patterns + +Patterns are powerful but writing them is long and can lead to a lot of typing errors. Moreover, they are often centered around list manipulation. **BuboQuark** defines a few helpers to transform a regular `Array` into various patterns: + +```supercollider +[1, 2, 3, 4].pseq +``` +Consider the source as a documentation. + +### Patterns + +I don't like using keys because of the backslash (`\`), a symbol that is really hard to type on AZERTY keyboards. For that reason, I much prefer the `[instrument: 'plaits', dur: 2]` syntax. I added a `.pat` method to convert an array into a `Pbind`. There are optional arguments to specify the `fadeTime` and `quant` for that pattern. Demo: + +```supercollider +( + [ + instrument: 'sinfb', + rel: Pbrown(0.1, 0.5, 0.125, inf), + note: Place([Pxrand([0, 3, 7, 10], 12), 0, 3, 5, 0, 12, 0, 7, 5, [5, 10, 7].pwhite(1)], inf), + octave: [Pxrand([5, 6, 4], 4)].pxrand(inf), dur: Pbjorklund2(6, 8, inf) / 2, + legato: 0.1 + ].pat(~test).play; +) +``` + +### NodeProxy + +The `NodeProxy` roles are somewhat verbose. I have tried to make the syntax easier on the eye by creating the `fx`, `wet` and `infx` methods. Here is a demo of how I use it: + + +```supercollider +( + // Adding a tiny bit of reverb on slot 10 with a wet of 0.2 + ~test.fx(10, 0.2, { + arg in; GVerb.ar(in) + }); +) + +~test.wet(10, 0.5) // bring the reverb up with the wet method +```