Submit
Browse
Anonymous
Login
RSS
SuperCollider Code
Fork Code: Amasiko
name
code content
~ohh = Buffer.read(~s1, '/samples/OpenHat/OpenHat-accent050-decay100.wav'); ~ohh2 = Buffer.read(~s1, '/samples/OpenHat/OpenHat-accent100-decay100.wav'); ~chh = Buffer.read(~s1, '/samples/ClosedHat/ClosedHat909-decay100.wav'); ~crash = Buffer.read(~s1, '/samples/Crash/Crash-accent090-tune050.wav'); ~clap = Buffer.read(~s1, '/samples/HandClap/HandClap909-accent100.wav'); ~rim = Buffer.read(~s1, '/samples/RimShot/RimShot909-accent100.wav'); ~ride = Buffer.read(~s1, '/samples/Ride/Ride909-accent050-tune050.wav'); ( SynthDef(\moap, { // YES everything runs at audio rate. Works with hardware clocks but please don't send 5v into your microphone input, find some way to attenuate it or just use another computer AUX OUT --> MIC IN // hence why I used send(~s1) instead of add. This is sent to my percussion computer. arg ohhVol = 0, chhVol = 0, kickVol = 0, snareVol = 0, amp = 1, rimVol = 0, swingDur = 1, clockIn = 0, clkCut = 500, katk = 0, krel = 0.9, div = 1, watk = 0, rideBuf = 7, swingWidth = 0.1, wrel = 0.01, chhBuf = 0, maxSteps = 31, ohhBuf = 1, channels = 1, rideVol = 0, kwAmp = 0.015, ohhRate = 1, chhRate = 1, patk = 0, prel = 0.03, startFreq = 350, rideRate = 2, kwBW = 1, kFreq = 80, satk = 0, srel = 0.5, swingMax = 0.0, swingMin = 0, pitchRatio = 1.6, kwFreq = 4500, wVol = 0.15, wFreq = 5500, bw = 1, trigDur = 0.001, sFreq = 330, sStart = 350, rimBuf = 6, s2Dec = 0.07, crashVol = 0.0, crashBuf = 2, clapVol = 0.0, s1Dec = 0.12, rimRate = 2, thresh = 0.01, clapBuf = 6, crashRate = 2, clapRate = 2, snareToneFreq = 150, tone = 0.5, kwrel = 0.03; var clock, ohhArr, kickArr, snareArr, steppa, kswing, kpenv, spenv, clapArr, crashArr, ohh, chh, kick, snare, mix, kickEnv, penv, chhArr, sswing, wEnv, clap, crash, retrig, snareEnv, chhSelecta, ohhSelecta, kickSelecta, snareSelecta, crashSelecta, clapSelecta, snareTone1, snareTone2, rimArr, rideArr, rideSelecta, rimSelecta, rim, ride, kwn; clock = Trig1.ar(PulseDivider.ar(Trig.ar(HPF.ar(SoundIn.ar(clockIn), clkCut) > thresh, 0.001), div), trigDur); // ^ Change this to a simple Impulse.ar((bpm/60)*8); if you dont have hardware. chhArr = \chhz.ar([0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1]); //Included for your ease-of-use, I know it would've been easier to write 0!32. ohhArr = \ohhz.ar([0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1]); kickArr = \kickz.ar([0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1]); snareArr = \snarez.ar([0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1]); crashArr = \crashz.ar([0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1]); clapArr = \clapz.ar([0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1]); rimArr = \rimz.ar([0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1]); rideArr = \ridez.ar([0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1]); steppa = Stepper.ar(clock, 0, 0, maxSteps); chhSelecta = Trig1.ar(Select.ar(steppa, chhArr) * clock, 0.001); ohhSelecta = Trig1.ar(Select.ar(steppa, ohhArr) * clock, 0.001); kickSelecta = Trig1.ar(Select.ar(steppa, kickArr) * clock, 0.001); snareSelecta = Trig1.ar(Select.ar(steppa, snareArr) * clock, 0.001); clapSelecta = Trig1.ar(Select.ar(steppa, clapArr) * clock, 0.001); crashSelecta = Trig1.ar(Select.ar(steppa, crashArr) * clock, 0.001); rimSelecta = Trig1.ar(Select.ar(steppa, rimArr) * clock, 0.001); rideSelecta = Trig1.ar(Select.ar(steppa, rideArr) * clock, 0.001); ohh = PlayBuf.ar(1, ohhBuf, ohhRate, ohhSelecta) * ohhVol; chh = PlayBuf.ar(1, chhBuf, chhRate, chhSelecta) * chhVol; clap = PlayBuf.ar(1, clapBuf, clapRate, clapSelecta) * clapVol; crash = PlayBuf.ar(1, crashBuf, crashRate, crashSelecta) * crashVol; rim = PlayBuf.ar(1, rimBuf, rimRate, rimSelecta) * rimVol; ride = PlayBuf.ar(1, rideBuf, rideRate, rideSelecta) * rideVol; kswing = katk + LFGauss.ar(swingDur, swingWidth).range(swingMin, swingMax); sswing = satk + LFGauss.ar(swingDur, swingWidth).range(swingMin, swingMax); kickEnv = EnvGen.ar(Env.perc(kswing, krel), kickSelecta) * kickVol; kwn = BBandPass.ar(WhiteNoise.ar()*EnvGen.ar(Env.perc(kswing,kwrel), kickSelecta)*kwAmp, kwFreq, kwBW); snareEnv = EnvGen.ar(Env.perc(sswing, srel), snareSelecta) * snareVol; kpenv = startFreq * EnvGen.ar(Env.perc(patk, prel), kickSelecta); spenv = EnvGen.ar(Env([pitchRatio, 1], [prel], \exponential), snareSelecta); wEnv = EnvGen.ar(Env.perc(watk, wrel), snareSelecta) * wVol; kick = ((kwn + SinOsc.ar(kpenv + kFreq)) * kickEnv).clip2; // GABBBAAAAAA snareTone1 = Ringz.ar(Trig.ar(snareSelecta, SampleDur.ir), snareToneFreq*spenv, s1Dec); snareTone2 = Ringz.ar(Trig.ar(snareSelecta, SampleDur.ir), sFreq*spenv, s2Dec); snare = ((snareTone1 + (snareTone2)*0.6).clip2(0.8) * tone + BBandPass.ar(WhiteNoise.ar()*wEnv, wFreq, bw)) * snareEnv; mix = (kick + snare + ohh + chh + clap + crash + rim + ride); // Mixed like this on purpose Out.ar(0, mix * amp); }).send(~s1); ) ( ~hatz = Synth(\moap, [\amp, 1], ~s1); ~hatz.set(\clapBuf, ~clap.bufnum); ~hatz.set(\crashBuf, ~crash.bufnum); ~hatz.set(\rideBuf, ~ride.bufnum); ~hatz.set(\rimBuf, ~rim.bufnum); ~hatz.set(\chhBuf, ~chh.bufnum); ~hatz.set(\ohhBuf, ~ohh2.bufnum); ) ( ~hatz.set(\clockIn, 0); ~hatz.set(\div, 2); ~hatz.set(\maxSteps, 31); ~hatz.set(\watk, 0.001); ~hatz.set(\wVol, 0.7); ~hatz.set(\wrel, 0.35); ~hatz.set(\wFreq, 3500); ~hatz.set(\ohhRate, 2); ~hatz.set(\chhRate, 2); ~hatz.set(\startFreq, 290); ~hatz.set(\trigDur, 0.001); ~hatz.set(\snareToneFreq, 185); ~hatz.set(\sFreq, 350); ~hatz.set(\tone, 0.3); ~hatz.set(\bw, 2); ~hatz.set(\clapRate, 2); ~hatz.set(\crashRate, 2); ~hatz.set(\s1Dec, 0.15); ~hatz.set(\s2Dec, 0.1); ~hatz.set(\prel, 0.003); ~hatz.set(\krel, 0.56); ~hatz.set(\kwAmp, 0.15); ) ( ~hatz.set(\ohhz, [0,1,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,1,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1]); ~hatz.set(\chhz, [0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1]); ~hatz.set(\kickz, [0,0,0,1, 0,0,0,0, 0,0,0,1, 0,0,0,0, 0,0,0,1, 0,0,0,0, 0,0,0,1, 0,0,0,0]); ~hatz.set(\snarez,[0,0,0,1, 0,1,0,0, 0,0,0,1, 0,0,0,0, 0,0,0,1, 0,0,0,0, 0,0,0,1, 0,0,0,0]); ~hatz.set(\crashz,[0,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0, 0,0,1,0, 1,0,0,0]); ~hatz.set(\clapz, [0,1,0,0, 0,0,0,1, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0, 0,0,0,0, 0,0,0,1]); ~hatz.set(\rimz, [0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1]); ~hatz.set(\ridez, [0,1,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,1,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1]); ) ( ~hatz.set(\ohhVol, 0.15); ~hatz.set(\chhVol, 0.1); ~hatz.set(\snareVol, 0.15); ~hatz.set(\kickVol, 1); ~hatz.set(\clapVol, 0.2); ~hatz.set(\crashVol, 0); ~hatz.set(\rideVol, 0.0); ~hatz.set(\rimVol, 0.15); ) ( ~hatz.free; ) // Use the same sample pack as i did, if you want. // https://audiorealism.se/downloads/TR-909-96kHz-24bit.zip
code description
TR-909 drum machine I made with a 32 step sequencer, I could not get the hi-hats, ride, etc perfectly so I opted to sample them (sorry).
use markdown for formating
category tags
comma separated, i.g. "wild, siren" (do not enter default SC class names, please)
ancestor(s)
comma separated identificators, i.g. "1-C,1-1,1-4M,1-x"
Private?
the code will be accessible by direct url and not visible in public activity
signup to submit public code without captcha
comment of change