====== supercollider=code=share ====== https://supercollider.github.io/ https://toplap.org/ https://github.com/toplap/awesome-livecoding ===== basics ===== Oscillator Stereo basics ( { // mixing sine oscillators in parallel var n = 16; // number of structures to make // mix together parallel structures Mix.fill(n, // this function creates an oscillator at a random frequency { FSinOsc.ar(200 + 1000.0.rand) } ) / (2*n) // scale amplitude }.scope(1); ) Great Theremin with your mouse #theremin nice sound (ghosty) ( { SinOsc.ar( freq: MouseY.kr(3200, 200, lag: 0.5, warp: 1) * SinOsc.kr(6, mul: 0.02, add: 1), //Vibrato mul: abs(MouseX.kr(0.02, 1)) //Amplitude ) }.play ) funny crazy bells #bells funny ( //frequency linked to envelope length //high notes short, low long { var frequency; Mix.ar( { frequency = rrand(100, 5000); Pan2.ar( SinOsc.ar( frequency, mul: EnvGen.kr( Env.perc(0.001, 500/frequency), Dust.kr(0.05), 0.2 ) ), rrand(-1.0, 1.0) ) }.dup(100) ) }.play ) #HarhNoiseGlitchmusic ( { var h, n, m, k, trig; trig = Dust.kr( 7 ** LFNoise1.kr(0.3) ); h = ToggleFF.kr(CoinGate.kr(0.4,trig)) * RLPF.ar(LFPulse.ar(50, 0, 0.5, 1, LFNoise1.kr(2, 0.5, -0.5)), 6000, 0.15); n = Trig.ar(trig, TRand.kr(0, 0.01, CoinGate.kr(0.4,trig))) * WhiteNoise.ar; m = Trig.ar(trig, TRand.kr(0, 0.01, CoinGate.kr(0.4,trig))) * BrownNoise.ar; k = Trig.ar(trig, LFNoise1.kr([ 4, 4.2 ], 0.1, 0.11)) * LFClipNoise.ar(LFNoise0.kr(7, 30, 40)); LeakDC.ar(h + n + k + m * 10).distort; }.play; ) ===== Live coding ===== Bases of live coding: p = ProxySpace.push; // some simple live code to get in code:: d = (); // create a new environment d.push; // push it to current // this synthdef can be changed on the fly, but the synth will // not change from this. use expression [1] for replacing a given synth ( SynthDef(\x, { |out, freq = 440| Out.ar(out, Ringz.ar(Dust.ar(40), freq, 0.1) ) }).send(s) ) // send a first synth: ~s1 = Synth(\x); // [1] // now you can play around with these lines, as well as with the synth def above ~s1 = Synth.replace(~s1, \x, [\freq, 200000]); ~s1.set(\freq, 8000); // add a bus: ~b1 = Bus.control(s); ~b1.set(350); ~s1.map(\freq, ~b1); // set the bus to different values: ~b1.set(100); ~b1.xline(800, 5); ~s3 = { Out.kr(~b1, MouseX.kr(300, 900, 1)) }; // add some mouse control on the fly ~s3.free; // remove it again. // finish: ~b1.free; d.clear; d.pop; :: ===== Music with beats ===== basic techno (nice) ( play{ i=Impulse.ar(_); h = LPF.ar(WhiteNoise.ar(Decay.ar(Impulse.ar([1,1/7],[0.5,0.75]).sum,0.1)!2),12000); Limiter.ar( (z=Pluck.ar(Saw.ar(4),i.(1),1,1,6/7,SinOsc.ar(PulseCount.ar(i.(11),i.(5)).cos%[3,4]*12),2.5).sin) + LPF.ar(HPF.ar(FreeVerb.ar(z.mean,1,0.999,0.2)*0.3,750)*Line.kr(0,1,16),2500) + HPF.ar(Ringz.ar(LPF.ar(Impulse.ar([0.5,1],[1/6,0]).sum,3000),40,0.8,3).sin*3,40).tanh.madd(0.6) + h + RHPF.ar(CombL.ar(h*0.4,1,5/8,10)*Line.kr(0,1,8),10000,0.5) ) } )