diff --git a/lmms/projects/moniq.mmpz b/lmms/projects/moniq.mmpz new file mode 100644 index 0000000..61cf9cc Binary files /dev/null and b/lmms/projects/moniq.mmpz differ diff --git a/lmms/projects/srge.mmpz b/lmms/projects/srge.mmpz new file mode 100644 index 0000000..567053a Binary files /dev/null and b/lmms/projects/srge.mmpz differ diff --git a/lmms/projects/srge.mmpz.bak b/lmms/projects/srge.mmpz.bak new file mode 100644 index 0000000..659235f Binary files /dev/null and b/lmms/projects/srge.mmpz.bak differ diff --git a/lmms/projects/sw.mmpz b/lmms/projects/sw.mmpz index 9421ba4..1f4b56b 100644 Binary files a/lmms/projects/sw.mmpz and b/lmms/projects/sw.mmpz differ diff --git a/lmms/projects/sw.mmpz.bak b/lmms/projects/sw.mmpz.bak index 63347df..9421ba4 100644 Binary files a/lmms/projects/sw.mmpz.bak and b/lmms/projects/sw.mmpz.bak differ diff --git a/scd/cheaptune.scd b/scd/cheaptune.scd new file mode 100644 index 0000000..efc3553 --- /dev/null +++ b/scd/cheaptune.scd @@ -0,0 +1,27 @@ +////////#superCollider/////////// +///// audio @ http://archive.org/details/ChiptuneBreakz +/// +( +Tdef(\cheaptune,{ + var sig2,sig1,sig3,a,rel; + sig1=[8,12,16,20]; + sig2=2/sig1.scramble; + sig3=2*sig1.scramble; + rel=Pxrand([0,0,0,0,0,0,0,1],inf).asStream; + inf.do{ + a=[0.125,0.25,0.5,0.5,0.25,0.125,1].choose; + x=[60,67,75,79,94].scramble; + play{EnvGen.ar(Env.perc(0.01,a+rel.next),doneAction:2)* + AY.ar(x.midicps*a*sig1.choose,x*sig2.choose.midicps,a*sig3.choose.midicps,0.25,3,15,10,7)}; + play{EnvGen.ar(Env.perc(0.01,a/2),Duty.kr(Dseq([0.5,0.25],inf),0,Dxrand([0,1],inf)),doneAction:2)* + BrownNoise.ar(0.6)!2}; + play{EnvGen.ar(Env.perc(0.01,a/4),Duty.kr(Dseq([0.25,0.5],inf),0,Dseq([0,1],inf)),doneAction:2)* + LFNoise0.kr(16)*WhiteNoise.ar(0.2)!2}; + a.wait + } +}); +Tdef(\cheaptune).play; +) +s.record; +s.stopRecording; +// \ No newline at end of file diff --git a/scd/cool_song.scd b/scd/cool_song.scd new file mode 100644 index 0000000..9f70e32 --- /dev/null +++ b/scd/cool_song.scd @@ -0,0 +1,249 @@ +s.boot; + +( +t = Task{ + var hz = 4; + var i = 0; + var n = 0.25; + var chipsize = 10; + + // allocate a disk i/o buffer + p = Buffer.alloc(s, 65536, 2); + + // create an output file for this buffer, leave it open + p.write("Output.wav", "wav", "int16", 0, 0, true); + // start recording + d = Synth.tail(nil, "help-Diskout", ["bufnum", p.bufnum]); + + //buffer for granular synthesis sample + b = Buffer.read(s,"/usr/share/SuperCollider/sounds/a11wlk01-44_1.aiff"); + + 1.do{ + + x = Synth(\SinPulser); + 1.wait; + x.free; + }; + + 2.do{ + hz = 4; + a = Scale.choose; + chipsize.do { + x = Synth(\chiptune, [\fund,a.cents[i % a.size] + 1, \hz, hz]); + i = i + 1; + n.wait; + x.free; + }; + + Synth(\eightbitSnare); + y.free; + i = 0; + hz = hz * 2; + //new speed + n = 0.15; + a = Scale.choose; + chipsize.do { + x = Synth(\chiptune, [\fund,a.cents[i % a.size] + 1, \hz, hz]); + i = i + 1; + n.wait; + x.free; + }; + + Synth(\eightbitSnare); + i=0; + hz = hz * 1.5; + //new speed + n = 0.2; + a = Scale.choose; + chipsize.do { + x = Synth(\chiptune, [\fund,a.cents[i % a.size] + 1, \hz, hz]); + i = i + 1; + n.wait; + x.free; + }; + }; + + 5.do{ + x = Synth.new(\ambientBackground); + 4.wait; + x.free; + }; + + 2.do{ + a = Scale.choose; + x = Synth.new(\ambientBackground); + 2.wait; + y = Synth(\SinPulser); + 4.wait; + Synth(\eightbitSnare); + i = 0; + hz = hz * 1.5; + n = 0.4; + chipsize.do { + Synth(\chiptune, [\fund,a.cents[i % a.size] + 1, \hz, hz]); + i = i + 1; + n.wait; + }; + x.free; + y.free; + }; + + 1.do{ + hz = 1; + 30.do{ + x = Synth.new(\granularSynth, [\sndbuf, b, \hz, hz, \dur, 1]); + hz.wait; + hz = hz * 0.95; + x.free; + }; + }; + + 1.do{ + x = Synth.new(\SawPulser); + 5.wait; + x.free; + }; + 1.do{ + x = Synth.new(\moogPulser); + y = Synth.new(\SawPulser); + 10.wait; + x.free; + y.free; + }; + 2.do{ + x = Synth.new(\moogPulser); + hz = 4; + n=0.33; + Synth(\eightbitSnare); + a = Scale.choose; + chipsize.do { + Synth(\chiptune, [\fund,a.cents[i % a.size] + 1, \hz, hz]); + i = i + 1; + n.wait; + }; + + Synth(\eightbitSnare); + i = 0; + hz = hz * 2; + //new speed + n = 0.15; + a = Scale.choose; + chipsize.do { + Synth(\chiptune, [\fund,a.cents[i % a.size] + 1, \hz, hz]); + i = i + 1; + n.wait; + }; + + Synth(\eightbitSnare); + i=0; + hz = hz * 1.5; + //new speed + n = 0.2; + a = Scale.choose; + chipsize.do { + Synth(\chiptune, [\fund,a.cents[i % a.size] + 1, \hz, hz]); + i = i + 1; + n.wait; + }; + x.free; + }; + + // stop recording + d.free; + p.close; + p.free; +}; +t.start; + + + +SynthDef(\eightbitSnare, { + var sig, freq, amp, env; + + env = EnvGen.ar(Env.perc(0.005, 0.5, 6, -8), doneAction: 2); + sig = WhiteNoise.ar(1) * env; + sig = FreeVerb.ar(sig, 0.4, 0.1, 0.9); + + + Out.ar(0,sig * 0.7); + Out.ar(1,sig * 0.7); +}).writeDefFile.load(s); + +SynthDef(\chiptune, { + arg fund = 120, hz = 5; + var env, sig, amp, freq; + + amp = LFPulse.ar(hz, 0, 0.5); + env = EnvGen.ar(Env.perc); + sig = Pulse.ar(fund, 0.5, amp); + sig = env * FreeVerb.ar(sig, 0.7, 0.8, 0.25); + Out.ar(0, sig * 0.8); + Out.ar(1, sig * 0.8); +}).writeDefFile.load(s); + +SynthDef(\ambientBackground, { + var env, freq, sig; + + freq = LFNoise2.ar(1, 100, LFDNoise0.ar(1, 100, 220)); + sig = LFSaw.ar(freq, 2, 0.1); + sig = FreeVerb.ar(sig, 0.5, 0.5, 0.3); + + freq = LFDNoise0.ar(PinkNoise.kr(10), 100, 220); + sig = sig + SinOsc.ar(freq, 0.5 , 0.5); + + freq = LFDNoise0.ar(PinkNoise.kr(10), 100, 220); + sig = sig + Pulse.ar(freq, 0.5, 0.3); + sig = FreeVerb.ar(sig, 0.9, 0.9, 0.3, 0.8); + + Out.ar(0, sig); + Out.ar(1, sig); +}).writeDefFile.load(s); + +SynthDef(\SawPulser, { + var pitchRand, env, freq, sig; + + + freq = LFDNoise1.kr(5, 350, 450); + sig = Saw.ar(freq) * (HenonN.ar(5)*0.5); + + Out.ar(0, sig); + Out.ar(1, sig); +}).writeDefFile.load(s); + +SynthDef(\moogPulser, { + var sig; + + sig = MoogFF.ar( + Pulse.ar([40,121], [0.3,0.7]), + SinOsc.kr(LFNoise0.kr(0.42).range(0.001, 2.2)).range(30, 4200), + 0.83 * 4); + + Out.ar(0,sig); +}).writeDefFile.load(s); + +SynthDef(\SinPulser, { + var pitchRand, env, freq, sig; + + pitchRand = LFDNoise0.ar(1, 0, 5); + freq = LFDNoise0.ar(pitchRand, 300, 450); + freq = freq + LFDNoise3.ar(1, 350, 450); + sig = SinOsc.ar(freq * 0.5); + sig = FreeVerb.ar(sig, 0.525, 0.915, 0.5); + + Out.ar(0, sig * 0.8); + Out.ar(1, sig * 0.8); +}).writeDefFile.load(s); + +SynthDef(\granularSynth, { + arg sndbuf, hz = 100, dur=0.1; + + var winenv, sig; + // a custom envelope + winenv = Env([0, 1, 0], [0.5, 0.5], [8, -8]); + z = Buffer.sendCollection(s, winenv.discretize, 1); + + sig = GrainBuf.ar(2, Impulse.kr(hz), dur, sndbuf, LFNoise1.kr.range(0.5, 2), LFNoise2.kr(0.1).range(0, 1), 2, 0, -1); + // use mouse x to control panning + Out.ar(0,sig); +}).writeDefFile.load(s); +) \ No newline at end of file diff --git a/scd/first_comp.scd b/scd/first_comp.scd new file mode 100644 index 0000000..72e0551 --- /dev/null +++ b/scd/first_comp.scd @@ -0,0 +1,48 @@ +s.boot; + +( +s.scope; +s.meter; +s.plotTree; +) + +( +SynthDef(\fmbell, { arg out=0, amp=0.01, gate=0.5, pan=0, freq=300; + var sig, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8; + freq = freq * EnvGen.kr(Env([1,1.002,0.998,1],[0.1,0.8]), 1); + sig1 = SinOsc.ar(freq * 2.6706 + 0.13) * 2 + 1; + sig2 = SinOsc.ar(freq * 0.9998 * sig1); + sig3 = SinOsc.ar(freq * 2.6629 * sig1 + 2.04); + sig4 = LFCub.ar(freq * 0.9991 * sig1 + 2.14); + sig5 = SinOsc.ar(freq * 2.6656 * sig1 - 2); + sig6 = SinOsc.ar(freq * 1 * sig1 + 1.84); + //sig = sig2 + sig3 + sig4 + sig5 + sig6; + sig = [sig1, sig2, sig3, sig4, sig5, sig6] * DC.ar([0.5,0.3,0, 0.5,0.2,0.2]); + //sig.debug("sig"); + //sig = sig /34; + sig = sig * EnvGen.ar(\adsr.kr( Env.adsr(0.01,0,1,2.1,1,-1) ),gate,doneAction:2); + sig = Pan2.ar(sig, pan + [ 0, -0.5, -0.5, 0.5, 0.5, 0], amp).sum; + Out.ar(out, sig); +}).add; +) + +( +~reps = Pseries(1,1,inf).asStream; + +p = Pbind ( + \instrument, \fmbell, + \midinote, Pseq([ + Pxrand([41, 53, 30, 58], ~reps), + Pxrand([80, 60, 70, 79]), + Pxrand([50, 40, 0, 80]), + ],inf), + \sustain, 0.05, + \dur, 0.15, + //\amp, 1, +); + +q = p.play; +) +q.stop; + +s.record \ No newline at end of file diff --git a/scd/granular.scd b/scd/granular.scd new file mode 100644 index 0000000..441b275 --- /dev/null +++ b/scd/granular.scd @@ -0,0 +1,34 @@ +s.boot; + +( +s.meter; +s.plotTree; +s.scope; +) + +b = Buffer.read(s, "/home/lcoogan/Tidal/scd/samples/8train/plosh.wav"); +b.play; +b.free; + +( +{ + var sig; + sig = GrainBuf.ar( + 1, + Impulse.ar({ExpRand(60,60.5)}!12), + 0.02, + b, + 0.5, + ( + Phasor.ar(0, 1 * BufRateScale.ir(b), 0, BufSamples.ir(b)-1) + + LFNoise1.ar(100).bipolar(0.0 * SampleRate.ir) + ) / BufSamples.ir(b), + 0.23, + 0, + 0, + -1, + 512, + ); + sig = sig * 0.5; +}.play +) \ No newline at end of file diff --git a/scd/livecoding.scd b/scd/livecoding.scd new file mode 100644 index 0000000..f718045 --- /dev/null +++ b/scd/livecoding.scd @@ -0,0 +1,14 @@ +s.boot +( +Ndef(\az, {|freq=444, pan=0| + var sig = LFTri.ar(freq); + sig = Pan2.ar(sig, pan); + +}).play.fadeTime = 2; +) + +Ndef(\az).set(\freq, rrand(80,500)) + +Ndef(\az).fadeTime = 2 + +s.scope \ No newline at end of file diff --git a/scd/mane.scd b/scd/mane.scd new file mode 100644 index 0000000..67de8f0 --- /dev/null +++ b/scd/mane.scd @@ -0,0 +1,64 @@ +// bit of an afternoon playing random noises turned out to sound relatively IDM-ish + +// I stole the kick & snare from the dubstep thing off the list a while ago... thanks + +( +fork{ + loop{ | i | + var time, trigtime; + time = [1/8,1/4,1].wchoose([2,1,0.2].normalizeSum); + trigtime = [1,2,4,8,16].choose; + play{ + var sound, freq, ampenv, filterenv, mod, snare, snaretrig, kick, kickenv, lin; + + mod = LFNoise2.kr({0.01.rand}.dup(2), [0.01.rand,0.001.rand,0.5.rand].choose, 1.0); + + freq = [ + Scale.minorPentatonic.degrees, + Scale.minorPentatonic.degrees.choose + ].choose + (12 * (2..6).choose); + freq = freq.midicps; + + filterenv = EnvGen.kr(Env.linen(time/3.0.rand.max(0.01), + time/3.0.rand.max(0.01), + time/3.0.rand.max(0.01)).range(freq*1.5,freq*10.0.rand.max(1.5)) + ); + + ampenv = EnvGen.kr(Env.perc(0.01,time/2.0.rand.max(1/8),1.0.rand),doneAction:2); + + sound = Select.ar(5.rand, [ + Pulse.ar(freq*mod,0.5).tanh, + LFTri.ar(freq*mod,0).tanh, + Pulse.ar(freq*mod,0.5).tanh, + LFSaw.ar(freq*mod,0.5).tanh, + SinOscFB.ar(freq*mod,100.0.rand).tanh + ]); + + sound = RLPF.ar(sound, filterenv, LFNoise2.kr(0.01.rand, 0.3, 0.5) ); + sound = sound * ampenv; + + sound = sound + (DelayC.ar(sound, 1/4, {[1/4,1/8].choose}.dup(2)) * [1.0.rand,0]); + + 5.do{sound = (sound.clip + sound)*0.75}; + + sound = LPF.ar(sound, LFNoise2.kr(trigtime, 250, 500) ); + + snaretrig = Impulse.kr(trigtime); + snare = 3*PinkNoise.ar(1!2) * + EnvGen.kr(Env.perc(0.01,0.01,[0,0.3.rand].choose),snaretrig); + 5.do{snare = AllpassC.ar(snare, 0.5, {0.05.rand}.dup(2), 1.0.rand)+snare}; + 5.do{snare = (snare.distort + snare)*0.85}; + + kickenv = EnvGen.kr(Env.perc(0.01,time,[0,1.0.rand].choose)); + kick = SinOsc.ar(40!2+(kickenv**3*200),0,7*kickenv) * kickenv; + 5.do{kick = (kick.distort + kick)*0.75}; + + sound = Limiter.ar(sound + snare + kick, 1.0, 0.00001); + + Out.ar(0,sound.tanh); + }; + + time.wait; + }; +} +) \ No newline at end of file diff --git a/scd/noize.scd b/scd/noize.scd new file mode 100644 index 0000000..e33df05 --- /dev/null +++ b/scd/noize.scd @@ -0,0 +1,29 @@ +// what can it sound like? see: https://www.youtube.com/watch?v=dRmY3tEwZyE +// the youtube version has been sent through an additional reverb pedal, but +// you don't need the pedal to get something that sounds interesting + +( +s.options.memSize_(16384*10); +s.reboot; +s.waitForBoot({ + + Ndef(\bits, { + var t = PulseCount.ar(Impulse.ar(8e3)); + var u = PulseCount.ar(Impulse.ar(7009)); + var sig = HPF.ar( + ( + ((t * 15) & (t >> 5)) | + ((t * 5) & (t >> [3, 4])) | + ((t * 2) & (t >> 9)) | + ((t * 8) & (t >> 11)) | + (((t*t) & t) | (t >> 3)) + - 3 % 256 + ) / 127-1 * 3 + , 20 + ) * 0.1; + var sig2 = LPF.ar(HPF.ar(gcd(t*u, u+t), WhiteNoise.ar()*2000 + 1000), 20); + sig2 = sig2*sig; + sig = 0.3*Splay.ar(Limiter.ar(Greyhole.ar(sig + sig2, sig, 0.5, sig), 0.5).flatten); + }).play; +}); +) \ No newline at end of file diff --git a/scd/patterns.scd b/scd/patterns.scd new file mode 100644 index 0000000..03b58ea --- /dev/null +++ b/scd/patterns.scd @@ -0,0 +1,23 @@ +s.boot; + +( +SynthDef.new(\sine, { + arg freq=440, atk=0.005, rel=0.2, amp=1, pan=0; + var sig, env; + sig = SinOsc.ar(freq); + env = EnvGen.kr(Env.new([0,1,0],[atk,rel],[1,-1]),doneAction:2); + sig = Pan2.ar(sig, pan, amp); + sig = sig* env; + Out.ar(0, sig); +}).add; +) + +( +p = Pbind( + \instrument, \sine, + \dur, Pseq([0.6, 0.15, 0.15], inf), + \freq, Pseq([330, 247, 370, 220], inf), +).play +) + +s.plotTree; \ No newline at end of file diff --git a/scd/practise.scd b/scd/practise.scd new file mode 100644 index 0000000..9485b54 --- /dev/null +++ b/scd/practise.scd @@ -0,0 +1,36 @@ +s.boot; +s.reboot; + +( +s.meter; +s.plotTree; +s.scope; +) + +{SinOsc.ar(LFNoise0.kr(10).range(500, 1500), mul: 0.1)}.play; + +s.record + +buf /home/lcoogan/.local/share/SuperCollider/Recordings/SC_220709_154352.aiff + +b = Buffer.read(s, "/home/lcoogan/Tidal/scd/samples/8train/plosh.wav"); + + +b = Buffer.read(s, "/home/lcoogan/.local/share/SuperCollider/Recordings/SC_220709_154352.aiff"); +b.play + + + +// THe actual SHST + +( +Pdef( + \rhythm, + Pbind( + \degree, Pseq([0,1,3,2,8,3]), + \dur, 0.05, + \rate, 1, + \amp, 0.5, + ); +).play; +) \ No newline at end of file diff --git a/scd/shit_chiptune_conv.scd b/scd/shit_chiptune_conv.scd new file mode 100644 index 0000000..555beb3 --- /dev/null +++ b/scd/shit_chiptune_conv.scd @@ -0,0 +1,34 @@ +s.boot; +( +SynthDef("help_mp3_01", { |bufnum = 0| + var son, pitch, amp, wibble; + son = DiskIn.ar(2, bufnum).mean; + pitch = Tartini.kr(son)[0]; + amp = Amplitude.ar(son); + pitch = Median.kr(5, pitch); // smooth + pitch = pitch.min(10000).max(10); // limit + pitch = pitch.cpsmidi.round.midicps; // coerce + wibble = Pulse.ar(pitch, 0.2, amp * 2); // resynthesise + wibble = FreeVerb.ar(wibble, 0.3, 0.1, 0.9); // bit of reverb just to taste + Out.ar(0, wibble.dup); +}).add; +) + +// Choose your MP3... some will work well and most will work badly. +// Oh and you'll need the MP3 Quark. +m = MP3("/home/lcoogan/Lataukset/4.mp3"); +m.start; +b = Buffer.cueSoundFile(s, m.fifo, 0, 2); +// Off we go: +x = Synth("help_mp3_01", [\bufnum, b.bufnum], addAction:\addToTail); + +// Please remember to tidy up after yourself: +x.free; +b.close; b.free; +m.finish; + + +More waffle plus a recorded example at +http://www.mcld.co.uk/blog/blog.php?235 + +s.record \ No newline at end of file diff --git a/scd/synthdefs.scd b/scd/synthdefs.scd new file mode 100644 index 0000000..0b89ef5 --- /dev/null +++ b/scd/synthdefs.scd @@ -0,0 +1,49 @@ +( +SynthDef.new(\pulseTest, { + arg ampHz=4, fund=40, maxPartial=4, width=0.5; + var amp1, amp2, freq1, freq2, sig1, sig2; + amp1 = LFPulse.kr(ampHz, 0, 0.12) * 0.75; + amp2 = LFPulse.kr(ampHz, 0.5, 0.12) * 0.75; + freq1 = LFNoise0.kr(4).exprange(fund, fund*maxPartial).round(fund); + freq2 = LFNoise0.kr(4).exprange(fund, fund*maxPartial).round(fund); + freq1 = freq1 * LFPulse.kr(8, add:1); + freq1 = freq1 * LFPulse.kr(6, add:1); + sig1 = Pulse.ar(freq1, width, amp1); + sig2 = Pulse.ar(freq2, width, amp2); + //sig1 = FreeVerb.ar(sig1, 0.7, 0.8, 0.25); + //sig2 = FreeVerb.ar(sig1, 0.7, 0.8, 0.25); + Out.ar(0, sig1); + Out.ar(1, sig2); +}).add; +) + +x = Synth.new(\pulseTest); + +x.free; + +x.set(\width, 0.25); +x.set(\fund, 20); +x.set(\maxPartial, 20); +x.set(\ampHz, 0.25); + +s.freeAll + + + +( +SynthDef.new(\madtraffic, { + var sig, env; + env = Line.kr(1, 0, 1, doneAction:2); + sig = Pulse.ar(ExpRand(30,500)) * env; +}.add; +)) + +( +Pbind( + \instrument, \pulseTest, + \freq, Pseq([137, 373, Prand([237, 473, 713],1)], inf), + \legato, Pseq([1.7, 0.3], inf), + \dur, 0.25, + \out, Pseq([1, 0], inf) +).play; +) \ No newline at end of file