print_off() tempo = 128 // SET TEMPO <-- dur4 = 60/tempo; dur8 = 30/tempo; dur12 = 20/tempo; dur16 = 15/tempo; st = 0; maxVol = 20000 // SET MAXIMUM VOLUME <-- dynFF = maxVol*6/7; dynF = maxVol*5/7; dynMF = maxVol*4/7; dynMP = maxVol*3/7; dynP = maxVol*2/7; dynPP = maxVol/7; dynPPP = maxVol/10; dynPPPP = maxVol/20; pullLRough = makeconnection("inlet", 1, 0) // all GameTrak values are clamped to 0.0 - 1.0 before inlet sideLRough = makeconnection("inlet", 2, 0) // input values have zipper noise ... forwardLRough = makeconnection("inlet", 3, 0) pullL = makefilter(pullLRough, "smooth", 80) // ... so input values should be smoothed sideL = makefilter(sideLRough, "smooth", 80) forwardL = makefilter(forwardLRough, "smooth", 80) pullRRough = makeconnection("inlet", 4, 0) // and the same for the right side (with cord facing outward) of the controller sideRRough = makeconnection("inlet", 5, 0) forwardRRough = makeconnection("inlet", 6, 0) pullR = makefilter(pullRRough, "smooth", 80) // "pull" refers to amount of string pulled out sideR = makefilter(sideRRough, "smooth", 80) // "side" refers to lateral angle (with cord facing outward) forwardR = makefilter(forwardRRough, "smooth", 80) // "forward" refers to back-and-forth angle // STEREO(outsk, insk, dur, AMP, P4-N: input/output channel pan assigns) // template code for sound file playback: // rtinput("MMBUF", "bufferNameGoesHere"); STEREO(st, 0, durArr1[i], 1, 0, 1) bus_config("AMINST", "out0-1") bus_config("FMINST", "out0-1") bus_config("WAVETABLE", "out0-1") bus_config("VWAVE", "out0-1") bus_config("STEREO", "in0-1", "out0-1") bus_config("TRANS", "in0-1", "out0-1") // TABLES: envPerc = maketable("curve", 1000, 0,0,0, 5,1,0, 95,1,0, 100,0) envCurveUp = maketable("curve", 1000, 0,0,3, 1,1) envCurveUpAmp = maketable("curve", 1000, 0,0,1, 252,1,20, 255,0) envRev = maketable("line", 1000, 0,0, 95,1, 100,0 ) envSharpRev = maketable("curve", 1000, 0,0,3, 95,1,0, 100, 0 ) envDown = maketable("line", 1000, 0,1, 1,0 ) envUp = maketable("line", 1000, 0,0, 1,1 ) envFlat = maketable("line", 1000, 0,1, 1,1 ) envSwoop = maketable("curve", 1000, 0,0,0, 500,0,1, 999,1 ) envTri = maketable("line", 1000, 0,0, 1,1, 2,0 ) waveSaw8 = maketable("wave", 1000, "saw8") waveSaw = maketable("wave", 1000, "saw") waveTri17 = maketable("wave", 1000, "tri17") waveSine = maketable("wave", 1000, "sine") waveSquare = maketable("wave", 1000, "square") waveSquare5 = maketable("wave", 1000, "square5") waveSquare9 = maketable("wave", 1000, "square9") waveTransUp = maketable("wave", 1000, 0, 1, 0, 0.4, 0, 0.2, 0, 0.1, 0, 0.05, 0, 0.025, 0, 0.0125) // simulates 8va transposition waveCello = maketable("wave3", 1000, 1,0.003689,0, 2.0167,0.206561,0, 3.0234,0.038787,0, 4.03,0.094815,0, 5.039,0.247546,0, 6.0454,0.049762,0, 7.054,0.046767,0, 8.0624,0.036586,0, 9.067,0.038633,0, 10.077,0.058350,0, 11.0926,0.025122,0, 12.0972,0.009955,0, 13.1005,0.042133,0, 14.1079,0.041724,0, 15.1214,0.008821,0, 16.1241,0.017887,0, 19.1457,0.014579,0) waveBassoon = maketable("wave3", 1000, 1,0.926994,0, 3,0.645786,0, 6,0.412348,0, 7,0.436233,0, 8,0.547544,0, 12,0.690852,0, 16,0.485354,0, 18,0.191528,0, 19,0.410545,0, 21,0.735466,0, 24,0.229833,0, 25,0.305543,0) waveBrass = maketable("wave3", 1000, 1,0.021460,0, 3,0.009213,0, 6,0.001567,0, 7,0.392916,0, 8,0.001070,0, 10,0.022249,0, 12,0.002323,0, 14,1.000000,0, 15,0.003873,0, 16,0.357763,0, 17,0.018961,0, 19,0.003503,0, 20,0.358359,0, 22,0.002245,0, 23,0.039743,0, 24,0.015839,0, 26,0.000723,0, 27,0.022608,0, 30,0.001054,0, 32,0.034359,0, 34,0.032466,0, 38,0.000480,0, 41,0.002036,0, 46,0.007188,0, 49,0.002422,0, 61,0.008005,0, 65,0.005335,0, 68,0.009941,0, 69,0.036334,0, 75,0.002278,0, 81,0.005031,0, 92,0.000706,0, 103,0.168356,0, 106,0.000419,0, 116,0.000348,0, 137,0.042452,0, 138,0.059201,0, 139,0.001026,0, 170,0.001716,0, 171,0.016539,0, 172,0.026519,0, 186,0.000932,0, 204,0.000215,0, 205,0.032372,0, 206,0.115786,0, 208,0.000337,0, 224,0.000756,0, 233,0.000463,0, 240,0.088098,0, 242,0.000596,0, 266,0.000182,0, 274,0.016054,0, 275,0.032858,0, 308,0.001219,0, 342,0.003095,0, 343,0.016319,0, 344,0.008005,0, 376,0.004551,0, 378,0.000392,0, 410,0.003349,0, 412,0.003288,0, 445,0.004292,0, 446,0.007608,0, 479,0.001330,0) waitForCym = 25.25 // outskip from beginning of 16-bar phrase if wanting to put revCym at end (must change if tempo changes) // SCORE: srand() wave = waveSine // can change these parameters for varying chord timbre in future sections octDown1 = 1 octUp2 = 2 octDown3 = -1 // INTRO MAXMESSAGE(0, 1) // WAS (0, 0) TO BEGIN WITH groove~ OFF, BUT LET'S TRY THIS AMINST(0, dur16*252, dynMF*envCurveUpAmp, cpspch(6.10)*(7*envCurveUp), 12*forwardL, 1, envFlat, waveCello, waveSine) // T1a <-- AMINST(0, dur16*252, dynMF*envCurveUpAmp, cpspch(6.10)*(7*envCurveUp)+(0.5-sideL)*5, 12*forwardL, 1, envFlat, waveCello, waveSine) // T1b <-- AMINST(0, dur16*252, dynMF*envCurveUpAmp, cpspch(5.10)*(7*envCurveUp), 12*forwardR, 0, envFlat, waveCello, waveSine) // T1c <-- AMINST(0, dur16*252, dynMF*envCurveUpAmp, cpspch(5.10)*(7*envCurveUp)+(0.5-sideL)*5, 12*forwardR, 0, envFlat, waveCello, waveSine) // T1d <-- rtinput("MMBUF", "revCym"); STEREO(waitForCym, 0, 5, 0.8, 0, 1) // reversed cymbal sound (need to change outskip if changing tempo) // revCym <-- for ( k = 0; k < 4; k = k + 1 ) { for ( j = 0; j < 4; j = j + 1 ) { pArr1 = { 7.03, 7.02, 7.00, 7.00 } // bass line pArr2 = { 8.07, 8.09, 8.10, 8.10 } // top line pArr3 = { 7.10, 7.10, 7.10, 7.10 } // inner voice for ( i = 0; i < 16; i = i + 1 ) { counter = ( k*64 + j*16 + i ) / 255 // counts from 0.0 to 1.0 (0/255 to 255/25) mod1 = 0.07 modArr1 = { 1, 2, 3, 1, 10, 3, 4, 8, 2, 8, 3, 4, 10, 6, 4, 2 } pShiftB = pickrand( 0.00, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006 ) pShiftD = pickrand( 0.00, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006 ) envASwitch = pickrand( 0, 1, 2 ) if ( envASwitch == 0 ) { dMod1 = 0.5 env = envDown } else if ( envASwitch == 1 ) { dMod1 = 0.7 env = envPerc } else { dMod1 = 0.9 env = envRev } if ( k == 3 && j == 3 && i > 11 ) dMod1 = 0 FMINST(st, dur16*dMod1, dynP*env*counter*counter*counter, pArr1[j]-octDown1, pArr1[j]-octDown1+mod1, modArr1[i], modArr1[i], 0, wave, envFlat) // INST 1a <-- FMINST(st, dur16*dMod1, dynP*env*counter*counter*counter, pArr1[j]-octDown1+pShiftB, pArr1[j]-octDown1+mod1+pShiftB, modArr1[i], modArr1[i], 0, wave, envFlat) // INST 1b <-- FMINST(st, dur16*dMod1, dynP*env*counter*counter*counter, pArr1[j]-octDown1, pArr1[j]-octDown1+mod1, modArr1[i], modArr1[i], 1, wave, envFlat) // INST 1c <-- FMINST(st, dur16*dMod1, dynP*env*counter*counter*counter, pArr1[j]-octDown1+pShiftD, pArr1[j]-octDown1+mod1+pShiftD, modArr1[i], modArr1[i], 1, wave, envFlat) // INST 1d <-- FMINST(st, dur16*dMod1, dynPPP*env, pArr2[j]+octUp2, pArr2[j]+octUp2+mod1, modArr1[i], modArr1[i], 0, wave, envFlat) // INST 2a <-- FMINST(st, dur16*dMod1, dynPPP*env, pArr2[j]+octUp2+pShiftB+octUp2, pArr2[j]+1+mod1+pShiftB, modArr1[i], modArr1[i], 0, wave, envFlat) // INST 2b <-- FMINST(st, dur16*dMod1, dynPPP*env, pArr2[j]+octUp2, pArr2[j]+octUp2+mod1, modArr1[i], modArr1[i], 1, wave, envFlat) // INST 2c <-- FMINST(st, dur16*dMod1, dynPPP*env, pArr2[j]+octUp2+pShiftD, pArr2[j]+octUp2+mod1+pShiftD, modArr1[i], modArr1[i], 1, wave, envFlat) // INST 2d <-- FMINST(st, dur16*dMod1, dynPPP*env*counter, pArr3[j]-octDown3, pArr3[j]-octDown3+mod1, modArr1[i], modArr1[i], 0, wave, envFlat) // INST 3a <-- FMINST(st, dur16*dMod1, dynPPP*env*counter, pArr3[j]-octDown3+pShiftB, pArr3[j]-octDown3+mod1+pShiftB, modArr1[i], modArr1[i], 0, wave, envFlat) // INST 3b <-- FMINST(st, dur16*dMod1, dynPPP*env*counter, pArr3[j]-octDown3, pArr3[j]-octDown3+mod1, modArr1[i], modArr1[i], 1, wave, envFlat) // INST 3c <-- FMINST(st, dur16*dMod1, dynPPP*env, pArr3[j]-octDown3+pShiftD, pArr3[j]-octDown3+mod1+pShiftD, modArr1[i], modArr1[i], 1, wave, envFlat) // INST 3d <-- st = st + dur16 } // close i loop } // close j loop } // close k loop MAXMESSAGE(st-dur4*4, 1) // enable groove~ sound file play (one measure ago, but in performance try to fade that in over transition) // DROP 1 of 3 mute2 = 1 // mute is off when mute2 = 1 gliss2 = 0 // by default, no gliss rtinput("MMBUF", "cym"); STEREO(st, 0, 5, 0.9, 0, 1) for ( k = 0; k < 4; k = k + 1 ) { for ( j = 0; j < 4; j = j + 1 ) { dArrK = { 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 } dArr1 = { 6,0,0,0, 0,0,10,0, 0,0,0,0, 0,0,0,0 } pArr1 = { 5.07, 5.07, 5.03, 5.02 } // set by pArr1[j] pArr2 = { 5.07, 5.07, 5.09, 5.10 } // set by pArr1[j] dArr2 = { 0,0,0,0, 2,0,0,1, 0,0.5,0,0, 4,0,0,0 } if ( j == 1 ) { dArr1 = { 0,0,0,0, 0,0,0,0, 0,0,2,0, 0,2,0,0 } } if ( j == 2 ) { dArr1 = { 8,0,0,0, 0,0,0,0, 0,0,0,0, 0,2,0,0 } } if ( j == 1 && ( k == 1 || k == 3 ) ) { dArr1 = { 0,0,0,0, 6,0,0,0, 0,0,6,0, 0,0,0,0 } pArr1 = { 5.07, 5.10, 5.03, 5.02 } // set by pArr1[j] } if ( j == 3 ) { dArr1 = { 8,0,0,0, 0,0,0,0, 0,0,0,0, 0,2,0,0 } } for ( i = 0; i < 16; i += 1) { wave2Switch = pickrand(0,1,2,3) if ( wave2Switch == 0 ) wave2 = waveSine else if ( wave2Switch == 1 ) wave2 = waveSquare9 else if ( wave2Switch == 2 ) wave2 = waveTri17 else wave2 = waveCello mute2 = pickrand(1,1,0) // (muted when mute2 = 0) carOct2 = pickrand(2,3,4) modOct2 = pickrand(3.07, 3.071, 4.003, 4.072, 5.004, 5.075) gliss2 = pickrand(0,1) rtinput("MMBUF", "kick1"); STEREO(st, 0, 0.5*dArrK[i], 0.6, 0, 1) // INST K <-- FMINST(st, dur16*dArr1[i], 28000*envRev, pArr1[j], pArr1[j]+1.00, 1, 4, 0.3, waveBassoon, envRev) // INST 1a <-- FMINST(st, dur16*dArr1[i], 28000*envRev, pArr1[j]+0.0002, pArr1[j]+1.0002, 1, 4, 0.7, waveCello, envRev) // INST 1b <-- FMINST(st, dur16*dArr2[i]*mute2, dynMP*envRev, pArr2[j]+carOct2+gliss2*0.12*envDown, pArr2[j]+modOct2+gliss2*0.24*envDown, 1, 4, 0.3, wave2, envRev) // INST 2a <-- FMINST(st, dur16*dArr2[i]*mute2, dynMP*envRev, pArr2[j]+carOct2+0.0005+gliss2*0.12*envUp, pArr2[j]+modOct2+gliss2*0.24*envDown, 1, 4, 0.7, wave2, envRev) // INST 2b <-- oct3 = pickrand(0,1,2) pShift3 = pickrand( 0.00, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006 ) mod3 = random()*5 pan3 = pickrand(0.0, 0.2, 0.4, 0.6, 0.8, 1.0) pArr3 = { 7.03, 7.02, 7.00, 7.00 } // bass line FMINST(st, dur16*0.7, dynPPPP*envPerc, 8.10+oct3, 9.05+oct3, mod3, mod3, pan3, waveSine, envFlat) // INST 3a <-- FMINST(st, dur16*0.7, dynPPPP*envPerc, 9.10+oct3+pShift3, 10.05+oct3+pShift3, mod3, mod3, pan3, waveSine, envFlat) // INST 3b <-- st += dur16 } // close i loop } // close j loop } // close k loop // DROP 2 of 3 swoopSwitch1 = 1 // bass glissing up ENABLED by default rtinput("MMBUF", "revCym"); STEREO(st+waitForCym, 0, 5, 0.8, 0, 1) // reversed cymbal sound (need to change outskip if changing tempo) // revCym <-- for ( k = 0; k < 4; k = k + 1 ) { for ( j = 0; j < 4; j = j + 1 ) { dArrK = { 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 } dArr1 = { 8,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } pArr1 = { 5.07,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } // set by pArr1[i] swoopSwitch1 = 1 // bass glissing up ENABLED by default swoopSpan1 = 0.12 pArr2 = { 5.07, 5.07, 5.09, 5.10 } // set by pArr1[j] dArr2 = { 0,0,0,0, 2,0,0,1, 0,0.5,0,0, 4,0,0,0 } if ( j == 1 ) { dArr1 = { 0,0,0,0, 6,0,0,0, 0,0,6,0, 0,0,0,0 } pArr1 = { 0,0,0,0, 5.10,0,0,0, 0,0,5.10,0, 0,0,0,0 } swoopSwitch1 = 0 } if ( j == 2 ) { dArr1 = { 8,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } pArr1 = { 5.03,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } } if ( j == 3 ) { dArr1 = { 8,0,0,0, 0,0,0,0, 0,0,0,0, 2,0,2,0 } pArr1 = { 5.02,0,0,0, 0,0,0,0, 0,0,0,0, 5.03,0,5.02,0 } } if ( j == 0 && ( k == 1 || k == 3 ) ) { pArr1 = { 5.00,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } } if ( j == 1 && ( k == 1 || k == 3 ) ) { pArr1 = { 0,0,0,0, 5.00,0,0,0, 0,0,5.00,0, 0,0,0,0 } } if ( j == 3 && k == 1 ) { dArr1 = { 8,0,0,0, 0,0,0,0, 8,0,0,0, 0,0,0,0 } pArr1 = { 5.05,0,0,0, 0,0,0,0, 6.02,0,0,0, 0,0,0,0 } } if ( j == 3 && k == 3 ) { dArr1 = { 12,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } pArr1 = { 5.05,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } } for ( i = 0; i < 16; i += 1) { counter = ( k*64 + j*16 + i ) / 255 // counts from 0.0 to 1.0 (0/255 to 255/25) if ( j == 3 && i > 11 ) swoopSwitch1 = 0 wave2Switch = pickrand(0,1,2,3) if ( wave2Switch == 0 ) wave2 = waveSine else if ( wave2Switch == 1 ) wave2 = waveSquare9 else if ( wave2Switch == 2 ) wave2 = waveTri17 else wave2 = waveCello mute2 = pickrand(1,1,0) // (muted when mute2 = 0) carOct2 = pickrand(2,3,4) modOct2 = pickrand(3.07, 3.071, 4.003, 4.072, 5.004, 5.075) gliss2 = pickrand(0,1) rtinput("MMBUF", "kick1"); STEREO(st, 0, 0.5*dArrK[i], 0.6, 0, 1) // INST K <-- FMINST(st, dur16*dArr1[i], 28000*envRev, pArr1[i]+swoopSwitch1*envSwoop*swoopSpan1, pArr1[i]+1.00+swoopSwitch1*envSwoop*swoopSpan1, 1, 4, 0.3, waveBassoon, envRev) // INST 1a <-- FMINST(st, dur16*dArr1[i], 28000*envRev, pArr1[i]+0.0002+swoopSwitch1*envSwoop*swoopSpan1, pArr1[i]+1.0002+swoopSwitch1*envSwoop*swoopSpan1, 1, 4, 0.7, waveCello, envRev) // INST 1b <-- FMINST(st, dur16*dArr2[i]*mute2, dynMP*envRev, pArr2[j]+carOct2+gliss2*0.12*envDown, pArr2[j]+modOct2+gliss2*0.24*envDown, 1, 4, 0.3, wave2, envRev) // INST 2a <-- FMINST(st, dur16*dArr2[i]*mute2, dynMP*envRev, pArr2[j]+carOct2+0.0005+gliss2*0.12*envUp, pArr2[j]+modOct2+gliss2*0.24*envDown, 1, 4, 0.7, wave2, envRev) // INST 2b <-- oct3 = pickrand(0,1,2) pShift3 = pickrand( 0.00, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006 ) mod3 = random()*5 pan3 = pickrand(0.0, 0.2, 0.4, 0.6, 0.8, 1.0) pArr3 = { 7.03, 7.02, 7.00, 7.00 } // bass line FMINST(st, dur16*0.7, dynPPPP*envPerc, 8.10+oct3, 9.05+oct3, mod3, mod3, pan3, waveSine, envFlat) // INST 3a <-- FMINST(st, dur16*0.7, dynPPPP*envPerc, 9.10+oct3+pShift3, 10.05+oct3+pShift3, mod3, mod3, pan3, waveSine, envFlat) // INST 3b <-- FMINST(st, dur16*0.7, dynPP*envPerc*counter, pArr3[j]+oct3, pArr3[j]+oct3, mod3, mod3, pan3, waveSine, envFlat) // INST 3c <-- FMINST(st, dur16*0.7, dynPP*envPerc*counter, pArr3[j]+oct3+pShift3, pArr3[j]+oct3+pShift3, mod3, mod3, pan3, waveSine, envFlat) // INST 3d <-- st += dur16 } // close i loop } // close j loop } // close k loop // DROP 3 of 3 swoopSwitch1 = 1 // bass glissing up ENABLED by default rtinput("MMBUF", "revCym"); STEREO(st+waitForCym, 0, 5, 0.8, 0, 1) // reversed cymbal sound (need to change outskip if changing tempo) // revCym <-- for ( k = 0; k < 4; k = k + 1 ) { for ( j = 0; j < 4; j = j + 1 ) { dArrK = { 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 } dArr1 = { 8,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } pArr1 = { 5.07,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } // set by pArr1[i] swoopSwitch1 = 1 // bass glissing up ENABLED by default swoopSpan1 = 0.12 pArr2 = { 5.07, 5.07, 5.09, 5.10 } // set by pArr1[j] dArr2 = { 0,0,0,0, 2,0,0,1, 0,0.5,0,0, 4,0,0,0 } dArr4 = { 0,0,3,0, 0,0,3,0, 0,0,3,0, 0,0,3,0 } if ( j % 2 == 1 ) dArr1 = { 0,0,0,0, 6,0,0,0, 0,0,6,0, 0,0,0,0 } if ( j == 1 && ( k == 0 || k == 2 ) ) pArr1 = { 0,0,0,0, 5.09,0,0,0, 0,0,5.10,0, 0,0,0,0 } if ( j == 2 && ( k == 0 || k == 2 ) ) pArr1 = { 5.03,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } if ( j == 3 && ( k == 0 || k == 2 ) ) pArr1 = { 0,0,0,0, 5.03,0,0,0, 0,0,5.02,0, 0,0,0,0 } if ( j == 0 && ( k == 1 || k == 3 ) ) pArr1 = { 5.00,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } if ( j == 1 && ( k == 1 || k == 3 ) ) pArr1 = { 0,0,0,0, 5.00,0,0,0, 0,0,5.02,0, 0,0,0,0 } if ( j == 2 && ( k == 1 || k == 3 ) ) pArr1 = { 5.03,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } if ( j == 3 && k == 1 ) pArr1 = { 0,0,0,0, 5.03,0,0,0, 0,0,5.05,0, 0,0,0,0 } if ( j == 3 && k == 3 ) { dArr1 = { 12,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } pArr1 = { 5.02,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } swoopSpan1 = 0.36 dArr2 = { 0,0,0,0, 2,0,0,1, 0,0.5,0,0, 0,0,0,0 } dArr4 = { 0,0,3,0, 0,0,3,0, 0,0,2,0, 0,0,0,0 } } for ( i = 0; i < 16; i += 1) { counter = ( k*64 + j*16 + i ) / 255 // counts from 0.0 to 1.0 (0/255 to 255/25) halfCounter = 0 if ( k > 1 ) halfCounter = ( (k-2)*64 + j*16 + i ) / 127 // counts from 0.0 to 1.0 (0/127 to 255/127) if ( j == 3 && i > 11 ) swoopSwitch1 = 0 wave2Switch = pickrand(0,1,2,3) if ( wave2Switch == 0 ) wave2 = waveSine else if ( wave2Switch == 1 ) wave2 = waveSquare9 else if ( wave2Switch == 2 ) wave2 = waveTri17 else wave2 = waveCello mute2 = pickrand(1,1,0) // (muted when mute2 = 0) carOct2 = pickrand(2,3,4) modOct2 = pickrand(3.07, 3.071, 4.003, 4.072, 5.004, 5.075) gliss2 = pickrand(0,1) rtinput("MMBUF", "kick1"); STEREO(st, 0, 0.5*dArrK[i], 0.6, 0, 1) // INST K <-- FMINST(st, dur16*dArr1[i], 28000*envRev*(1-counter), pArr1[i]+swoopSwitch1*envSwoop*swoopSpan1, pArr1[i]+1.00+swoopSwitch1*envSwoop*swoopSpan1, 1, 4, 0.3, waveBassoon, envRev) // INST 1a <-- FMINST(st, dur16*dArr1[i], 28000*envRev*(1-counter), pArr1[i]+0.0002+swoopSwitch1*envSwoop*swoopSpan1, pArr1[i]+1.0002+swoopSwitch1*envSwoop*swoopSpan1, 1, 4, 0.7, waveCello, envRev) // INST 1b <-- FMINST(st, dur16*dArr1[i], dynF*envRev*counter, pArr1[i]+1+swoopSwitch1*envSwoop*swoopSpan1, pArr1[i]+2.00+swoopSwitch1*envSwoop*swoopSpan1, 1, 2, 0.3, waveSquare9, envUp) // INST 1c <-- FMINST(st, dur16*dArr1[i], dynF*envRev*counter, pArr1[i]+1+0.0002+swoopSwitch1*envSwoop*swoopSpan1, pArr1[i]+2.0002+swoopSwitch1*envSwoop*swoopSpan1, 1, 2, 0.7, waveSquare9, envUp) // INST 1d <-- FMINST(st, dur16*dArr2[i]*mute2, dynMP*envRev, pArr2[j]+carOct2+gliss2*0.12*envDown, pArr2[j]+modOct2+gliss2*0.24*envDown, 1, 4, 0.3, wave2, envRev) // INST 2a <-- FMINST(st, dur16*dArr2[i]*mute2, dynMP*envRev, pArr2[j]+carOct2+0.0005+gliss2*0.12*envUp, pArr2[j]+modOct2+gliss2*0.24*envDown, 1, 4, 0.7, wave2, envRev) // INST 2b <-- oct3 = pickrand(0,1,2) pShift3 = pickrand( 0.00, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006 ) mod3 = random()*5 pan3 = pickrand(0.0, 0.2, 0.4, 0.6, 0.8, 1.0) pArr3 = { 7.03, 7.02, 7.03, 7.07 } // bass line FMINST(st, dur16*0.7, dynPPPP*envPerc*(1-counter), 8.10+oct3+halfCounter*0.12, 9.05+oct3+halfCounter*0.12, mod3, mod3, pan3, waveSine, envFlat) // INST 3a <-- FMINST(st, dur16*0.7, dynPPPP*envPerc*(1-counter), 9.10+oct3+pShift3+halfCounter*0.12, 10.05+oct3+pShift3+halfCounter*0.12, mod3, mod3, pan3, waveSine, envFlat) // INST 3b <-- FMINST(st, dur16*0.7, dynPP*envPerc*(1-counter), pArr3[j]+oct3+halfCounter*0.12, pArr3[j]+oct3+halfCounter*0.12, mod3, mod3, pan3, waveSine, envFlat) // INST 3c <-- FMINST(st, dur16*0.7, dynPP*envPerc*(1-counter), pArr3[j]+oct3+pShift3+halfCounter*0.12, pArr3[j]+oct3+pShift3+halfCounter*0.12, mod3, mod3, pan3, waveSine, envFlat) // INST 3d <-- VWAVE(st, dur16*dArr4[i], 7.10+oct3+halfCounter+halfCounter*halfCounter*halfCounter*0.01, dynPPP*envRev, envSwoop, 0, waveSquare9, waveBrass) // INST 4a <-- VWAVE(st, dur16*dArr4[i], 8.102+oct3+halfCounter*halfCounter*halfCounter*0.02, dynPPP*envRev, envSwoop, 0, waveSquare9, waveBrass) // INST 4b <-- VWAVE(st, dur16*dArr4[i], pArr3[j]+0.001+oct3+halfCounter*halfCounter*halfCounter*0.03, dynPPP*envRev, envSwoop, 0, waveSquare9, waveBrass) // INST 4c <-- VWAVE(st, dur16*dArr4[i], pArr3[j]+0.003+oct3+halfCounter*halfCounter*halfCounter*0.04, dynPPP*envRev, envSwoop, 0, waveSquare9, waveBrass) // INST 4d <-- VWAVE(st, dur16*dArr4[i], 7.101+oct3+halfCounter*halfCounter*halfCounter*0.05, dynPPP*envRev, envSwoop, 1, waveSquare9, waveBrass) // INST 4e <-- VWAVE(st, dur16*dArr4[i], 8.103+oct3+halfCounter*halfCounter*halfCounter*0.06, dynPPP*envRev, envSwoop, 1, waveSquare9, waveBrass) // INST 4f <-- VWAVE(st, dur16*dArr4[i], pArr3[j]-1+oct3+halfCounter*halfCounter*halfCounter*0.07, dynPPP*envRev, envSwoop, 1, waveSquare9, waveBrass) // INST 4g <-- VWAVE(st, dur16*dArr4[i], pArr3[j]+0.002+oct3+halfCounter*halfCounter*halfCounter*0.08, dynPPP*envRev, envSwoop, 1, waveSquare9, waveBrass) // INST 4h <-- VWAVE(st, dur16*dArr4[i], 6.071+oct3+halfCounter*halfCounter*halfCounter*0.09, dynPPP*envRev, envSwoop, 0, waveSquare9, waveBrass) // INST 4i <-- VWAVE(st, dur16*dArr4[i], 7.073+oct3+halfCounter*halfCounter*halfCounter*0.10, dynPPP*envRev, envSwoop, 0, waveSquare9, waveBrass) // INST 4j <-- VWAVE(st, dur16*dArr4[i], 6.07+oct3+halfCounter*halfCounter*halfCounter*0.11, dynPPP*envRev, envSwoop, 1, waveSquare9, waveBrass) // INST 4k <-- VWAVE(st, dur16*dArr4[i], 7.072+oct3+halfCounter*halfCounter*halfCounter*0.12, dynPPP*envRev, envSwoop, 1, waveSquare9, waveBrass) // INST 4l <-- st += dur16 } // close i loop } // close j loop } // close k loop MAXMESSAGE(st - dur4*2, 0) // disable groove~ sound file play (half measure ago) // SWOOP rtinput("MMBUF", "cym"); STEREO(st, 0, 5, 0.9, 0, 1) AMINST(st, dur16*252, dynMP*envCurveUpAmp, cpspch(5.07)*(7*envCurveUp), 12*forwardL, 1, envFlat, waveCello, waveSine) // T1a <-- AMINST(st, dur16*252, dynMP*envCurveUpAmp, cpspch(5.07)*(7*envCurveUp)+(0.5-sideL)*5, 12*forwardL, 1, envFlat, waveCello, waveSine) // T1b <-- AMINST(st, dur16*252, dynMP*envCurveUpAmp, cpspch(4.07)*(7*envCurveUp), 12*forwardR, 0, envFlat, waveCello, waveSine) // T1c <-- AMINST(st, dur16*252, dynMP*envCurveUpAmp, cpspch(4.07)*(7*envCurveUp)+(0.5-sideL)*5, 12*forwardR, 0, envFlat, waveCello, waveSine) // T1d <-- AMINST(st, dur16*252, dynF*envDown, cpspch(6.07)*(7*envCurveUp), 12*forwardL, 1, envFlat, waveCello, waveSine) // T1e <-- AMINST(st, dur16*252, dynF*envDown, cpspch(6.07)*(7*envCurveUp)+(0.5-sideL)*5, 12*forwardL, 1, envFlat, waveCello, waveSine) // T1f <-- AMINST(st, dur16*252, dynF*envDown, cpspch(5.07)*(7*envCurveUp), 12*forwardR, 0, envFlat, waveCello, waveSine) // T1g <-- AMINST(st, dur16*252, dynF*envDown, cpspch(5.07)*(7*envCurveUp)+(0.5-sideL)*5, 12*forwardR, 0, envFlat, waveCello, waveSine) // T1h <-- rtinput("MMBUF", "revCym"); STEREO(st+waitForCym, 0, 5, 0.8, 0, 1) // reversed cymbal sound (need to change outskip if changing tempo) // revCym <-- for ( k = 0; k < 4; k = k + 1 ) { for ( j = 0; j < 4; j = j + 1 ) { mute1 = 1 // mute is off when 1 dArrK = { 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } if ( ( k == 1 || k == 0 ) && j == 0 ) dArrK = { 1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } if ( k == 2 && ( j == 0 || j == 2 ) ) dArrK = { 1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } if ( k == 3 && ( j == 0 || j == 1 ) ) dArrK = { 1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } if ( k == 3 && j == 2 ) dArrK = { 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1 } if ( k == 3 && j == 3 ) dArrK = { 1,1,1,1, 1,1,1,1, 1,1,1,1, 0,0,0,0 } for ( i = 0; i < 16; i = i + 1 ) { if ( k == 3 && j == 3 && i > 11 ) mute1 = 0 insk1 = random()*19.0 counter = ( k*64 + j*16 + i ) / 255 // counts from 0.0 to 1.0 (0/255 to 255/255) rtinput("MMBUF", "misc"); TRANS(st, insk1, dur16*0.5*mute1, 0.5*envPerc*counter*counter*counter, (forwardL-0.5)*0.24, 0, 0) // INST 1a <-- rtinput("MMBUF", "misc"); TRANS(st, insk1, dur16*0.5*mute1, 0.5*envPerc*counter*counter*counter, (forwardR-0.5)*0.24, 0, 1) // INST 1b <-- rtinput("MMBUF", "kick1"); STEREO(st, 0, 0.5*dArrK[i], 0.6, 0, 1) // INST K <-- st = st + dur16 } // close i loop } // close j loop } // close k loop // CHORALE rtinput("MMBUF", "cym"); STEREO(st, 0, 5, 0.9, 0, 1) for ( k = 0; k < 8; k = k + 1 ) { pArr2 = { 8.07, 8.07, 8.09, 8.10 } // top line pArr3 = { 7.10, 7.10, 7.10, 7.10 } // inner voice pArr1 = { 7.03, 7.03, 7.02, 7.00 } // bass line dArr4 = { 16,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } if ( k == 1 ) { pArr2 = { 9.00, 9.00, 9.03, 9.02 } // top line pArr3 = { 7.07, 7.07, 7.05, 7.08 } // inner voice pArr1 = { 6.10, 6.10, 6.08, 6.05 } // bass line } if ( k == 2 ) { pArr2 = { 8.11, 8.11, 9.00, 8.10 } // top line pArr3 = { 7.07, 7.07, 7.07, 8.00 } // inner voice pArr1 = { 6.07, 6.05, 6.04, 6.04 } // bass line } if ( k == 3 ) { pArr2 = { 8.08, 8.07, 8.06, 8.06 } // top line pArr3 = { 8.03, 8.03, 8.02, 8.00 } // inner voice pArr1 = { 6.05, 6.05, 7.02, 7.02 } // bass line } if ( k == 4 ) { pArr2 = { 8.07, 8.07, 8.07, 8.09 } // top line pArr3 = { 7.10, 7.10, 7.09, 7.09 } // inner voice pArr1 = { 7.03, 7.02, 7.01, 7.01 } // bass line } if ( k == 5 ) { pArr2 = { 8.06, 8.06, 8.06, 8.06 } // top line pArr3 = { 8.02, 8.02, 8.00, 8.00 } // inner voice pArr1 = { 7.02, 7.02, 7.02, 7.02 } // bass line } if ( k == 6 || k == 7 ) { pArr2 = { 8.07, 8.07, 8.07, 8.07 } // top line pArr3 = { 7.11, 7.11, 7.11, 7.11 } // inner voice pArr1 = { 6.07, 6.07, 6.07, 6.07 } // bass line } if ( k == 7 && j == 3 ) dArr4 = { 12,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } for ( j = 0; j < 4; j = j + 1 ) { for ( i = 0; i < 16; i = i + 1 ) { halfCounter = 0 if ( k > 3 && k != 7 ) halfCounter = ( (k-4)*64 + j*16 + i ) / 191 // in second (roughly) half of section, counts from 0.0 to 1.0 if ( k == 7 ) halfCounter = 1 // no FMINST in fade-out mod1 = 0.07 modArr1 = { 1, 2, 3, 1, 10, 3, 4, 8, 2, 8, 3, 4, 10, 6, 4, 2 } pShiftB = pickrand( 0.00, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006 ) pShiftD = pickrand( 0.00, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006 ) envASwitch = pickrand( 0, 1, 2 ) if ( envASwitch == 0 ) { dMod1 = 0.5 env = envDown } else if ( envASwitch == 1 ) { dMod1 = 0.7 env = envPerc } else { dMod1 = 0.9 env = envRev } FMINST(st, dur16*dMod1, dynP*env*(1-halfCounter), pArr1[j]-octDown1, pArr1[j]-octDown1+mod1, modArr1[i], modArr1[i], 0, wave, envFlat) // INST 1a <-- FMINST(st, dur16*dMod1, dynP*env*(1-halfCounter), pArr1[j]-octDown1+pShiftB, pArr1[j]-octDown1+mod1+pShiftB, modArr1[i], modArr1[i], 0, wave, envFlat) // INST 1b <-- FMINST(st, dur16*dMod1, dynP*env*(1-halfCounter), pArr1[j]-octDown1, pArr1[j]-octDown1+mod1, modArr1[i], modArr1[i], 1, wave, envFlat) // INST 1c <-- FMINST(st, dur16*dMod1, dynP*env*(1-halfCounter), pArr1[j]-octDown1+pShiftD, pArr1[j]-octDown1+mod1+pShiftD, modArr1[i], modArr1[i], 1, wave, envFlat) // INST 1d <-- FMINST(st, dur16*dMod1, dynPPP*env*(1-halfCounter), pArr2[j]+octUp2, pArr2[j]+octUp2+mod1, modArr1[i], modArr1[i], 0, wave, envFlat) // INST 2a <-- FMINST(st, dur16*dMod1, dynPPP*env*(1-halfCounter), pArr2[j]+octUp2+pShiftB+octUp2, pArr2[j]+1+mod1+pShiftB, modArr1[i], modArr1[i], 0, wave, envFlat) // INST 2b <-- FMINST(st, dur16*dMod1, dynPPP*env*(1-halfCounter), pArr2[j]+octUp2, pArr2[j]+octUp2+mod1, modArr1[i], modArr1[i], 1, wave, envFlat) // INST 2c <-- FMINST(st, dur16*dMod1, dynPPP*env*(1-halfCounter), pArr2[j]+octUp2+pShiftD, pArr2[j]+octUp2+mod1+pShiftD, modArr1[i], modArr1[i], 1, wave, envFlat) // INST 2d <-- FMINST(st, dur16*dMod1, dynPPP*env*(1-halfCounter), pArr3[j]-octDown3, pArr3[j]-octDown3+mod1, modArr1[i], modArr1[i], 0, wave, envFlat) // INST 3a <-- FMINST(st, dur16*dMod1, dynPPP*env*(1-halfCounter), pArr3[j]-octDown3+pShiftB, pArr3[j]-octDown3+mod1+pShiftB, modArr1[i], modArr1[i], 0, wave, envFlat) // INST 3b <-- FMINST(st, dur16*dMod1, dynPPP*env*(1-halfCounter), pArr3[j]-octDown3, pArr3[j]-octDown3+mod1, modArr1[i], modArr1[i], 1, wave, envFlat) // INST 3c <-- FMINST(st, dur16*dMod1, dynPPP*env*(1-halfCounter), pArr3[j]-octDown3+pShiftD, pArr3[j]-octDown3+mod1+pShiftD, modArr1[i], modArr1[i], 1, wave, envFlat) // INST 3d <-- VWAVE(st, dur16*dArr4[i], pArr1[j]+forwardL*0.003, dynMP*envTri*pullL, forwardL, 0.4+sideL*0.2, waveTransUp, waveBrass, waveSquare5) // INST 4a <-- VWAVE(st, dur16*dArr4[i], pArr1[j]-1+sideL*0.001, dynF*envTri*pullL, sideL, 0.6, waveBassoon, waveSquare5, waveBrass) // INST 4b <-- VWAVE(st, dur16*dArr4[i], pArr1[j]-2+forwardL*0.002, dynF*envTri*pullL, forwardL, 0.4, waveTransUp, waveBrass, waveCello) // INST 4c <-- VWAVE(st, dur16*dArr4[i], pArr1[j]-3, dynF*envTri*pullL, sideL, 0.5, waveBassoon, waveTransUp, waveBrass) // INST 4d <-- VWAVE(st, dur16*dArr4[i], pArr2[j]+2+forwardR*0.003, dynPPPP*envTri*pullR, forwardR, 0.4+(1.0-sideR)*0.2, waveSquare5, waveBassoon, waveSquare5) // INST 5a <-- VWAVE(st, dur16*dArr4[i], pArr2[j]+1+sideR*0.003, dynPPP*envTri*pullR, sideR, 0.4, waveBassoon, waveSquare5, waveCello) // INST 5b <-- VWAVE(st, dur16*dArr4[i], pArr2[j]+forwardR*0.003, dynPP*envTri*pullR, forwardR, 0.6, waveSquare5, waveBrass, waveCello) // INST 5c <-- VWAVE(st, dur16*dArr4[i], pArr2[j]-1, dynPP*envTri*pullR, sideR, 0.5, waveBassoon, waveSquare5, waveCello) // INST 5d <-- VWAVE(st, dur16*dArr4[i], pArr3[j]+2+forwardL*0.003, dynPPP*envTri*pullR, forwardL, 0.4+sideL*0.2, waveTransUp, waveBrass, waveSquare5) // INST 6a <-- VWAVE(st, dur16*dArr4[i], pArr3[j]+1+sideL*0.001, dynPPP*envTri*pullR, sideL, 0.6, waveBassoon, waveSquare5, waveBrass) // INST 6b <-- VWAVE(st, dur16*dArr4[i], pArr3[j]+forwardL*0.002, dynPPP*envTri*pullR, forwardL, 0.4, waveTransUp, waveBrass, waveCello) // INST 6c <-- VWAVE(st, dur16*dArr4[i], pArr3[j]-1, dynPPP*envTri*pullR, sideL, 0.5, waveBassoon, waveTransUp, waveBrass) // INST 6d <-- st = st + dur16 } // close i loop } // close j loop } // close k loop MAXMESSAGE(st, 2) // "2" message signals a bang to go through to trigger next script print_off() tempo = 128 // SET TEMPO <-- dur4 = 60/tempo; dur8 = 30/tempo; dur12 = 20/tempo; dur16 = 15/tempo; st = 0; maxVol = 20000 // SET MAXIMUM VOLUME <-- dynFF = maxVol*6/7; dynF = maxVol*5/7; dynMF = maxVol*4/7; dynMP = maxVol*3/7; dynP = maxVol*2/7; dynPP = maxVol/7; dynPPP = maxVol/10; dynPPPP = maxVol/20; pullLRough = makeconnection("inlet", 1, 0) // all GameTrak values are clamped to 0.0 - 1.0 before inlet sideLRough = makeconnection("inlet", 2, 0) // input values have zipper noise ... forwardLRough = makeconnection("inlet", 3, 0) pullL = makefilter(pullLRough, "smooth", 80) // ... so input values should be smoothed sideL = makefilter(sideLRough, "smooth", 80) forwardL = makefilter(forwardLRough, "smooth", 80) pullRRough = makeconnection("inlet", 4, 0) // and the same for the right side (with cord facing outward) of the controller sideRRough = makeconnection("inlet", 5, 0) forwardRRough = makeconnection("inlet", 6, 0) pullR = makefilter(pullRRough, "smooth", 80) // "pull" refers to amount of string pulled out sideR = makefilter(sideRRough, "smooth", 80) // "side" refers to lateral angle (with cord facing outward) forwardR = makefilter(forwardRRough, "smooth", 80) // "forward" refers to back-and-forth angle // STEREO(outsk, insk, dur, AMP, P4-N: input/output channel pan assigns) // template code for sound file playback: // rtinput("MMBUF", "bufferNameGoesHere"); STEREO(st, 0, durArr1[i], 1, 0, 1) bus_config("AMINST", "out0-1") bus_config("FMINST", "out0-1") bus_config("WAVETABLE", "out0-1") bus_config("VWAVE", "out0-1") bus_config("STEREO", "in0-1", "out0-1") bus_config("TRANS", "in0-1", "out0-1") // TABLES: envPerc = maketable("curve", 1000, 0,0,0, 5,1,0, 95,1,0, 100,0) envCurveUp = maketable("curve", 1000, 0,0,3, 1,1) envCurveUpAmp = maketable("curve", 1000, 0,0,1, 252,1,20, 255,0) envRev = maketable("line", 1000, 0,0, 95,1, 100,0 ) envSharpRev = maketable("curve", 1000, 0,0,3, 95,1,0, 100, 0 ) envDown = maketable("line", 1000, 0,1, 1,0 ) envUp = maketable("line", 1000, 0,0, 1,1 ) envFlat = maketable("line", 1000, 0,1, 1,1 ) envSwoop = maketable("curve", 1000, 0,0,0, 500,0,1, 999,1 ) envTri = maketable("line", 1000, 0,0, 1,1, 2,0 ) envOctUp = maketable("line", 1000, 0,0, 2,0, 3,1, 4,0, 5,1, 6,0, 7,1 ) envZero = maketable("line", 1000, 0,0, 1,0 ) envHalfDown = maketable("line", 1000, 0,1, 1,0, 2,0 ) envHann = maketable("window", 1000, "hanning") waveSaw8 = maketable("wave", 1000, "saw8") waveSaw = maketable("wave", 1000, "saw") waveTri17 = maketable("wave", 1000, "tri17") waveSine = maketable("wave", 1000, "sine") waveSquare = maketable("wave", 1000, "square") waveSquare5 = maketable("wave", 1000, "square5") waveSquare9 = maketable("wave", 1000, "square9") waveTransUp = maketable("wave", 1000, 0, 1, 0, 0.4, 0, 0.2, 0, 0.1, 0, 0.05, 0, 0.025, 0, 0.0125) // simulates 8va transposition waveCello = maketable("wave3", 1000, 1,0.003689,0, 2.0167,0.206561,0, 3.0234,0.038787,0, 4.03,0.094815,0, 5.039,0.247546,0, 6.0454,0.049762,0, 7.054,0.046767,0, 8.0624,0.036586,0, 9.067,0.038633,0, 10.077,0.058350,0, 11.0926,0.025122,0, 12.0972,0.009955,0, 13.1005,0.042133,0, 14.1079,0.041724,0, 15.1214,0.008821,0, 16.1241,0.017887,0, 19.1457,0.014579,0) waveBassoon = maketable("wave3", 1000, 1,0.926994,0, 3,0.645786,0, 6,0.412348,0, 7,0.436233,0, 8,0.547544,0, 12,0.690852,0, 16,0.485354,0, 18,0.191528,0, 19,0.410545,0, 21,0.735466,0, 24,0.229833,0, 25,0.305543,0) waveBrass = maketable("wave3", 1000, 1,0.021460,0, 3,0.009213,0, 6,0.001567,0, 7,0.392916,0, 8,0.001070,0, 10,0.022249,0, 12,0.002323,0, 14,1.000000,0, 15,0.003873,0, 16,0.357763,0, 17,0.018961,0, 19,0.003503,0, 20,0.358359,0, 22,0.002245,0, 23,0.039743,0, 24,0.015839,0, 26,0.000723,0, 27,0.022608,0, 30,0.001054,0, 32,0.034359,0, 34,0.032466,0, 38,0.000480,0, 41,0.002036,0, 46,0.007188,0, 49,0.002422,0, 61,0.008005,0, 65,0.005335,0, 68,0.009941,0, 69,0.036334,0, 75,0.002278,0, 81,0.005031,0, 92,0.000706,0, 103,0.168356,0, 106,0.000419,0, 116,0.000348,0, 137,0.042452,0, 138,0.059201,0, 139,0.001026,0, 170,0.001716,0, 171,0.016539,0, 172,0.026519,0, 186,0.000932,0, 204,0.000215,0, 205,0.032372,0, 206,0.115786,0, 208,0.000337,0, 224,0.000756,0, 233,0.000463,0, 240,0.088098,0, 242,0.000596,0, 266,0.000182,0, 274,0.016054,0, 275,0.032858,0, 308,0.001219,0, 342,0.003095,0, 343,0.016319,0, 344,0.008005,0, 376,0.004551,0, 378,0.000392,0, 410,0.003349,0, 412,0.003288,0, 445,0.004292,0, 446,0.007608,0, 479,0.001330,0) waitForCym = 25.25 // outskip from beginning of 16-bar phrase if wanting to put revCym at end (must change if tempo changes) // DROP' 1 of 2 (accel) MAXMESSAGE(st, 1) // enable groove~ swoopSwitch1 = 1 // bass glissing up ENABLED by default rtinput("MMBUF", "revCym"); STEREO(34.17, 0, 5, 0.8, 0, 1) // reversed cymbal sound for ( k = 0; k < 4; k = k + 1 ) { for ( j = 0; j < 4; j = j + 1 ) { dArrK = { 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 } dArr1 = { 8,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } pArr1 = { 5.07,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } // set by pArr1[i] swoopSwitch1 = 1 // bass glissing up ENABLED by default swoopSpan1 = 0.12 pArr2 = { 5.07, 5.07, 5.09, 5.10 } // set by pArr1[j] dArr2 = { 0,0,0,0, 2,0,0,1, 0,0.5,0,0, 4,0,0,0 } mute3 = 1 // not muted by default dArr4 = { 0,0,3,0, 0,0,3,0, 0,0,3,0, 0,0,3,0 } wave4A = waveSquare9 wave4B = waveBrass if ( k > 1 ) { wave4A = waveBassoon wave4B = waveCello } if ( j % 2 == 1 ) dArr1 = { 0,0,0,0, 6,0,0,0, 0,0,6,0, 0,0,0,0 } if ( j == 1 && ( k == 0 || k == 2 ) ) pArr1 = { 0,0,0,0, 5.09,0,0,0, 0,0,5.10,0, 0,0,0,0 } if ( j == 2 && ( k == 0 || k == 2 ) ) pArr1 = { 5.03,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } if ( j == 3 && ( k == 0 || k == 2 ) ) pArr1 = { 0,0,0,0, 5.03,0,0,0, 0,0,5.02,0, 0,0,0,0 } if ( j == 0 && ( k == 1 || k == 3 ) ) pArr1 = { 5.00,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } if ( j == 1 && ( k == 1 || k == 3 ) ) pArr1 = { 0,0,0,0, 5.00,0,0,0, 0,0,5.02,0, 0,0,0,0 } if ( j == 2 && ( k == 1 || k == 3 ) ) pArr1 = { 5.03,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } if ( j == 3 && k == 1 ) pArr1 = { 0,0,0,0, 5.03,0,0,0, 0,0,5.05,0, 0,0,0,0 } if ( j == 3 && k == 3 ) { dArrK = { 1,1,1,1, 1,1,1,1, 1,1,1,1, 0,0,0,0 } dArr1 = { 11,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } pArr1 = { 5.05,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 } swoopSpan1 = 0.36 dArr2 = { 0,0,0,0, 2,0,0,1, 0,0.5,0,0, 0,0,0,0 } dArr4 = { 0,0,3,0, 0,0,3,0, 0,0,2,0, 0,0,0,0 } } for ( i = 0; i < 16; i += 1) { counter = ( k*64 + j*16 + i ) / 255 // counts from 0.0 to 1.0 (0/255 to 255/25) tempo = 64 + counter*80 // start at half-tempo, accel to poco piu mosso dur16 = 15/tempo // redefine durations for new tempo if ( j == 3 && i > 11 ) swoopSwitch1 = 0 wave2Switch = pickrand(0,1,2,3) if ( wave2Switch == 0 ) wave2 = waveSine else if ( wave2Switch == 1 ) wave2 = waveSquare9 else if ( wave2Switch == 2 ) wave2 = waveTri17 else wave2 = waveCello mute2 = pickrand(1,1,0) // (muted when mute2 = 0) carOct2 = pickrand(2,3,4) modOct2 = pickrand(3.07, 3.071, 4.003, 4.072, 5.004, 5.075) gliss2 = pickrand(0,1) if ( k == 3 && j == 3 && i > 10 ) mute3 = 0 rtinput("MMBUF", "kick1"); STEREO(st, 0, 0.5*dArrK[i], 0.6, 0, 1) // INST K <-- FMINST(st, dur16*dArr1[i], 28000*envRev*(1-counter), pArr1[i]+swoopSwitch1*envSwoop*swoopSpan1, pArr1[i]+1.00+swoopSwitch1*envSwoop*swoopSpan1, 1, 4, 0.3, waveBassoon, envRev) // INST 1a <-- FMINST(st, dur16*dArr1[i], 28000*envRev*(1-counter), pArr1[i]+0.0002+swoopSwitch1*envSwoop*swoopSpan1, pArr1[i]+1.0002+swoopSwitch1*envSwoop*swoopSpan1, 1, 4, 0.7, waveCello, envRev) // INST 1b <-- FMINST(st, dur16*dArr1[i], dynF*envRev*counter, pArr1[i]+1+swoopSwitch1*envSwoop*swoopSpan1, pArr1[i]+2.00+swoopSwitch1*envSwoop*swoopSpan1, 1, 2, 0.3, waveSquare9, envUp) // INST 1c <-- FMINST(st, dur16*dArr1[i], dynF*envRev*counter, pArr1[i]+1+0.0002+swoopSwitch1*envSwoop*swoopSpan1, pArr1[i]+2.0002+swoopSwitch1*envSwoop*swoopSpan1, 1, 2, 0.7, waveSquare9, envUp) // INST 1d <-- FMINST(st, dur16*dArr2[i]*mute2, dynMP*envRev, pArr2[j]+carOct2+gliss2*0.12*envDown, pArr2[j]+modOct2+gliss2*0.24*envDown, 1, 4, 0.3, wave2, envRev) // INST 2a <-- FMINST(st, dur16*dArr2[i]*mute2, dynMP*envRev, pArr2[j]+carOct2+0.0005+gliss2*0.12*envUp, pArr2[j]+modOct2+gliss2*0.24*envDown, 1, 4, 0.7, wave2, envRev) // INST 2b <-- oct3 = pickrand(0,1,2) pShift3 = pickrand( 0.00, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006 ) mod3 = random()*5 pan3 = pickrand(0.0, 0.2, 0.4, 0.6, 0.8, 1.0) pArr3 = { 7.03, 7.02, 7.03, 7.07 } // bass line FMINST(st, dur16*0.7*mute3, dynPPPP*envPerc, 8.10+oct3, 9.05+oct3, mod3, mod3, pan3, waveSine, envFlat) // INST 3a <-- FMINST(st, dur16*0.7*mute3, dynPPPP*envPerc, 9.10+oct3+pShift3, 10.05+oct3+pShift3, mod3, mod3, pan3, waveSine, envFlat) // INST 3b <-- FMINST(st, dur16*0.7*mute3, dynPP*envPerc, pArr3[j]+oct3, pArr3[j]+oct3, mod3, mod3, pan3, waveSine, envFlat) // INST 3c <-- FMINST(st, dur16*0.7*mute3, dynPP*envPerc, pArr3[j]+oct3+pShift3, pArr3[j]+oct3+pShift3, mod3, mod3, pan3, waveSine, envFlat) // INST 3d <-- VWAVE(st, dur16*dArr4[i], 7.10+oct3, dynPPP*envRev, envSwoop, 0, wave4A, wave4B) // INST 4a <-- VWAVE(st, dur16*dArr4[i], 8.102+oct3, dynPPP*envRev, envSwoop, 0, wave4A, wave4B) // INST 4b <-- VWAVE(st, dur16*dArr4[i], pArr3[j]+0.001+oct3, dynPPP*envRev, envSwoop, 0, wave4A, wave4B) // INST 4c <-- VWAVE(st, dur16*dArr4[i], pArr3[j]+0.003+oct3, dynPPP*envRev, envSwoop, 0, wave4A, wave4B) // INST 4d <-- VWAVE(st, dur16*dArr4[i], 7.101+oct3, dynPPP*envRev, envSwoop, 1, wave4A, wave4B) // INST 4e <-- VWAVE(st, dur16*dArr4[i], 8.103+oct3, dynPPP*envRev, envSwoop, 1, wave4A, wave4B) // INST 4f <-- VWAVE(st, dur16*dArr4[i], pArr3[j]-1+oct3, dynPPP*envRev, envSwoop, 1, wave4A, wave4B) // INST 4g <-- VWAVE(st, dur16*dArr4[i], pArr3[j]+0.002+oct3, dynPPP*envRev, envSwoop, 1, wave4A, wave4B) // INST 4h <-- VWAVE(st, dur16*dArr4[i], 6.071+oct3, dynPPP*envRev, envSwoop, 0, wave4A, wave4B) // INST 4i <-- VWAVE(st, dur16*dArr4[i], 7.073+oct3, dynPPP*envRev, envSwoop, 0, wave4A, wave4B) // INST 4j <-- VWAVE(st, dur16*dArr4[i], 6.07+oct3, dynPPP*envRev, envSwoop, 1, wave4A, wave4B) // INST 4k <-- VWAVE(st, dur16*dArr4[i], 7.072+oct3, dynPPP*envRev, envSwoop, 1, wave4A, wave4B) // INST 4l <-- st += dur16 } // close i loop } // close j loop } // close k loop // DROP' 2 of 2 tempo = 144 // new tempo dur16 = 15/tempo // redefine durations for new tempo MAXMESSAGE(st - dur4*2, 0) // disable groove~ sound file play (half measure ago) MAXMESSAGE(st, 1) // re-enable groove~ file play rtinput("MMBUF", "cym"); STEREO(st, 0, 5, 0.9, 0, 1) rtinput("MMBUF", "revCym"); STEREO(st+dur16*256-4.37, 0, 5, 0.8, 0, 1) // reversed cymbal sound for ( k = 0; k < 4; k = k + 1 ) { for ( j = 0; j < 4; j = j + 1 ) { dArrK = { 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 } dArr1 = { 8,0,0,0, 0,0,0,0, 0.5,0.5,0.5,0.5, 0.5,0.5,0.5,0.5 } pArr1 = { 5.07, 5.07, 5.10, 5.09 } // set by pArr1[j] pArr2 = { 5.07, 5.07, 5.09, 5.10 } // set by pArr1[j] dArr2 = { 0,0,0,0, 2,0,0,1, 0,0.5,0,0, 4,0,0,0 } if ( j == 3 && k == 3 ) { dArrK = { 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1 } dArr2 = { 0,0,0,0, 2,0,0,1, 0,0.5,0,0, 0,0,0,0 } } if ( j == 2 || j == 3 ) dArr1 = { 0,0,3,0, 0,0,3,0, 0,0,3,0, 0,0,3,0 } for ( i = 0; i < 16; i += 1) { counter = ( k*64 + j*16 + i ) / 255 // counts from 0.0 to 1.0 (0/255 to 255/25) if ( j == 2 || j == 3 ) env1 = envZero else { env1Switch = pickrand(0,1) if ( env1Switch == 0 ) env1 = envZero else env1 = envHalfDown } wave2Switch = pickrand(0,1,2,3) if ( wave2Switch == 0 ) wave2 = waveSine else if ( wave2Switch == 1 ) wave2 = waveSquare9 else if ( wave2Switch == 2 ) wave2 = waveTri17 else wave2 = waveCello mute2 = pickrand(1,1,0) // (muted when mute2 = 0) carOct2 = pickrand(2,3,4) modOct2 = pickrand(3.07, 3.071, 4.003, 4.072, 5.004, 5.075) gliss2 = pickrand(0,1) rtinput("MMBUF", "kick1"); STEREO(st, 0, 0.5*dArrK[i], 0.6, 0, 1) // INST K <-- FMINST(st, dur16*dArr1[i], 24000*envRev*(1-counter), pArr1[j]+env1*0.12, pArr1[j]+1.00+env1*0.12, 1, 4, 0.3, waveBassoon, envRev) // INST 1a <-- FMINST(st, dur16*dArr1[i], 24000*envRev*(1-counter), pArr1[j]+0.002+env1*0.12, pArr1[j]+1.002+env1*0.12, 1, 4, 0.7, waveCello, envRev) // INST 1b <-- FMINST(st, dur16*dArr1[i], 12000*envRev*(1-counter), pArr1[j]+2+env1*0.12, pArr1[j]+3+env1*0.12, 1, 4, 0.7, waveBrass, envRev) // INST 1c <-- FMINST(st, dur16*dArr1[i], dynFF*envRev*counter, pArr1[j]+1.00+env1*0.12, pArr1[j]+2.00+env1*0.12, 1, 2, 0.3, waveSquare9, envUp) // INST 1d <-- FMINST(st, dur16*dArr1[i], dynFF*envRev*counter, pArr1[j]+2.002+env1*0.12, pArr1[j]+3.002+env1*0.12, 1, 2, 0.7, waveSquare9, envUp) // INST 1e <-- FMINST(st, dur16*dArr2[i]*mute2, dynMP*envRev, pArr2[j]+carOct2+gliss2*0.12*envDown, pArr2[j]+modOct2+gliss2*0.24*envDown, 1, 4, 0.3, wave2, envRev) // INST 2a <-- FMINST(st, dur16*dArr2[i]*mute2, dynMP*envRev, pArr2[j]+carOct2+0.0005+gliss2*0.12*envUp, pArr2[j]+modOct2+gliss2*0.24*envDown, 1, 4, 0.7, wave2, envRev) // INST 2b <-- oct3 = pickrand(0,1,2) pShift3 = pickrand( 0.00, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006 ) mod3 = random()*5 pan3 = pickrand(0.0, 0.2, 0.4, 0.6, 0.8, 1.0) pArr3 = { 7.07, 7.02, 7.03, 7.05 } FMINST(st, dur16*0.7, dynPPPP*envPerc*(1-counter), 8.10+oct3, 9.05+oct3, mod3, mod3, pan3, waveSine, envFlat) // INST 3a <-- FMINST(st, dur16*0.7, dynPPPP*envPerc*(1-counter), 9.10+oct3+pShift3, 10.05+oct3+pShift3, mod3, mod3, pan3, waveSine, envFlat) // INST 3b <-- FMINST(st, dur16*0.7, dynPP*envPerc*(1-counter), pArr3[j]+oct3, pArr3[j]+oct3, mod3, mod3, pan3, waveSine, envFlat) // INST 3c <-- FMINST(st, dur16*0.7, dynPP*envPerc*(1-counter), pArr3[j]+oct3+pShift3, pArr3[j]+oct3+pShift3, mod3, mod3, pan3, waveSine, envFlat) // INST 3d <-- st += dur16 } // close i loop } // close j loop } // close k loop st += dur4*2 // two beats of silence, with groove~ still going // CHORALE' for ( k = 0; k < 2; k = k + 1 ) { pArr2 = { 8.07, 8.07, 8.07, 8.07 } // top line pArr3 = { 7.11, 7.11, 7.11, 7.11 } // inner voice pArr1 = { 6.07, 6.07, 6.07, 6.07 } // bass line for ( j = 0; j < 4; j = j + 1 ) { VWAVE(st, dur4*8, pArr1[j]+forwardL*0.003, dynMP*envHann*pullL, forwardL, 0.4+sideL*0.2, waveTransUp, waveBrass, waveSquare5) // INST 4a <-- VWAVE(st, dur4*8, pArr1[j]-1+sideL*0.001, dynF*envHann*pullL, sideL, 0.6, waveBassoon, waveSquare5, waveBrass) // INST 4b <-- VWAVE(st, dur4*8, pArr1[j]-2+forwardL*0.002, dynF*envHann*pullL, forwardL, 0.4, waveTransUp, waveBrass, waveCello) // INST 4c <-- VWAVE(st, dur4*8, pArr1[j]-3, dynF*envHann*pullL, sideL, 0.5, waveBassoon, waveTransUp, waveBrass) // INST 4d <-- VWAVE(st, dur4*8, pArr2[j]+2+forwardR*0.003, dynPPPP*envHann*pullR, forwardR, 0.4+(1.0-sideR)*0.2, waveSquare5, waveBassoon, waveSquare5) // INST 5a <-- VWAVE(st, dur4*8, pArr2[j]+1+sideR*0.003, dynPPP*envHann*pullR, sideR, 0.4, waveBassoon, waveSquare5, waveCello) // INST 5b <-- VWAVE(st, dur4*8, pArr2[j]+forwardR*0.003, dynPP*envHann*pullR, forwardR, 0.6, waveSquare5, waveBrass, waveCello) // INST 5c <-- VWAVE(st, dur4*8, pArr2[j]-1, dynPP*envHann*pullR, sideR, 0.5, waveBassoon, waveSquare5, waveCello) // INST 5d <-- VWAVE(st, dur4*8, pArr3[j]+2+forwardL*0.003, dynPPP*envHann*pullR, forwardL, 0.4+sideL*0.2, waveTransUp, waveBrass, waveSquare5) // INST 6a <-- VWAVE(st, dur4*8, pArr3[j]+1+sideL*0.001, dynPPP*envHann*pullR, sideL, 0.6, waveBassoon, waveSquare5, waveBrass) // INST 6b <-- VWAVE(st, dur4*8, pArr3[j]+forwardL*0.002, dynPPP*envHann*pullR, forwardL, 0.4, waveTransUp, waveBrass, waveCello) // INST 6c <-- VWAVE(st, dur4*8, pArr3[j]-1, dynPPP*envHann*pullR, sideL, 0.5, waveBassoon, waveTransUp, waveBrass) // INST 6d <-- st += dur4*8 } // close j loop } // close k loop