-g -odac -m0 /* Debugger - Unfixed Bugs - BUG1 By Richard Knight 2019 Revised 2021 */ sr = 44100 ksmps = 10 nchnls = 2 ; general globals zakinit 4, 1 seed 0 gkpump init 0 ; chords to be used ginotes1[] fillarray 440, 493.88, 587.33, 659.25, 698.46, 830.61 ginotes2[] fillarray 493.88, 554.37, 587.33, 698.46, 783.99 /* chorus udo by bhob rainey */ opcode ensembleChorus, aa, akkkkiip ain, kdelay, kdpth, kmin, kmax, inumvoice, iwave, icount xin incr = 1/(inumvoice) if (icount == inumvoice) goto out ainl, ainr ensembleChorus ain, kdelay, kdpth, kmin, kmax, inumvoice, iwave, icount + 1 out: max: imax = i(kmax) if (kmax != imax) then reinit max endif iratemax unirand imax rireturn alfo oscil kdpth, iratemax + kmin, iwave adel vdelay3 ain/(inumvoice * 0.5), (kdelay + alfo) * 1000, 1000 al = ainl + adel * incr * icount ar = ainr + adel * (1 - incr * icount) xout al, ar endop /* glitch subsequencer A1 */ instr 1 istart = 0 while istart < p3 do idur random p3*0.005, p3*0.1 iprtc random 20, 1000 event_i "i", 10, istart, idur, iprtc*0.0001 idur2 random idur *1.1, idur *2 istart = istart + idur2 od endin /* glitch subsequencer A2 */ instr 10 istart = 0 ;ifreq = 880;random 300, 1000 irand random 1, 10 ifreq = 110 * irand iwav random 1, 4 while istart < p3 do event_i "i", 100, istart, p4, ifreq, iwav istart = istart + p4*0.5 od endin /* glitch tone */ instr 100 ifreqshift1 random -3, 3 ifreqshift2 random -3, 3 k1 linseg 1, 0.01, 0 inull = p5 ; just to supress warning a1 oscil 2500, p4, 1;p5 a2 oscil 2500, p4+ifreqshift1, 1;p5 a3 oscil 2500, p4+ifreqshift2, 1;p5 irf1 random 300, 16000 irf2 random 300, 16000 aL = (a1*k1) + (a2*k1*0.7) aR = (a1*k1) + (a3*k1*0.7) aL butterlp aL, irf1 aR butterlp aR, irf2 zawm aL, 1 zawm aR, 2 endin /* blip tone */ instr 101 ifreqshift1 random -10, 10 ifreqshift2 random -10, 10 k1 linseg 0, p3*0.3, 1, p3*0.4, 1, p3*0.3, 0 a1 oscil 1000, p4, p5 a2 oscil 1000, p4+ifreqshift1, p5 a3 oscil 1000, p4+ifreqshift2, p5 zawm (a1*k1) + (a2*k1*0.7), 1 zawm (a1*k1) + (a3*k1*0.7), 2 endin /* glitch subsequencer B1 */ instr 2 istart = 0 while istart < p3 do event_i "i", 100, istart, 0.01, p4, p5 istart = istart + 0.05 od endin /* master outputs */ instr 800 aL zar 3 aR zar 4 aL limit aL*2, -0dbfs, 0dbfs aR limit aR*2, -0dbfs, 0dbfs outs aL, aR zacl 3, 4 endin /* regular output */ instr 801 aL zar 1 aR zar 2 zawm aL, 3 zawm aR, 4 zacl 1, 2 endin /* reversey output */ instr 802 aL zar 1 aR zar 2 a1L, krecL sndloop aL, -1, 1, 1, 0.5 a1R, krecR sndloop aR, -1, 1, 1, 0.5 zawm a1L, 3 zawm a1R, 4 zacl 1, 2 endin /* delay feedback out */ instr 803 aL zar 1 aR zar 2 idiv = 0.25 ; 0.0625 kamp linseg 1, idiv, 0, p3-idiv, 0 apL = aL*kamp apR = aR*kamp adL init 0 adR init 0 adL delay apL + (adL*0.8), idiv adR delay apR + (adR*0.8), idiv zawm apL+adL, 3 zawm apR+adR, 4 zacl 1, 2 endin /* kick */ instr 901 aax linseg 300, p3*0.05, 100, p3*0.1, 40, p3*0.8, 20 aenv linseg 1,p3*0.2,0.6,p3*0.2,0.4,p3*0.2,0.1,p3*0.2,0 apit linseg 500, p3*0.2, 100, p3*0.4, 40, p3*0.2, 30, p3*0.2, 20 a2 oscil 8500,apit*0.35,1 a3 oscil 9500,apit*0.2,1 an noise 3000,-0.1 ax1 oscil 300, 400, 1 ax2 oscil 80, 900, 1 aaxenv linseg 0.2, p3*0.02, 0 akx = (ax1*ax2)*aaxenv aout = a2+a3 ; + ax gkpump = k(aenv) amix = p4*((aout*aenv)+akx) amix pareq amix, 100, 0.1, 0.9 adist distort amix, 0.43, 1 aeq1 pareq adist, 60, 1.5, 2 aeq2 pareq aeq1, 100, 0.1, 0.9 aout pareq aeq2, 5000, 1.8, 0.5 aout *= 2 zawm aout*0.7, 1 zawm aout*0.7, 2 endin /* clap */ instr 902 k1 linseg 1, p3*0.1, 0, p3*0.1, 1, p3*0.1, 0, p3*0.1, 1, p3*0.2, 0, p3*0.1, 1, p3*0.3, 0 a1 noise 10000, 0.5 a2 noise 10000, -0.5 a3 butterbp a1, 1000, 1800 a4 butterbp a2, 1000, 1800 a5 pareq a3, 400, 3.5, 0.5 a6 pareq a4, 400, 3.5, 0.5 zawm a5*k1*1.5, 1 zawm a6*k1*1.5, 2 endin /* clap b */ instr 9020 k1 linseg 1, p3*0.1, 0, p3*0.1, 1, p3*0.1, 0, p3*0.1, 1, p3*0.2, 0, p3*0.1, 1, p3*0.3, 0 a1 noise 10000, 0.1 a2 noise 10000, -0.1 a3 butterlp a1, 1600 a4 butterlp a2, 1600 a5 pareq a3, 300, 1.5, 0.5 a6 pareq a4, 300, 1.5, 0.5 zawm a5*k1*1.5, 1 zawm a6*k1*1.5, 2 endin /* hi hat */ instr 903 ifreqshift1 random 9, 11 ifreqshift2 random 9, 11 kpt1 linseg 1, p3*0.2, 0.8, p3*0.2, 1.2, p3*0.2, 0.8, p3*0.2, 1.2, p3*0.2, 0.8 k1 line p4, p3, 0 a1 noise 9000, 0.1 a2 noise 9000, 0.1 a3 butterhp a1, 10000 a4 butterhp a2, 10000 as1 oscil 4000, 7000*(ifreqshift1*0.1)*p5, 1 as2 oscil 4000, 8000*p5*kpt1, 1 as3 oscil 4000, 12000*p5*kpt1, 1 as4 oscil 4000, 16000*(ifreqshift2*0.1)*p5, 1 aL = a3 + as1 + as3 aR = a4 + as2 + as4 zawm aL*k1*0.93, 1 zawm aR*k1*0.93, 2 endin /* fm bell */ instr 904 irand1 random 1, 100 irand2 random 1, 100 irfreq1 random 600, 19000 irfreq2 random 600, 19000 k1 line irand1*0.1, p3, irand2*0.1 k2 linseg p5, p3*0.4, 0.4, p3*0.6, 0 a1 fmbell 8000, p4, k1, 4, 0, 0, 1, 1, 1, 1, 4 a2 fmbell 8000, p4, k1, 2, 0, 0, 1, 1, 1, 3, 4 a1 butterlp a1, irfreq1 a2 butterlp a2, irfreq2 zawm a1*k2*0.9, 1 zawm a2*k2*0.9, 2 irand random 0, 100 if (irand > 80) then idur random 10, 100 event_i "i", 904, idur*0.005, idur*0.001, p4*2, p5*0.5 endif endin /* fm rhode */ instr 905 ifreq random 600, 22050 irand1 random 1, 100 irand2 random 1, 100 k1 line irand1*0.1, p3, irand2*0.1 k2 linseg p5, p3*0.4, 0.4, p3*0.6, 0 a1 fmrhode 8000, p4, k1, 4, 0, 0, 1, 1, 1, 1, 4 a2 fmrhode 8000, p4, k1, 2, 0, 0, 1, 1, 1, 3, 4 a3 butterlp a1, ifreq a4 butterlp a2, ifreq zawm a3*k2*0.5, 1 zawm a4*k2*0.5, 2 endin /* fm wurlie */ instr 906 ifreq random 600, 4000 irand1 random 1, 100 irand2 random 1, 100 k1 line irand1*0.1, p3, irand2*0.1 k2 linseg p5, p3*0.3, 0.2, p3*0.7, 0 a1 fmwurlie 8000, p4, k1, 4, 0, 0, 1, 3, 1, 1, 4 a2 fmwurlie 8000, p4, k1, 2, 0, 0, 1, 1, 1, 3, 4 a3 butterlp a1, ifreq a4 butterlp a2, ifreq zawm a3*k2*0.9, 1 zawm a4*k2*0.9, 2 endin /* filter rhodey */ instr 907 ifn random 1, 4 kfq oscili 0.5, p5, ifn a1 fmrhode 8000, p4, 4, 8, 0, 0, 1, 1, 3, 1, 4 a2 fmrhode 8000, p4, 8, 4, 0, 0, 1, 3, 1, 1, 4 a3 butterlp a1, 200 * (kfq + 0.5) a4 butterlp a2, 200 * (kfq + 0.5) aL, aR ensembleChorus a3, 0.005, 0.005, 0.1, 0.6, 4, 1 zawm 0.6 * (aL + a3), 1 zawm 0.6 * (aR + a4), 2 endin /* bass */ instr 908 k1 linseg 2.1, p3*0.2, 2, p3*0.8, 2 k2 line 10, p3, 0 iamp random 500, 800 kamp linseg iamp*0.001, p3*0.1, 0.5, p3*0.9, 0 aL foscil 8000, p4, 4, k1, k2, 1 aR foscil 8000, p4, 3.9, k1, k2, 1 aL1 pareq aL, 440, 0.4, 0.7 aR1 pareq aR, 440, 0.4, 0.7 zawm aL1 * kamp, 1 zawm aR1 * kamp, 2 endin /* filter rhodey */ instr 909 ifn random 1, 4 kfq oscili 0.5, p5 * 4, ifn kpt line p4, p3, p4*1.1 a1 fmrhode 8000, kpt, 4, 8, 0, 0, 1, 1, 3, 1, 4 a2 fmrhode 8000, kpt, 8, 4, 0, 0, 1, 3, 1, 1, 4 a3 butterlp a1, 200 * (kfq + 0.5) a4 butterlp a2, 200 * (kfq + 0.5) aL, aR ensembleChorus a3, 0.005, 0.005, 0.1, 0.6, 4, 1 zawm 0.8 * (aL + a3), 1 zawm 0.8 * (aR + a4), 2 endin /* crasher */ instr 910 kflt linseg 1, p3*0.4, 0.1, p3*0.6, 0 aL noise 900, 0.9 aR noise 900, -0.1 kfq1 oscili 5, 14000, 2 kfq2 oscili 10, 15000, 4 aL1 butterlp aL, 22050*kflt aR1 butterlp aR, 22050*kflt kamp linseg 1, p3*0.1, 0.2, p3*0.7, 0.05, p3*0.2, 0 aL = aL1*kfq1*kfq2*0.5*kamp aR = aR1*kfq1*kfq2*0.5*kamp aLr comb aL, 1, 0.12 aRr comb aL, 1, 0.1 zawm aL+aLr, 1 zawm aR+aRr, 2 endin /* stochastic sequencer */ instr 999 ipos = 0 iseq = 0 ieven = 0 ibeatlength = 0.125 ; create mixer items ; master outs event_i "i", 800, 0, p3 ; standard mixer event_i "i", 801, 0, p3 - 2 ; reverse, delay thing or offbeat kick - last two bars of each section irand random 0, 100 if (irand > 50) then event_i "i", 802, p3 - 2, 2 elseif (irand < 90) then event_i "i", 803, p3 - 2, 2 else event_i "i", 801, p3 - 2, 2 event_i "i", 901, p3 - (ibeatlength * 2), 0.15, 1 endif ; create score items ipos = 0 while ipos < p3 do ; arrange the shuffle if (iseq == 1 || iseq == 3) then iposadj = ipos + 0.05 else iposadj = ipos endif ; crasher if (ipos == 0 && (p4 == 3 || p4 == 4 || p4 = 5)) then event_i "i", 910, iposadj, 4 endif ; bass irand random 0, 100 ilastbass = -1 if (irand > 70 && (p4 == 3 || p4 == 4 || p4 == 5)) then irandindex random 0, lenarray(ginotes1) - 2 ifreq = ginotes1[irandindex] * 0.05 if (ifreq != ilastbass) then ; eh, sounds to be doing it event_i "i", 908, iposadj, 0.2, ifreq ilastbass = ifreq endif elseif (iseq == 2 && ieven == 1 && irand > 60) then event_i "i", 908, iposadj, 0.1, ginotes2[1] * 0.025 endif ; kick irand random 0, 100 if (iseq == 0) then iamp random 0, 1000 event_i "i", 901, iposadj, 0.12, 1 irand random 0, 100 if (irand > 90) then event_i "i", 901, iposadj+ibeatlength+0.05, 0.45, iamp*0.0005 endif endif ; clap syncop irand random 0, 100 if (irand > 90 && (iseq == 1 || iseq == 3)) then event_i "i", 9020, iposadj, 0.02 endif ; clap regular if (iseq == 0 && ieven == 1 && p4 >= 3) then event_i "i", 902, iposadj, 0.05 endif ; hat regular if (iseq == 2) then ilen = 0.02 iamp =0.9 if (p4 == 3) then iamp = 0.6 ilen = 0.1 endif event_i "i", 903, iposadj, ilen, iamp, 1.2 endif ; hat irand random 0, 100 if (irand > 50 && (p4 == 0 || p4 == 1 || p4 == 2)) then iamp random 0, 1000 event_i "i", 903, iposadj, 0.00, iamp*0.001, 1 irand random 0, 100 if (irand > 90) then event_i "i", 903, iposadj + 0.05, 0.01, iamp*0.0008, 1 endif endif ; triglitch irand random 0, 100 if (irand > 85 && (p4 == 1 || p4 == 2 || p4 == 4)) then idur random 10, 100 ;event_i "i", 10, iposadj, 0.1 ;idur*0.01 ;i1 retrigs iprtc random 20, 1000 event_i "i", 10, iposadj, idur*0.001, iprtc*0.0001 endif ; tone irand random 0, 100 if (irand > 75 && (p4 == 0 || p4 == 1 || p4 == 2 || p4 == 5 || p4 == 8)) then iwin random 1, 4 irandindex random 0, lenarray(ginotes1) - 1 ifreq = ginotes1[irandindex] event_i "i", 100, iposadj, 0.2, ifreq, iwin endif ; fm rhode onbeat regular if (ieven == 0 && iseq = 0 && (p4 == 3 || p4 == 5)) then iplay = 1 if (p4 == 5) then irandplay random 0, 100 if (irandplay < 80) then iplay = 0 endif endif if (iplay == 1) then irand random 0, 100 if (irand > 20) then inst = 907 else inst = 909 endif index = 0 imod random 400, 4000 until index == lenarray(ginotes2) do ifreq = ginotes2[index] event_i "i", inst, iposadj, 0.5, ifreq, imod * 0.001 index += 1 od endif endif ; fm rhode irand random 0, 100 if (irand > 90 && (((iseq == 0 || iseq == 2) && (p4 == 2 || p4 == 4)) || ((iseq == 1 || iseq == 3) && (p4 == 3 || p4 == 6)))) then idur random 10, 100 index = 0 until index == lenarray(ginotes1) do ifreq = ginotes1[index] event_i "i", 905, iposadj, idur*0.001, ifreq, 1 index += 1 od endif ; fm rhode off irand random 0, 100 if (irand > 90 && (iseq == 1 || iseq == 3) && (p4 == 1 || p4 == 2 || p4 == 6 || p4 == 7)) then idur random 10, 100 index = 0 until index == lenarray(ginotes2) do ifreq = ginotes2[index] event_i "i", 906, iposadj, idur*0.001, ifreq, 1 index += 1 od endif ; bell tone irand random 0, 100 if (irand > 85 && (iseq == 1 || iseq == 3) && (p4 == 1 || p4 == 2 || p4 == 4 || p4 = 7)) then idur random 10, 100 irandindex random 0, lenarray(ginotes1) - 1 ifreq = ginotes1[irandindex] event_i "i", 904, iposadj, idur*0.001, ifreq, 1 endif ; increment beat position ipos = ipos + ibeatlength ; increment beat per bar count or reset if (iseq == 3) then iseq = 0 else iseq = iseq + 1 endif ; switch even/odd bar if (ieven == 0 && iseq == 0) then ieven = 1 elseif (ieven == 1 && iseq == 0) then ieven = 0 endif od endin f1 0 16384 10 1 ; Sine f2 0 16384 10 1 0.5 0.3 0.25 0.2 0.167 0.14 0.125 .111 ; Sawtooth f3 0 16384 10 1 0 0.3 0 0.2 0 0.14 0 .111 ; Square f4 0 16384 10 1 1 1 1 0.7 0.5 0.3 0.1 ; Pulse i999 0 32 0 i999 32 32 1 i999 64 32 2 i999 96 32 4 i999 128 32 4 i999 160 64 3 i999 224 32 5 i999 256 32 6 i999 288 32 7 i999 320 32 8 i910 352 5 i800 352 5 i801 352 5