cleaning up

This commit is contained in:
2024-05-15 11:59:52 +02:00
parent fa2936404b
commit 5bc1cd641f
4 changed files with 40 additions and 75 deletions

View File

@ -8,11 +8,8 @@ Boot {
*new {
arg configPath, samplePath, serverOptions;
var p; var c; var t; var s; var d; var e; var b;
40.do({Post.nl});
BuboUtils.banner().postln;
Server.killAll;
MIDIClient.init;
if (serverOptions == nil, {
"-> Booting using default server configuration".postln;
@ -68,12 +65,14 @@ Boot {
Safety.setLimit(1);
e = currentEnvironment;
MIDIClient.init;
});
}
*installServerTreeBehavior {
40.do({Post.nl});
CmdPeriod.add({
BuboUtils.stop().postln;
// Printing session state when the session is stopped
@ -82,19 +81,6 @@ Boot {
this.clock.numPeers,
Server.default.avgCPU.round(2),
Server.default.peakCPU.round(2)).postln;
// // This Routine prints the current server state
// Tdef(\log, {
// loop {
// "[TIME: %] | [TP: %/%] | [CPU: % ]".format(
// BuboUtils.timer(),
// TempoClock.default.bar,
// TempoClock.default.beats % TempoClock.default.beatsPerBar + 1,
// Server.default.avgCPU.asInteger
// ).postln;
// 1.0.wait;
// }
// }).play;
}, Server.default);
Event.addEventType(\buboLoopEvent, {

View File

@ -89,10 +89,6 @@
var quant = this.getQuantFromPattern(pattern);
var fade = this.getFadeFromPattern(pattern);
pattern = EventShortener.process(pattern, this.key, 'pmono', 1);
pattern.do({
arg i;
i.postln;
});
this[0] = Pmono(*pattern);
this.prepareToPlay(this, quant, fade);
^this

View File

@ -1,8 +1,21 @@
# BuboQuark: Simple, hassle-free live coding
# BuboQuark: A Live Coding Companion
This repository is a collection of methods and hacks that I found to make live
coding easier on **SuperCollider**. There is a [small companion website](https://bubobubobubobubo.github.io/BuboQuark/#/) that will tell you more about it.
This repository is a collection of methods, hacks and tips I found to make live coding easier on **SuperCollider**.
## What is BuboQuark?
BuboQuark is an experimental and not-yet-ready Quark (a plugin) for SuperCollider. It adds a few methods, objects and operators that make live coding easier on stage. It is inspired by a long tradition of high-level frameworks such as FoxDot, TidalCycles, [Sardine](https://sardine.raphaelforment.fr) and so on. It is also inspired by the trove of techniques that people shared for nearly twenty years about using SuperCollider as a battleproof performance tool.
BuboQuark is initialized using the `Boot()` command and adds the following features:
- automatic handling of an audio sample library
- operators for creating patterns on-the-fly: `=>`, `->`, `==`, `>>`, `>>+`
- convenience methods for adding FXs to an existing pattern
- patterning capabilities (`pat:`) key + other shortcuts
## Contributions
Contributions are welcome! If you have a technique/method that you think is worth sharing, please open a pull request. If you have any questions, feel free to open an issue. There might be some things that I missed, or that could be improved. Please, let me know!
## About the website
There is a [small companion website](https://bubobubobubobubo.github.io/BuboQuark/#/) that initially came with the repo but I never updated it properly :). It will host a tutorial when things will settle in the distant future.

View File

@ -9,9 +9,8 @@ m = MIDIOut.newByName("MIDI", "Bus 1");
~test >> [
midiout: m,
degree: [0, 2, 4, 5].pxrand(inf),
chan: 1,
dur: [5,8,0].eu / 4, octave: 5,
amp: 1/2,
chan: 1, dur: [5,8,0].eu / 4,
octave: 5, amp: 1/2,
];
~test.play;
)
@ -44,33 +43,29 @@ m = MIDIOut.newByName("MIDI", "Bus 1");
(
m = MIDIOut.newByName("MIDI", "Bus 1");
~test >> [
pat: "[0 3 5 3, [0,<3 5>,<7 10>]]/2",
scale: Scale.dorian,
pat: "<[[0, 3, 6] 1 2 3] [[0, 4, 7] 5 6 7]>/2",
midiout: m,
amp: [0.0, 1.0].pwhite(inf),
octave: 4,
chan: [0, 1].pxrand(inf),
release: 0.125/4,
legato: 0.1,
octave: [6], legato: 0.5,
chan: 1, release: 1/8,
];
~test.play;
)
// NOTE: Je vais jouer avec jusqu'à ce qu'il casse
(
m = MIDIOut.newByName("MIDI", "Bus 1");
~a = Pbind(
\type, \midi,
\midicmd, \control,
\ctlNum, [20,25].pseq(inf),
// chan est optionnel
\midiout, m,
\dur, [1,1/2].pseq(inf),
\val, Pseq([50, 100], inf),
\test, Pfunc {
|e| e.postln; e
}
);
~a.play;
~other >> [
scale: Scale.dorian,
pat: "<[[0, 3, 6] 1 2 3] [[0, 4, 7] 5 6 7]>",
midiout: m,
amp: [0.0, 1.0].pwhite(inf),
octave: [
[5, 5, 6].pseq(8),
[4, 5, 7].pseq(8),
].pseq(inf),
legato: 0.5,
chan: 1, release: 1/8,
];
~other.play;
~ground => [pat: "[kick:3!2, snare:3]/2", amp: 12];
~ground.play;
)
(
@ -93,28 +88,3 @@ SynthDef('acid', {
)
~acid.source
(
~a = Pmono(
'acid', \freq, [100, 150, 200, 400].pxrand(inf),
\dur, 1/2,
);
~a.play;
)
(
~a = Pmono(*[
'acid', freq: [100, 150, 200, 400].pxrand(inf),
dur: 1/2,
]);
~a.play;
)
(
a = Pmono(
'acid', \note, [0, 2].pseq(inf),
\dur, [1, 1/2].pxrand(inf),
\release, 0.12
);
a.play;
)