Update docs/SuperCollider.md

This commit is contained in:
2024-03-29 09:03:46 +00:00
parent 28bfb9ac37
commit f616a6078a

View File

@@ -137,4 +137,92 @@ Certainly! Let's dive into mastering sound synthesis basics, rhythm and beat pro
).play;
```
Remember to experiment, explore, and build upon these examples to create your own unique sounds and compositions in SuperCollider. Happy music-making!
Remember to experiment, explore, and build upon these examples to create your own unique sounds and compositions in SuperCollider. Happy music-making!
---
Certainly! Here's a guide to producing down tempo music in minor keys using SuperCollider, incorporating the previously discussed mathematical concepts and ratios:
I. Harmony and Chord Progressions
A. Use the `Scale` class to generate minor scales and chords
1. `Scale.minor` for natural minor
2. `Scale.harmonicMinor` for harmonic minor
3. `Scale.melodicMinor` for melodic minor
B. Utilize `Pseq` and `Prand` to create chord progressions
C. Experiment with `Pswitch` and `Pif` to incorporate chromatic mediants
II. Rhythm and Tempo
A. Use `TempoClock` to set the tempo between 60-90 BPM
B. Utilize `Pbind` to create rhythmic patterns and polyrhythms
1. `\dur` for note durations (e.g., `Pseq([1/3, 1/6], inf)` for triplets against eighth notes)
2. `\stretch` for rhythmic variations (e.g., `Pseq([2/3, 1/3], inf)` for dotted eighth notes against quarter notes)
C. Apply swing using `Pswing` or by manipulating durations
III. Sound Design and Frequencies
A. Use `SinOsc`, `Saw`, `Pulse`, and other UGens for basic waveforms
B. Apply `RLPF`, `RHPF`, and `BPF` filters to focus on specific frequency ranges
C. Create layered textures using `Splay`, `Mix`, and `Splay`
D. Utilize the golden ratio for amplitude envelopes and modulation depths
IV. Arrangement and Structure
A. Use the Fibonacci sequence for section lengths and transitions with `Pn`, `Pfin`, and `Pdef`
B. Create tension and release by alternating between sections using `Pseq` and `Ppar`
C. Use the rule of thirds for placing key elements and transitions with `Quant`
V. Mixing and Mastering
A. Apply `AmpComp` and `FreqShift` to balance frequencies based on equal loudness contours
B. Use `Pan2` and `PanAz` for panning, following the "rule of sixths"
C. Adjust dynamics using `Compander`, `Limiter`, and `Normalizer`
D. Utilize `Meter` and `Loudness` UGens to monitor and control the dynamic range
VI. Example Code
```supercollider
(
// Minor scale and chord progression
~scale = Scale.minor;
~chords = ~scale.degrees.collect(_.chord);
~progression = Pseq([0, 3, 4, 0], inf);
// Rhythm and tempo
~tempo = 72;
~rhythmPattern = Pseq([2/3, 1/3], inf);
// Sound design and frequencies
~synthDef = SynthDef(\pad, {
|freq = 440, amp = 0.5, cutoff = 500, rq = 0.5|
var osc1 = Saw.ar(freq);
var osc2 = Pulse.ar(freq * (1 + MouseX.kr(-0.1, 0.1)));
var env = EnvGen.kr(Env.perc(0.01, 1.618), doneAction: 2);
var filter = RLPF.ar(osc1 + osc2, cutoff * env, rq);
Out.ar(0, Pan2.ar(filter * env * amp));
}).add;
// Arrangement and structure
~sections = [
Pn(Ppar([
Pbind(\instrument, \pad, \freq, Pseq((~chords[0] + 60).midicps, 1), \dur, 4),
Pbind(\instrument, \pad, \freq, Pseq((~chords[3] + 48).midicps, 1), \dur, 4),
]), 8),
Pn(Ppar([
Pbind(\instrument, \pad, \freq, Pseq((~chords[4] + 60).midicps, 1), \dur, 4),
Pbind(\instrument, \pad, \freq, Pseq((~chords[0] + 48).midicps, 1), \dur, 4),
]), 13),
];
// Mixing and mastering
~master = {
var sig = In.ar(0, 2);
sig = CompanderD.ar(sig, 0.5, 1, 0.3, 0.01, 0.1);
sig = Limiter.ar(sig, 0.9, 0.01);
sig = Splay.ar(sig);
sig = Loudness.ar(sig);
Out.ar(0, sig * 0.8);
}.play;
// Play the sections
~sections[0].play(TempoClock(~tempo / 60));
~sections[1].play(TempoClock(~tempo / 60), quant: [8]);
)
```
Remember to experiment with different UGens, patterns, and parameters to achieve your desired sound. SuperCollider provides a powerful and flexible environment for creating generative and algorithmic music, so don't hesitate to explore and customize the code to suit your needs.