«music for airports inspired generative music» by infinite digits
on 01 Dec'21 18:32 inthis is a infinite generative song based on Eno's Music for Airports.
I realize this could be split up into different SynthDef's and sequenced with Pbinds, but I do like having everything inside one function (so I opted to use Demands).
you can listen to 20 minutes of this here: https://infinitedigits.bandcamp.com/track/eno
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
( { arg hz=440,amp=0.5; var note=hz.cpsmidi; var snd,snd2,intro; // these notes are directly from Eno's Music for Airports // each phrase is one line, and played through var airports=[ [5,7,4,2,0,12,7,5,7,4,2,0], [5,7,4,2,0,12,4,7,5,0], [-5,2,0,4,7,12,5,2,7,4,0,7,2,5,5,2,4,0], [7,7,2,4,4,4,2,0,7,0,0], ]; // these are some chords I made up that sound nice with it var planes=[ [0,4,7,12], [4,7,11,16], [-3,0,4,7], [-3,0,5,9], ]; // setup the note change variables var seq,seqnote,notepulse,noterate; var planeseq,planenotes,planeenv,planenotechange; // piano stuff var noise, string, delaytime, lpf, noise_env,pianosnd,pianosnd2, damp_mul,pianohz,noise_hz; var noise_attack=0.002, noise_decay=0.06, tune_up = 1.0005, tune_down = 0.9996, string_decay=6.0, lpf_ratio=2.0, lpf_rq = 4.0, hpf_hz = 40, damp=0, damp_time=0.1; // chord and note changes (random) planenotechange=Dust.kr(1/30)+Impulse.kr(0); planeenv=1-EnvGen.kr(Env.perc(3,10,0.9),planenotechange); planenotes=Demand.kr(TDelay.kr(planenotechange,3),0,Dxrand(planes,inf)); notepulse=1; noterate=TChoose.kr(Dust.kr(notepulse)+Impulse.kr(0),[0.02,0.05,1,2,0.5,0.25,2]/2)*Rand(0.78,1.32); notepulse=Impulse.kr(noterate); seq=Demand.kr(Dust.kr(0.1)+Impulse.kr(0),0,Dxrand(airports,inf)); seqnote=Demand.kr(notepulse,0,Dseq(seq,inf)); // bass note snd=SinOsc.ar((note-24).midicps,mul:SinOsc.kr(Rand(0.001,0.01)).range(0.05,0.15)); snd=snd+SinOsc.ar((note-12).midicps,mul:SinOsc.kr(Rand(0.001,0.01)).range(0.001,0.05)); // chords snd=snd+(planeenv*Mix.ar(Array.fill(8,{arg i; var snd; snd=SawDPW.ar((note+planenotes[i%4]+Select.kr(DC.kr(i%4)<1,[24.neg,36.neg])).midicps,mul:0.9); snd=LPF.ar(snd,LinExp.kr(SinOsc.kr(rrand(1/30,1/10),rrand(0,2*pi)),-1,1,hz,hz*5)); snd=DelayC.ar(snd, rrand(0.01,0.03), LFNoise1.kr(Rand(5,10),0.01,0.02)/15 ); Pan2.ar(snd,VarLag.kr(LFNoise0.kr(1/3),3,warp:\sine))/7 }))); snd=MoogLadder.ar(snd.tanh,LinExp.kr(VarLag.kr(LFNoise0.kr(1/6),6,warp:\sine),-1,1,hz*2,hz*60)); snd=snd+(0.55*DynKlank.ar(`[[(note+planenotes[0]).midicps, (note+planenotes[1]).midicps, (note+planenotes[2]).midicps, (note+planenotes[3]).midicps], nil, [1, 1, 1, 1]], PinkNoise.ar([0.004, 0.004]))); // piano sound from https://github.com/catfact/zebra/blob/master/lib/Engine_DreadMoon.sc#L20-L41 noise_hz=VarLag.kr(LFNoise0.kr(1/10),10).range(2000,5000); pianohz=A2K.kr((note+seqnote-12).midicps); noise_env = Decay2.ar(Impulse.ar(noterate)); noise = LFNoise2.ar(noise_hz) * noise_env; damp_mul = LagUD.ar(K2A.ar(1.0 - damp), 0, damp_time); delaytime = 1.0 / (pianohz * [tune_up, tune_down]); string = Mix.new(CombL.ar(noise, delaytime, delaytime, string_decay * damp_mul)); pianosnd = RLPF.ar(string, lpf_ratio * pianohz, lpf_rq) * amp; pianosnd = HPF.ar(pianosnd, hpf_hz); // polyperc sound pianosnd2=( EnvGen.ar(Env.perc(release:4),notepulse)* MoogFF.ar(Pulse.ar((note+seqnote).midicps,mul:1.0),(note).midicps*1.5) ); // mix between polyperc and piano sound randomly snd=snd+SelectX.ar(SinOsc.kr(LFNoise0.kr(0.1).range(0.01,0.1)).range(0.1,0.9),[pianosnd*0.3,pianosnd2]); snd=LPF.ar(snd,(note+36).midicps); snd=HPF.ar(snd,120); snd=snd*EnvGen.ar(Env.new([0,0,1],[0.5,3])); snd=FreeVerb.ar(snd,0.45,2.0,0.5); snd2=snd; // reverb snd2 = DelayN.ar(snd2, 0.03, 0.03); snd2 = CombN.ar(snd2, 0.1, {Rand(0.01,0.099)}!32, 4); snd2 = SplayAz.ar(2, snd2); snd2 = LPF.ar(snd2, 1500); 5.do{snd2 = AllpassN.ar(snd2, 0.1, {Rand(0.01,0.099)}!2, 3)}; // final output Out.ar(0,(snd2*0.1+snd)*amp); }.play; )
descendants
full graph
«Re: music for airports inspired generative music» by mutedial (private)
reception
this is insane. How do you even get to this point lol
Charming!
this is wonderful. Very much what I'm trying to do - only I want to make it responsive - to create ambient sound that changes in responses to environmental signals. Thanks for the inspiration and the example
and here is a (slightly simplified - not using sc3-plugins, for now) version running in a docker container in a VM and broadcasting over IceCast - so you can listen to it forever https://audio.spiderhats.com/airports