cleaning up
This commit is contained in:
@ -8,11 +8,8 @@ Boot {
|
|||||||
*new {
|
*new {
|
||||||
arg configPath, samplePath, serverOptions;
|
arg configPath, samplePath, serverOptions;
|
||||||
var p; var c; var t; var s; var d; var e; var b;
|
var p; var c; var t; var s; var d; var e; var b;
|
||||||
|
|
||||||
40.do({Post.nl});
|
|
||||||
BuboUtils.banner().postln;
|
BuboUtils.banner().postln;
|
||||||
Server.killAll;
|
Server.killAll;
|
||||||
MIDIClient.init;
|
|
||||||
|
|
||||||
if (serverOptions == nil, {
|
if (serverOptions == nil, {
|
||||||
"-> Booting using default server configuration".postln;
|
"-> Booting using default server configuration".postln;
|
||||||
@ -68,12 +65,14 @@ Boot {
|
|||||||
Safety.setLimit(1);
|
Safety.setLimit(1);
|
||||||
|
|
||||||
e = currentEnvironment;
|
e = currentEnvironment;
|
||||||
|
|
||||||
|
MIDIClient.init;
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*installServerTreeBehavior {
|
*installServerTreeBehavior {
|
||||||
40.do({Post.nl});
|
|
||||||
CmdPeriod.add({
|
CmdPeriod.add({
|
||||||
BuboUtils.stop().postln;
|
BuboUtils.stop().postln;
|
||||||
// Printing session state when the session is stopped
|
// Printing session state when the session is stopped
|
||||||
@ -82,19 +81,6 @@ Boot {
|
|||||||
this.clock.numPeers,
|
this.clock.numPeers,
|
||||||
Server.default.avgCPU.round(2),
|
Server.default.avgCPU.round(2),
|
||||||
Server.default.peakCPU.round(2)).postln;
|
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);
|
}, Server.default);
|
||||||
|
|
||||||
Event.addEventType(\buboLoopEvent, {
|
Event.addEventType(\buboLoopEvent, {
|
||||||
|
|||||||
@ -89,10 +89,6 @@
|
|||||||
var quant = this.getQuantFromPattern(pattern);
|
var quant = this.getQuantFromPattern(pattern);
|
||||||
var fade = this.getFadeFromPattern(pattern);
|
var fade = this.getFadeFromPattern(pattern);
|
||||||
pattern = EventShortener.process(pattern, this.key, 'pmono', 1);
|
pattern = EventShortener.process(pattern, this.key, 'pmono', 1);
|
||||||
pattern.do({
|
|
||||||
arg i;
|
|
||||||
i.postln;
|
|
||||||
});
|
|
||||||
this[0] = Pmono(*pattern);
|
this[0] = Pmono(*pattern);
|
||||||
this.prepareToPlay(this, quant, fade);
|
this.prepareToPlay(this, quant, fade);
|
||||||
^this
|
^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
|
This repository is a collection of methods, hacks and tips I found to make live coding easier on **SuperCollider**.
|
||||||
coding easier on **SuperCollider**. There is a [small companion website](https://bubobubobubobubo.github.io/BuboQuark/#/) that will tell you more about it.
|
|
||||||
|
## 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
|
||||||
|
|
||||||
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!
|
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 >> [
|
~test >> [
|
||||||
midiout: m,
|
midiout: m,
|
||||||
degree: [0, 2, 4, 5].pxrand(inf),
|
degree: [0, 2, 4, 5].pxrand(inf),
|
||||||
chan: 1,
|
chan: 1, dur: [5,8,0].eu / 4,
|
||||||
dur: [5,8,0].eu / 4, octave: 5,
|
octave: 5, amp: 1/2,
|
||||||
amp: 1/2,
|
|
||||||
];
|
];
|
||||||
~test.play;
|
~test.play;
|
||||||
)
|
)
|
||||||
@ -44,33 +43,29 @@ m = MIDIOut.newByName("MIDI", "Bus 1");
|
|||||||
(
|
(
|
||||||
m = MIDIOut.newByName("MIDI", "Bus 1");
|
m = MIDIOut.newByName("MIDI", "Bus 1");
|
||||||
~test >> [
|
~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,
|
midiout: m,
|
||||||
amp: [0.0, 1.0].pwhite(inf),
|
amp: [0.0, 1.0].pwhite(inf),
|
||||||
octave: 4,
|
octave: [6], legato: 0.5,
|
||||||
chan: [0, 1].pxrand(inf),
|
chan: 1, release: 1/8,
|
||||||
release: 0.125/4,
|
|
||||||
legato: 0.1,
|
|
||||||
];
|
];
|
||||||
~test.play;
|
~test.play;
|
||||||
)
|
~other >> [
|
||||||
|
scale: Scale.dorian,
|
||||||
// NOTE: Je vais jouer avec jusqu'à ce qu'il casse
|
pat: "<[[0, 3, 6] 1 2 3] [[0, 4, 7] 5 6 7]>",
|
||||||
(
|
midiout: m,
|
||||||
m = MIDIOut.newByName("MIDI", "Bus 1");
|
amp: [0.0, 1.0].pwhite(inf),
|
||||||
~a = Pbind(
|
octave: [
|
||||||
\type, \midi,
|
[5, 5, 6].pseq(8),
|
||||||
\midicmd, \control,
|
[4, 5, 7].pseq(8),
|
||||||
\ctlNum, [20,25].pseq(inf),
|
].pseq(inf),
|
||||||
// chan est optionnel
|
legato: 0.5,
|
||||||
\midiout, m,
|
chan: 1, release: 1/8,
|
||||||
\dur, [1,1/2].pseq(inf),
|
];
|
||||||
\val, Pseq([50, 100], inf),
|
~other.play;
|
||||||
\test, Pfunc {
|
~ground => [pat: "[kick:3!2, snare:3]/2", amp: 12];
|
||||||
|e| e.postln; e
|
~ground.play;
|
||||||
}
|
|
||||||
);
|
|
||||||
~a.play;
|
|
||||||
)
|
)
|
||||||
|
|
||||||
(
|
(
|
||||||
@ -93,28 +88,3 @@ SynthDef('acid', {
|
|||||||
)
|
)
|
||||||
|
|
||||||
~acid.source
|
~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