"rune_b" + code

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!

1 Like