cleaning up
This commit is contained in:
@ -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, {
|
||||
|
||||
@ -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
|
||||
|
||||
19
README.md
19
README.md
@ -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.
|
||||
|
||||
@ -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;
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user