Hey all,
Just thought I’d share my latest minimal ambient track, made entirely with SC.
The music and code are available to download/re-use under Public Domain and MIT respectively.
Track + Source: rune_b - John Oestmann Music
Explainer video: "rune_b" - Deconstructed - John Oestmann Music
Code CopyPaste:
// rune_b
// from a_new_day_in_the_workshop
// by John Oestmann, Oct 2024
// Code and music released under MIT License and Public Domain/CC0 respectively
(
{
var layer1, layer2, layer3, layer4, layer5, layer6, audio, cycle, rain;
layer1 = SinOsc.ar(freq: SinOsc.ar(0.05,mul: 2, add: 46.midicps), mul: 0.27) // Tone
* Lag.ar(Pulse.ar(freq: 4, mul: 0.5, add: 0.5), lagTime: 0.001); // Vol
layer2 = SinOsc.ar(freq: 70.midicps, mul: 0.1)
* Lag.ar(Saw.ar(SinOsc.ar(0.25,mul: 7, add: 8),mul: 0.5,add: 0.5),lagTime: 0.0001);
layer3 = SinOsc.ar(freq: 75.midicps, mul: 0.1)
* Lag.ar(Saw.ar(SinOsc.ar(0.24,mul: 7, add: 8),mul: 0.5,add: 0.5),lagTime: 0.0001);
layer4 = SinOsc.ar(freq: 77.midicps, mul: 0.1)
* Lag.ar(Saw.ar(SinOsc.ar(0.23,mul: 7, add: 8),mul: 0.5,add: 0.5),lagTime: 0.0001);
layer5 = SinOsc.ar(freq: 82.midicps, mul: 0.1)
* Lag.ar(Saw.ar(SinOsc.ar(0.1,mul: 7, add: 8),mul: 0.5,add: 0.5),lagTime: 0.0001);
layer6 = SinOsc.ar(freq: 80.midicps, mul: 0.1)
* Lag.ar(Saw.ar(SinOsc.ar(0.18,mul: 7, add: 8),mul: 0.5,add: 0.5),lagTime: 0.0001);
// Panning and individual fades
cycle = Pan2.ar(layer1,-0.3, level: EnvGen.ar(Env.circle(levels: [0,1,1,0,0],times: [25,35,25,15],curve: 2)));
rain = (Pan2.ar(layer2, 0.3, level: SinOsc.ar(0.05,phase: pi, mul: 0.1,add: 0.1)))
+ (Pan2.ar(layer3, 0.1, level: SinOsc.ar(0.04,phase: pi, mul: 0.1,add: 0.1)))
+ (Pan2.ar(layer4, -0.1, level: SinOsc.ar(0.03,phase: pi, mul: 0.1,add: 0.1)))
+ (Pan2.ar(layer5, 0.6, level: SinOsc.ar(0.018,phase: 1.5*pi, mul: 0.04,add: 0.04)))
+ (Pan2.ar(layer6, 0.2, level: SinOsc.ar(0.02,phase: 3*pi, mul: 0.06,add: 0.06)));
// Overall fades
cycle = cycle * EnvGen.ar(Env.circle(levels: [0,1,1,0,0], times: [15,200,25,30], curve: 'lin'));
rain = rain * EnvGen.ar(Env.circle(levels: [0,0,1,1,0], times: [30,15,200,25], curve: 'lin'));
audio = cycle + rain;
}.play;
)
Feedback welcome, especially around the code!