;----------------------------------------------------- ; aya karpinska ; 24 february 2003 ;----------------------------------------------------- sr = 44100 ; Sample rate kr = 4410 ; Control rate ksmps = 10 ; Samples per control period nchnls = 2 ; 2 Channel stereo garvb init 0 ;--------------------------------------------------------------- ; Pitch and Time Scaling - author: Hans Mikelson ;--------------------------------------------------------------- instr 11 idur = p3 ; Duration iamp = ampdb(p4); Amplitude iatk = p5 ; attack dur idec = p6 ; decay dur isus = p7 ; sustain dur irel = p8 ; release ipshft = p9 ; Pitch scaling factor itstr = p10 ; Time scaling factor iaph = p11*sr ; Amplitude of the phasor in seconds converted to samples itab = p12 ; Sample ismth = p13 ; Smoothing factor ;kenv linen iamp, iatk, idur, irel ; linear envelope kenv expseg .001, iatk, iamp*.3, idec, iamp, isus, iamp*.7, irel,.01 ipval = (ipshft-1) ; Setup for pitch shifting ifph = sr/iaph*((itstr-1)/itstr + ipval) ; Frequency for phasor aphas1 phasor ifph ; Phasor 1 aphas2 phasor ifph, .5 ; Phasor 2 shifted by 180 degrees apos linseg 0, idur, idur/itstr*sr ; Scan this many samples of the table. kdclk1 oscil 1, ifph, 1 ; Declick envelope matches phasor frequency kdclk2 oscil 1, ifph, 1, .5 ; Another one shifted by 180 degrees kdclk1 = (tanh(kdclk1*ismth)+1)*.5 ; Flatten the sine waves and offset kdclk2 = (tanh(kdclk2*ismth)+1)*.5 ; Same for other stream ashft1 table3 iaph*aphas1+apos, itab ; Scan the table with cubic interpolation ashft2 table3 iaph*aphas2+apos, itab ; second stream aout = ashft1*kdclk1 + ashft2*kdclk2 ; Combine the two streams with declicking abrf butterbr aout, 200, 150 ; cutting 2 octaves: 50 to 200 Hz outs abrf*kenv, abrf*kenv ;outs aout*kenv, aout*kenv ; Output the result endin ;--------------------------------------------------------------- ; lfo pan - am pulser ... from boulanger etude 6 ;--------------------------------------------------------------- instr 141 ; lfo pan - am pulser idur = p3 iamp = ampdb(p4) ifrq = cpspch(p5) ifun = p6 iatk = p7 irel = p8 iatkfun = p9 imodpth = p10 imodfrq = p11 imodfun = p12 ipanfrq = p13 irvbsnd = p14 kenv envlpx iamp, iatk, idur, irel, iatkfun, .7, .01 kpan oscil .5, ipanfrq, 13 klfo oscil imodpth, imodfrq, imodfun asig oscil klfo*kenv, ifrq, ifun kpanlfo = kpan+.5 outs asig*kpanlfo, asig*(1-kpanlfo) garvb = garvb+(asig*irvbsnd) endin instr 199 idur = p3 irvbtim = p4 ihiatn = p5 arvb nreverb garvb, irvbtim, ihiatn ;abrf butterbr arvb, 200, 150 ; cutting 2 octaves: 50 to 200 Hz outs arvb, arvb ;outs abrf, abrf garvb = 0 endin ;--------------------------------------------------------------- ; granular synthesis ... from alan lee ;--------------------------------------------------------------- instr 1302 ;high pass k1 linseg 0, 0.05*p3, 1, 0.9*p3, 1, 0.05*p3, 0 a1 granule p4*k1,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25 a2 granule p4*k1,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20+0.17,p21,p22,p23,p24,p25 ahpf1 butterhp a1, 4000 ahpf2 butterhp a2, 3000 ;try to do panning ;this is the definition of "locsig" opcode: ; a1, a2 locsig asig, kdegree, kdistance, kreverbsend apan1, apan2 locsig ahpf1+ahpf2, p26, p27, .1 outs apan1, apan2 ;outs abpf1, abpf2 ;outs a1,a2 endin instr 1303 ;comb? iamp = p4 idur = p3 k1 linseg 0, 0.05*p3, 1, 0.9*p3, 1, 0.05*p3, 0 a1 granule p4*k1,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25 a2 granule p4*k1,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20+0.17,p21,p22,p23,p24,p25 ;abpf1 butterbr a1, 1000, 4000 ;abpf2 butterbr a2, 1000, 4000 ; alpf1 butterlp a1, 800 ; alpf2 butterlp a2, 800 kenv linen iamp, .01, idur, .01 acomb1 comb a1*kenv, 3, .25, 0 acomb2 comb a2*kenv, 3, .25, 0 outs a1+acomb1,a2+acomb2 endin instr 1304 ;no pass k1 linseg 0, 0.05*p3, 1, 0.9*p3, 1, 0.05*p3, 0 a1 granule p4*k1,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25 a2 granule p4*k1,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20+0.17,p21,p22,p23,p24,p25 outs a1,a2 endin