Negatum-1f015742-p

Hey. Wanted to share this sound coming out of a genetic programming algorithm:

play { // sr = 48 kHz
	var in_0            = \p1.ar([0.34823126,0.34823126]).linexp(0, 1, 10, 20000);
	var freq_0          = Clip.ar(in_0, lo: 10.0, hi: 20000.0);
	var in_1            = Pulse.ar(freq: freq_0, width: 1.0);
	var freq_1          = Clip.ar(in_0, lo: 10.0, hi: 20000.0);
	var in_2            = LPF.ar(in_1, freq: freq_1);
	var resonz_0        = Resonz.ar(in_2, freq: 12.912557, bwr: 1.3554319);
	var freq_2          = Clip.ar(in_1, lo: 0.01, hi: 20000.0);
	var in_3            = SinOsc.ar(freq: freq_2, phase: 0.0);
	var in_4            = LeakDC.ar(in_3, coef: 0.995);
	var freq_3          = Clip.ar(in_0, lo: 10.0, hi: 20000.0);
	var resonz_1        = Resonz.ar(in_4, freq: freq_3, bwr: 100.0);
	var freq_4          = Clip.ar(in_0, lo: 10.0, hi: 20000.0);
	var width_0         = Clip.ar(in_1, lo: 0.0, hi: 1.0);
	var pulse_0         = Pulse.ar(freq: freq_4, width: width_0);
	var in_5            = \p5.ar([0.045953203,0.035953205]).linexp(0, 1, 0.01, 20000);
	var freq_5          = Clip.ar(in_5, lo: 0.01, hi: 20000.0);
	var in_6            = SinOsc.ar(freq: freq_5, phase: 0.0);
	var in_7            = LeakDC.ar(in_6, coef: 0.995);
	var freq_6          = Clip.ar(in_0, lo: 10.0, hi: 20000.0);
	var rq_0            = Clip.ar(in_5, lo: 0.01, hi: 100.0);
	var in_8            = Resonz.ar(in_7, freq: freq_6, bwr: rq_0);
	var freq_7          = Clip.ar(in_0, lo: 10.0, hi: 20000.0);
	var rq_1            = Clip.ar(in_5, lo: 0.01, hi: 100.0);
	var in_9            = Resonz.ar(in_8, freq: freq_7, bwr: rq_1);
	var freq_8          = Clip.ar(in_0, lo: 10.0, hi: 20000.0);
	var hPF             = HPF.ar(in_9, freq: freq_8);
	var rq_2            = Clip.ar(in_5, lo: 0.01, hi: 100.0);
	var in_10           = Resonz.ar(in_8, freq: 33.651512, bwr: rq_2);
	var rq_3            = Clip.ar(in_5, lo: 0.01, hi: 100.0);
	var bRF_0           = BRF.ar(in_10, freq: 14.627275, rq: rq_3);
	var in_11           = LeakDC.ar(in_6, coef: 0.995);
	var freq_9          = Clip.ar(in_0, lo: 10.0, hi: 20000.0);
	var rq_4            = Clip.ar(in_5, lo: 0.01, hi: 100.0);
	var in_12           = BRF.ar(in_11, freq: freq_9, rq: rq_4);
	var freq_10         = Clip.ar(in_0, lo: 10.0, hi: 20000.0);
	var rq_5            = Clip.ar(in_5, lo: 0.01, hi: 100.0);
	var in_13           = BPF.ar(in_12, freq: freq_10, rq: rq_5);
	var param           = \p2.ar([0.9755546,0.9755546]).linlin(0, 1, -22050, 22050);
	var freq_11         = Clip.ar(param, lo: 10.0, hi: 20000.0);
	var bRF_1           = BRF.ar(in_13, freq: freq_11, rq: 9.818253);
	var freq_12         = Clip.ar(in_5, lo: 0.01, hi: 20000.0);
	var sinOsc_0        = SinOsc.ar(freq: freq_12, phase: 9.574487);
	var in_14           = \p3.ar([0.7227913,0.7227913]).linexp(0, 1, 0.01, 20000);
	var freq_13         = Clip.ar(in_14, lo: 0.01, hi: 20000.0);
	var sinOsc_1        = SinOsc.ar(freq: freq_13, phase: param);
	var in_15           = \p4.ar([0.5909877,0.58998764]).linexp(0, 1, 0.01, 20000);
	var freq_14         = Clip.ar(in_15, lo: 0.01, hi: 20000.0);
	var sinOsc_2        = SinOsc.ar(freq: freq_14, phase: 0.0);
	var sinOsc_3        = SinOsc.ar(freq: 3.151957, phase: 1.6066109);
	var width_1         = in_3 max: 0.0;
	var pulse_1         = Pulse.ar(freq: 9989.597, width: width_1);
	var in_16           = Mix(
		[resonz_0, resonz_1, pulse_0, hPF, bRF_0, bRF_1, sinOsc_0, sinOsc_1, sinOsc_2, sinOsc_3,
			pulse_1]);
	var in_17           = in_16 clip2: 1.0;
	var leakDC          = LeakDC.ar(in_17, coef: 0.995);
	var times           = leakDC * 0.47;
	var bus             = \out.kr(0.0);
	var attr            = \gain.kr(1.0);
	var in_18           = times * attr;
	Out.ar(bus, in_18);
}

(currently manually translated from ScalaCollider which has slightly different syntax and argument names)

This was done with Mellite’s object ‘Negatum’ and newly integrated automatic parametrisation method.

10 Likes

Wow! The sound is fantastic. Thank you for sharing.

I would love to hear more! And learn more about your work on this genetic programming algorithm.

Thanks. There is an older introduction video here: Mellite - Tutorial - Part 11: Negatum genetic programming of synthetic sounds - Diode Zone

And for the new parametrisation, I created a new video: Mellite - Tutorial - Part 18: Automatic parametrisation of Negatum generated sound programs - Diode Zone
(see description below video for link of example workspace)

3 Likes

These are amazing resources, thanks for sharing!

1 Like

another one

// negatum-1b1fcec6-p
play {
	var in_0            = \p1.ar([0.20623526,0.20623526]).linexp(0, 1, 0.01, 20000.0);
	var in_1            = \p2.ar([0.705,0.695]);
	var freq_0          = Clip.ar(in_0, lo: 10.0, hi: 20000.0);
	var width_0         = Clip.ar(in_1, lo: 0.0, hi: 1.0);
	var phase_0         = Pulse.ar(freq: freq_0, width: width_0);
	var freq_1          = Clip.ar(in_0, lo: 0.01, hi: 20000.0);
	var sinOsc_0        = SinOsc.ar(freq: freq_1, phase: phase_0);
	var in_2            = SinOsc.ar(freq: 440.0, phase: sinOsc_0);
	var width_1         = sinOsc_0 max: 0.0;
	var pulse_0         = Pulse.ar(freq: 10.0, width: width_1);
	var min_0           = pulse_0 min: sinOsc_0;
	var min_1           = min_0 min: sinOsc_0;
	var in_3            = LeakDC.ar(sinOsc_0, coef: 0.995);
	var maxDelayTime_0  = sinOsc_0 max: 0.01;
	var max_0           = min_1 max: 0.0;
	var delayTime_0     = max_0 min: maxDelayTime_0;
	var delayC_0        = DelayC.ar(in_3, maxdelaytime: maxDelayTime_0, delaytime: delayTime_0);
	var min_2           = phase_0 min: 0.028348207;
	var min_3           = min_2 min: sinOsc_0;
	var in_4            = \p3.ar([0.43500024,0.44500023]).linlin(0, 1, -22050, 22050);
	var rq_0            = Clip.ar(in_4, lo: 0.01, hi: 100.0);
	var in_5            = Resonz.ar(delayC_0, freq: 10.0, bwr: rq_0);
	var rq_1            = Clip.ar(in_4, lo: 0.01, hi: 100.0);
	var in_6            = BRF.ar(in_5, freq: 10.0, rq: rq_1);
	var in_7            = SinOsc.ar(freq: 0.028348207, phase: delayC_0);
	var in_8            = LeakDC.ar(in_7, coef: 0.995);
	var rq_2            = Clip.ar(in_4, lo: 0.01, hi: 100.0);
	var bPF             = BPF.ar(in_8, freq: 10.0, rq: rq_2);
	var min_4           = sinOsc_0 min: in_7;
	var min_5           = min_4 min: in_7;
	var freq_2          = Clip.ar(in_4, lo: 0.01, hi: 20000.0);
	var sinOsc_1        = SinOsc.ar(freq: freq_2, phase: -29.88741);
	var min_6           = min_3 min: sinOsc_1;
	var min_7           = min_6 min: in_6;
	var min_8           = min_7 min: in_4;
	var in_9            = LeakDC.ar(sinOsc_0, coef: 0.995);
	var maxDelayTime_1  = Clip.ar(in_4, lo: 0.01, hi: 20.0);
	var max_1           = min_8 max: 0.0;
	var delayTime_1     = max_1 min: maxDelayTime_1;
	var in_10           = CombC.ar(in_9, maxdelaytime: maxDelayTime_1, delaytime: delayTime_1, decaytime: delayC_0);
	var maxDelayTime_2  = in_7 max: 0.01;
	var max_2           = min_5 max: 0.0;
	var delayTime_2     = max_2 min: maxDelayTime_2;
	var in_11           = CombC.ar(in_10, maxdelaytime: maxDelayTime_2, delaytime: delayTime_2, decaytime: -0.008059549);
	var min_9           = min_3 min: 0.09354709;
	var max_3           = min_9 max: 0.0;
	var delayTime_3     = max_3 min: 0.09354709;
	var phase_1         = DelayC.ar(in_6, maxdelaytime: 0.09354709, delaytime: delayTime_3);
	var freq_3          = Clip.ar(in_4, lo: 0.01, hi: 20000.0);
	var in_12           = SinOsc.ar(freq: freq_3, phase: phase_1);
	var in_13           = LeakDC.ar(sinOsc_0, coef: 0.995);
	var rq_3            = in_12 max: 0.01;
	var resonz          = Resonz.ar(in_13, freq: 10.0, bwr: rq_3);
	var min_10          = resonz min: in_5;
	var in_14           = LeakDC.ar(sinOsc_0, coef: 0.995);
	var rq_4            = Clip.ar(in_4, lo: 0.01, hi: 100.0);
	var decayTime_0     = Resonz.ar(in_14, freq: 10.0, bwr: rq_4);
	var in_15           = min_10 min: decayTime_0;
	var in_16           = min_10 min: in_7;
	var min_11          = in_16 min: in_11;
	var min_12          = min_11 min: in_11;
	var min_13          = min_11 min: min_6;
	var min_14          = min_13 min: bPF;
	var decayTime_1     = min_14 min: delayC_0;
	var min_15          = decayTime_1 min: delayC_0;
	var maxDelayTime_3  = Clip.ar(delayC_0, lo: 0.01, hi: 20.0);
	var max_4           = min_15 max: 0.0;
	var delayTime_4     = max_4 min: maxDelayTime_3;
	var in_17           = DelayC.ar(in_15, maxdelaytime: maxDelayTime_3, delaytime: delayTime_4);
	var min_16          = decayTime_0 min: in_17;
	var min_17          = min_16 min: in_4;
	var maxDelayTime_4  = Clip.ar(in_4, lo: 0.01, hi: 20.0);
	var max_5           = min_17 max: 0.0;
	var delayTime_5     = max_5 min: maxDelayTime_4;
	var in_18           = CombC.ar(in_2, maxdelaytime: maxDelayTime_4, delaytime: delayTime_5, decaytime: sinOsc_0);
	var maxDelayTime_5  = Clip.ar(in_11, lo: 0.01, hi: 20.0);
	var max_6           = min_12 max: 0.0;
	var delayTime_6     = max_6 min: maxDelayTime_5;
	var delayC_1        = DelayC.ar(in_18, maxdelaytime: maxDelayTime_5, delaytime: delayTime_6);
	var in_19           = LeakDC.ar(in_12, coef: 0.995);
	var lPF             = LPF.ar(in_19, freq: 10.0);
	var in_20           = LeakDC.ar(in_16, coef: 0.995);
	var combC_0         = CombC.ar(in_20, maxdelaytime: 0.028348207, delaytime: 0.028348207, decaytime: decayTime_1);
	var width_2         = Clip.ar(in_17, lo: 0.0, hi: 1.0);
	var pulse_1         = Pulse.ar(freq: 10.0, width: width_2);
	var min_18          = min_13 min: in_11;
	var maxDelayTime_6  = Clip.ar(in_11, lo: 0.01, hi: 20.0);
	var max_7           = min_18 max: 0.0;
	var delayTime_7     = max_7 min: maxDelayTime_6;
	var combC_1         = CombC.ar(delayC_0, maxdelaytime: maxDelayTime_6, delaytime: delayTime_7, decaytime: decayTime_0);
	var in_21           = Mix([delayC_1, lPF, combC_0, pulse_1, combC_1]);
	var in_22           = in_21 clip2: 1.0;
	var leakDC          = LeakDC.ar(in_22, coef: 0.995);
	var times           = leakDC * 0.47;
	var bus             = \out.kr(0.0);
	var attr            = \gain.kr(1.0);
	var in_23           = times * attr;
	Out.ar(bus, in_23);
}
3 Likes

Super cool. Thanks for sharing the videos!

I’m looking forward to getting in front of my computer and testing out your code blocks.

What was the target sound was for your first example, and how many iterations did you run to get this result? Really love the sound.

The target sound is the one briefly shown in the beginning of the second video, and it’s not that many iterations, I don’t remember from which iteration the example is, somewhere between 12 and 25; that’s because I use a very high population size (10K) and so it takes very long for each iteration even on a fast computer. It was run with the limited set of UGens described in the video, rather than using a broad set.