sr=44100 kr=44100 ksmps=1 nchnls=2 ; INSTRUMENTOS PARA SINTESIS GRANULAR ADITIVA, SUSTRACTIVA Y A PARTIR DE MUESTRAS ; Jose Lopez Montes - 2004-7 ;;;;;;;;;;;;;;;;;; ; envelope windows ;;;;;;;;;;;;;;;;;; ; Functions GEN20 (the higher the smoother) girectangle ftgen 1, 0, 32768, 20, 8 gikaiser ftgen 2, 0, 32768, 20, 7, 1, 4 gihamming ftgen 3, 0, 32768, 20, 1 gibartlett ftgen 4, 0, 32768, 20, 3 ; triangle gisync ftgen 5, 0, 32768, 20, 9 gihanning ftgen 6, 0, 32768, 20, 2 giblackmanharris ftgen 7, 0, 32768, 20, 5 gigaussian ftgen 8, 0, 32768, 20, 6 ginull ftgen 9, 0, 2, 2, 0, 0 ; Sinus gisinus ftgen 10, 0, 32768, 10, 1 ; sinus ;random giweibull ftgen 11, 0, 256, 21, 10, 1, 2 ; Weibull ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; instr 1 ; additive grain with dinamic windows, AM and FM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; kam init 0 kfm init 0 iamp = p4 ; grain max. amplitude ifreq1 = octpch(p5) ; formant freq. in pch. class ifreq2 = octpch(p6) ; formant freq. at end itabfreq = p7 ; table for frecuencies ifreqvar = octpch(p8) ; ifn = p9 ; sinus function at 0 iextra1 = p10 ; parameter for nothing (to preserv structure of parameter for all instruments) iextra2 = p11 iextra3 = p12 inflx1 = p13 ; inflx. point "tex" (0-1) inflx2 = p14 ; inflx. point "atten" (0-1) itabltex1 = p15 ; "tex" window 1 itablatt1 = p16 ; "atten" window 1 itabltex2 = p17 ; "tex" window 2 itablatt2 = p18 ; "atten" window 2 interpo = p19 ; interpolation index (0 => 100% itab1, 1 => 100% itab2) ipos1 = p20 ; (1 left => -1 right) ipos2 = p21 itabpos = p22 iposvar = p23 iAM1 = octpch(p24) ; AM frec. at start iAM2 = octpch(p25) ; AM frec. at end itabfreqAM = p26 ; table for AM frecuencies ifreqvarAM = octpch(p27) ; iAMount1 = p28 ; AM amount at start (0 = without AM, 1 = 100% AM) iAMount2 = p29 ; AM amount at end (0 = without AM, 1 = 100% AM) itabAMount = p30 iAMountvar = p31 ; 1 = 100% iFM1 = octpch(p32) ; FM frec. at start iFM2 = octpch(p33) ; FM frec. at end itabfreqFM = p34 ; table for FM frecuencies ifreqvarFM = octpch(p35) ; iFMount1 = octpch(p36) ; FM amount at start (vibrato +/- pitchclass) iFMount2 = octpch(p37) ; FM amount at end itabFMount = p38 iFMountvar = octpch(p39) ; iAMbypass = p40 iFMbypass = p41 kgindex phasor 1/p3 agindex phasor 1/p3 ; a-rate phasor kfreq line ifreq1, p3, ifreq2 kfreqvar tablei kgindex*ftlen(itabfreq), itabfreq kfreq = cpsoct(kfreq + kfreqvar*ifreqvar) apos line ipos1, p3, ipos2 aposvar tablei agindex*ftlen(itabpos), itabpos apos = apos + aposvar*iposvar aposl = (apos + 1) / 2 aposr = 1 - aposl ;envelopes kindextex phasor 1/(p3*inflx1*2) iphase = 1 - frac(1/((1-inflx2)*2)) ;print iphase kindexatt phasor 1/(p3*(1-inflx2)*2), iphase if (kgindex > inflx1) kgoto atten ktabtex1 tablei kindextex*ftlen(itabltex1), itabltex1 ktabtex2 tablei kindextex*ftlen(itabltex2), itabltex2 ktabtex = (1-interpo)*ktabtex1 + interpo*ktabtex2 kamp = iamp*ktabtex if (kgindex < inflx2) kgoto cont atten: if (kgindex < inflx2) kgoto cont ktabatt1 tablei kindexatt*ftlen(itablatt1), itablatt1 ktabatt2 tablei kindexatt*ftlen(itablatt2), itablatt2 ktabatt = (1-interpo)*ktabatt1 + interpo*ktabatt2 kamp = iamp*ktabatt cont: if iAMbypass=0 goto fm ;AM kAM line iAM1, p3, iAM2 kfreqvarAM tablei kgindex*ftlen(itabfreqAM), itabfreqAM kAM = cpsoct(kAM + kfreqvarAM*ifreqvarAM) kAMount line iAMount1, p3, iAMount2 kAMountvar tablei kgindex*ftlen(itabAMount), itabAMount kAMount = kAMount + kAMountvar*iAMountvar kam poscil kAMount*kamp*.5, kAM, 10 kam = kam - kAMount*kamp*.5 fm: if iFMbypass=0 goto grain ;FM kFM line iFM1, p3, iFM2 kfreqvarFM tablei kgindex*ftlen(itabfreqFM), itabfreqFM kFM = cpsoct(kFM + kfreqvarFM*ifreqvarFM) kFMount line iFMount1, p3, iFMount2 kFMountvar tablei kgindex*ftlen(itabFMount), itabFMount kFMount = (kFMount + kFMountvar*iFMountvar) * kfreq kfm poscil kFMount, kFM, 10 grain: agrain poscil kamp + kam, kfreq + kfm, ifn outs agrain*aposl, agrain*aposr endin ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; instr 2 ; subtractive grain with dinamic windows, AM and FM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; kam init 0 kfm init 0 iamp = p4 ; grain max. amplitude ifreq1 = octpch(p5) ; formant freq. in oct. class ifreq2 = octpch(p6) ; formant freq. at end itabfreq = p7 ; table for frecuencies ifreqvar = octpch(p8) ; iband1 = octpch(p9) ; bandwidth (pitchclass) iband2 = octpch(p10) ; bandwidth at end itabband = p11 ; unipolar! ibandvar = octpch(p12) inflx1 = p13 ; inflx. point "tex" (0-1) inflx2 = p14 ; inflx. point "atten" (0-1) itabltex1 = p15 ; "tex" window 1 itablatt1 = p16 ; "atten" window 1 itabltex2 = p17 ; "tex" window 2 itablatt2 = p18 ; "atten" window 2 interpo = p19 ; interpolation index (0 => 100% itab1, 1 => 100% itab2) ipos1 = p20 ; (1 left => -1 right) ipos2 = p21 itabpos = p22 iposvar = p23 iAM1 = octpch(p24) ; AM frec. at start iAM2 = octpch(p25) ; AM frec. at end itabfreqAM = p26 ; table for AM frecuencies ifreqvarAM = octpch(p27) ; iAMount1 = p28 ; AM amount at start (0 = without AM, 1 = 100% AM) iAMount2 = p29 ; AM amount at end (0 = without AM, 1 = 100% AM) itabAMount = p30 iAMountvar = p31 ; 1 = 100% iFM1 = octpch(p32) ; FM frec. at start iFM2 = octpch(p33) ; FM frec. at end itabfreqFM = p34 ; table for FM frecuencies ifreqvarFM = octpch(p35) ; iFMount1 = octpch(p36) ; FM amount at start (vibrato +/- pitchclass) iFMount2 = octpch(p37) ; FM amount at end itabFMount = p38 iFMountvar = octpch(p39) ; iAMbypass = p40 iFMbypass = p41 kgindex phasor 1/p3 agindex phasor 1/p3 ; a-rate phasor kfreq line ifreq1, p3, ifreq2 kfreqvar tablei kgindex*ftlen(itabfreq), itabfreq kfreq = cpsoct(kfreq + kfreqvar*ifreqvar) kband line iband1, p3, iband2 kbandvar tablei kgindex*ftlen(itabband), itabband kband = (kband + kbandvar*ibandvar) * kfreq apos line ipos1, p3, ipos2 aposvar tablei agindex*ftlen(itabpos), itabpos apos = apos + aposvar*iposvar aposl = (apos + 1) / 2 aposr = 1 - aposl ;envelopes kindextex phasor 1/(p3*inflx1*2) iphase = 1 - frac(1/((1-inflx2)*2)) ;print iphase kindexatt phasor 1/(p3*(1-inflx2)*2), iphase if (kgindex > inflx1) kgoto atten ktabtex1 tablei kindextex*ftlen(itabltex1), itabltex1 ktabtex2 tablei kindextex*ftlen(itabltex2), itabltex2 ktabtex = (1-interpo)*ktabtex1 + interpo*ktabtex2 kamp = iamp*ktabtex if (kgindex < inflx2) kgoto cont atten: if (kgindex < inflx2) kgoto cont ktabatt1 tablei kindexatt*ftlen(itablatt1), itablatt1 ktabatt2 tablei kindexatt*ftlen(itablatt2), itablatt2 ktabatt = (1-interpo)*ktabatt1 + interpo*ktabatt2 kamp = iamp*ktabatt cont: if iAMbypass=0 goto fm ;AM kAM line iAM1, p3, iAM2 kfreqvarAM tablei kgindex*ftlen(itabfreqAM), itabfreqAM kAM = cpsoct(kAM + kfreqvarAM*ifreqvarAM) kAMount line iAMount1, p3, iAMount2 kAMountvar tablei kgindex*ftlen(itabAMount), itabAMount kAMount = kAMount + kAMountvar*iAMountvar kam poscil kAMount*kamp*.5, kAM, 10 kam = kam - kAMount*kamp*.5 fm: if iFMbypass=0 goto grain ;FM kFM line iFM1, p3, iFM2 kfreqvarFM tablei kgindex*ftlen(itabfreqFM), itabfreqFM kFM = cpsoct(kFM + kfreqvarFM*ifreqvarFM) kFMount line iFMount1, p3, iFMount2 kFMountvar tablei kgindex*ftlen(itabFMount), itabFMount kFMount = (kFMount + kFMountvar*iFMountvar) * kfreq kfm poscil kFMount, kFM, 10 grain: anoise trirand 1 afilt1 reson anoise, kfreq+kfm, kband afilt2 reson afilt1, kfreq+kfm, kband afilt3 reson afilt2, kfreq+kfm, kband aamp = 1 abalance balance afilt3, aamp agrain = abalance*(kamp+kam) outs agrain*aposl, agrain*aposr endin ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; instr 3 ; sample grain with dinamic windows, AM and FM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; kam init 0 kfm init 0 iamp = p4 ; grain max. amplitude isample = p5 ; sample table ipoint = p6 ; start point on sample (0-1) ipitch1 = p7 ; 1=original pitch, if negative goes backwards ipitch2 = p8 ; pitch at end (line func.) itabpitch = p9 ; pitch table ipitchvar = p10 ; max. variation iextra1 = p11 ; parameter for nothing (to preserv structure of parameter for all instruments) iextra2 = p12 inflx1 = p13 ; inflx. point "tex" (0-1) inflx2 = p14 ; inflx. point "atten" (0-1) itabltex1 = p15 ; "tex" window 1 itablatt1 = p16 ; "atten" window 1 itabltex2 = p17 ; "tex" window 2 itablatt2 = p18 ; "atten" window 2 interpo = p19 ; interpolation index (0 => 100% itab1, 1 => 100% itab2) ipos1 = p20-.4 ; (1 left => -1 right) ipos2 = p21-.4 itabpos = p22 iposvar = p23 iAM1 = octpch(p24) ; AM frec. at start iAM2 = octpch(p25) ; AM frec. at end itabfreqAM = p26 ; table for AM frecuencies ifreqvarAM = octpch(p27) ; iAMount1 = p28 ; AM amount at start (0 = without AM, 1 = 100% AM) iAMount2 = p29 ; AM amount at end (0 = without AM, 1 = 100% AM) itabAMount = p30 iAMountvar = p31 ; 1 = 100% iFM1 = octpch(p32) ; FM frec. at start iFM2 = octpch(p33) ; FM frec. at end itabfreqFM = p34 ; table for FM frecuencies ifreqvarFM = octpch(p35) ; iFMount1 = octpch(p36) ; FM amount at start (vibrato +/- pitchclass) iFMount2 = octpch(p37) ; FM amount at end itabFMount = p38 iFMountvar = octpch(p39) ; iAMbypass = p40 iFMbypass = p41 kgindex phasor 1/p3 agindex phasor 1/p3 ; a-rate phasor kpitch line ipitch1, p3, ipitch2 kpitchvar tablei kgindex*ftlen(itabpitch), itabpitch kpitch = kpitch + kpitchvar*ipitchvar iorig = sr/ftlen(isample) ; 1 = origin. pitch kfreq = kpitch*iorig apos line ipos1, p3, ipos2 aposvar tablei agindex*ftlen(itabpos), itabpos apos = apos + aposvar*iposvar aposl = (apos + 1) / 2 aposr = 1 - aposl ;envelopes kindextex phasor 1/(p3*inflx1*2) iphase = 1 - frac(1/((1-inflx2)*2)) ;print iphase kindexatt phasor 1/(p3*(1-inflx2)*2), iphase if (kgindex > inflx1) kgoto atten ktabtex1 tablei kindextex*ftlen(itabltex1), itabltex1 ktabtex2 tablei kindextex*ftlen(itabltex2), itabltex2 ktabtex = (1-interpo)*ktabtex1 + interpo*ktabtex2 kamp = iamp*ktabtex if (kgindex < inflx2) kgoto cont atten: if (kgindex < inflx2) kgoto cont ktabatt1 tablei kindexatt*ftlen(itablatt1), itablatt1 ktabatt2 tablei kindexatt*ftlen(itablatt2), itablatt2 ktabatt = (1-interpo)*ktabatt1 + interpo*ktabatt2 kamp = iamp*ktabatt cont: if iAMbypass=0 goto fm ;AM kAM line iAM1, p3, iAM2 kfreqvarAM tablei kgindex*ftlen(itabfreqAM), itabfreqAM kAM = cpsoct(kAM + kfreqvarAM*ifreqvarAM) kAMount line iAMount1, p3, iAMount2 kAMountvar tablei kgindex*ftlen(itabAMount), itabAMount kAMount = kAMount + kAMountvar*iAMountvar kam poscil kAMount*kamp*.5, kAM, 10 kam = kam - kAMount*kamp*.5 fm: if iFMbypass=0 goto grain ;FM kFM line iFM1, p3, iFM2 kfreqvarFM tablei kgindex*ftlen(itabfreqFM), itabfreqFM kFM = cpsoct(kFM + kfreqvarFM*ifreqvarFM) kFMount line iFMount1, p3, iFMount2 kFMountvar tablei kgindex*ftlen(itabFMount), itabFMount kFMount = (kFMount + kFMountvar*iFMountvar) * kfreq kfm poscil kFMount, kFM, 10 grain: agrain poscil kamp + kam, kfreq + kfm, isample, ipoint outs agrain*aposl, agrain*aposr endin ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; instr 11 ; granulator with schedkwhen for instr 1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; insnum = 1 itrigger1 = p4 itrigger2 = p5 itabtrig = p6 itrigvar = p7 imintime1 = p8 imintime2 = p9 itabmintime = p10 imintimevar = p11 imaxnum1 = p12 imaxnum2 = p13 itabmaxnum = p14 imaxnumvar = p15 iwhen = p16 itabwhen = p17 iwhenvar = p18 idurgr1 = p19 idurgr2 = p20 itabdurgr = p21 idurgrvar = p22 iamp1 = p23 iamp2 = p24 itabamp = p25 iampvar = p26 ifreqstart1 = p27 ; formant freq. in pch. class ifreqstart2 = p28 itabfreqstart = p29 ifreqstartvar = p30 ifreqend1 = p31 ; formant freq. in pch. class ifreqend2 = p32 itabfreqend = p33 ifreqendvar = p34 itabfreq = p35 ; table for fr. ifreqvar1 = p36 ; formant freq. in pch. class ifreqvar2 = p37 itabfreqvar = p38 ifreqvarvar = p39 ifn = p40 ; sinus function at 0 inflxa1 = p41 ; inflx. point "tex" (0-1) inflxa2 = p42 itabinflxa = p43 inflxavar = p44 inflxb1 = p45 ; inflx. point "atte" (0-1) inflxb2 = p46 itabinflxb = p47 inflxbvar = p48 itabltex1 = p49 ; "tex" window 1 itablatt1 = p50 ; "atten" window 1 itabltex2 = p51 ; "tex" window 2 itablatt2 = p52 ; "atten" window 2 interpo1 = p53 ; interpolation index (0 => 100% itab1, 1 => 100% itab2) interpo2 = p54 itabinterpo = p55 interpovar = p56 iposa1 = p57 ; (1 left => -1 right) iposa2 = p58 itabposa = p59 iposavar = p60 iposb1 = p61 ; (1 left => -1 right) iposb2 = p62 itabposb = p63 iposbvar = p64 itabpos = p65 iposvar = p66 iAM1 = p67 ; AM frec. at start iAM2 = p68 ; AM frec. at end itabfreqAM = p69 ; table for AM frecuencies ifreqvarAM = p70 ; iAMount1 = p71 ; AM amount at start (0 = without AM, 1 = 100% AM) iAMount2 = p72 ; AM amount at end (0 = without AM, 1 = 100% AM) itabAMount = p73 iAMountvar = p74 ; 1 = 100% iFM1 = p75 ; FM frec. at start iFM2 = p76 ; FM frec. at end itabfreqFM = p77 ; table for FM frecuencies ifreqvarFM = p78 ; iFMount1 = p79 ; FM amount at start (vibrato +/- pitchclass) iFMount2 = p80 ; FM amount at end itabFMount = p81 iFMountvar = p82 ; iAMbypass = p83 iFMbypass = p84 kgindex phasor 1/p3 agindex phasor 1/p3 ; a-rate phasor ktrigger line itrigger1, p3, itrigger2 ktrigvar tablei kgindex*ftlen(itabtrig), itabtrig ktrigger = ktrigger + ktrigvar*itrigvar ktrigger = (ktrigger > 0 ? ktrigger : 0) kmintime line imintime1, p3, imintime2 kmintimevar tablei kgindex*ftlen(itabmintime), itabmintime kmintime = kmintime + kmintimevar*imintimevar kmintime = (kmintime > 0 ? kmintime : 0) kmaxnum line imaxnum1, p3, imaxnum2 kmaxnumvar tablei kgindex*ftlen(itabmaxnum), itabmaxnum kmaxnum = int(kmaxnum + kmaxnumvar*imaxnumvar) kmaxnum = (kmaxnum > 0 ? kmaxnum : 0) kwhenvar tablei kgindex*ftlen(itabwhen), itabwhen kwhen = iwhen + kwhenvar*iwhenvar kwhen = (kwhen > 0 ? kwhen : 0) kdurgr line idurgr1, p3, idurgr2 kdurgrvar tablei kgindex*ftlen(itabdurgr), itabdurgr kdurgr = kdurgr + kdurgrvar*idurgrvar kdurgr = (kdurgr > 0 ? kdurgr : 0) kamp line iamp1, p3, iamp2 kampvar tablei kgindex*ftlen(itabamp), itabamp kamp = kamp + kampvar*iampvar kamp = (kamp > 0 ? kamp : 0) kfreqstart line ifreqstart1, p3, ifreqstart2 kfreqstartvar tablei kgindex*ftlen(itabfreqstart), itabfreqstart kfreqstart = pchoct(kfreqstart + kfreqstartvar*ifreqstartvar) kfreqend line ifreqend1, p3, ifreqend2 kfreqendvar tablei kgindex*ftlen(itabfreqend), itabfreqend kfreqend = pchoct(kfreqend + kfreqendvar*ifreqendvar) kfreqvar line ifreqvar1, p3, ifreqvar2 kfreqvarvar tablei kgindex*ftlen(itabfreqvar), itabfreqvar kfreqvar = pchoct(kfreqvar + kfreqvarvar*ifreqvarvar) kinflxa line inflxa1, p3, inflxa2 kinflxavar tablei kgindex*ftlen(itabinflxa), itabinflxa kinflxa = kinflxa + kinflxavar*inflxavar kinflxa = (kinflxa > 0 ? kinflxa : 0) kinflxa = (kinflxa <= 1 ? kinflxa : 1) kinflxb line inflxb1, p3, inflxb2 kinflxbvar tablei kgindex*ftlen(itabinflxb), itabinflxb kinflxb = kinflxb + kinflxbvar*inflxbvar kinflxb = (kinflxb > 0 ? kinflxb : 0) kinflxb = (kinflxb <= 1 ? kinflxb : 1) kinflxb = (kinflxb >= kinflxa ? kinflxb : kinflxa) kinterpo line interpo1, p3, interpo2 kinterpovar tablei kgindex*ftlen(itabinterpo), itabinterpo kinterpo = kinterpo + kinterpovar*interpovar kposa line iposa1, p3, iposa2 kposavar tablei kgindex*ftlen(itabposa), itabposa kposa = kposa + kposavar*iposavar kposb line iposb1, p3, iposb2 kposbvar tablei kgindex*ftlen(itabposb), itabposb kposb = kposb + kposbvar*iposbvar schedkwhen ktrigger, kmintime, kmaxnum, insnum, kwhen, kdurgr, kamp, kfreqstart, kfreqend, itabfreq, kfreqvar, ifn, 0, 0, 0, kinflxa, kinflxb, itabltex1, itablatt1, itabltex2, itablatt2, kinterpo, kposa, kposb, itabpos, iposvar, iAM1, iAM2, itabfreqAM, ifreqvarAM, iAMount1, iAMount2, itabAMount, iAMountvar, iFM1, iFM2, itabfreqFM, ifreqvarFM, iFMount1, iFMount2, itabFMount, iFMountvar, iAMbypass, iFMbypass endin ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; instr 12 ; granulator with schedkwhen for instr 2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; insnum = 2 itrigger1 = p4 itrigger2 = p5 itabtrig = p6 itrigvar = p7 imintime1 = p8 imintime2 = p9 itabmintime = p10 imintimevar = p11 imaxnum1 = p12 imaxnum2 = p13 itabmaxnum = p14 imaxnumvar = p15 iwhen = p16 itabwhen = p17 iwhenvar = p18 idurgr1 = p19 idurgr2 = p20 itabdurgr = p21 idurgrvar = p22 iamp1 = p23 iamp2 = p24 itabamp = p25 iampvar = p26 ifreqstart1 = p27 ; formant freq. in pch. class ifreqstart2 = p28 itabfreqstart = p29 ifreqstartvar = p30 ifreqend1 = p31 ; formant freq. in pch. class ifreqend2 = p32 itabfreqend = p33 ifreqendvar = p34 itabfreq = p35 ; table for fr. ifreqvar1 = p36 ; formant freq. in pch. class ifreqvar2 = p37 itabfreqvar = p38 ifreqvarvar = p39 ibandstart1 = p40 ; formant band. in pch. class ibandstart2 = p41 itabbandstart = p42 ibandstartvar = p43 ibandend1 = p44 ; formant band. in pch. class ibandend2 = p45 itabbandend = p46 ibandendvar = p47 itabband = p48 ; table for fr. ibandvar1 = p49 ; formant band. in pch. class ibandvar2 = p50 itabbandvar = p51 ibandvarvar = p52 inflxa1 = p53 ; inflx. point "tex" (0-1) inflxa2 = p54 itabinflxa = p55 inflxavar = p56 inflxb1 = p57 ; inflx. point "atte" (0-1) inflxb2 = p58 itabinflxb = p59 inflxbvar = p60 itabltex1 = p61 ; "tex" window 1 itablatt1 = p62 ; "atten" window 1 itabltex2 = p63 ; "tex" window 2 itablatt2 = p64 ; "atten" window 2 interpo1 = p65 ; interpolation index (0 => 100% itab1, 1 => 100% itab2) interpo2 = p66 itabinterpo = p67 interpovar = p68 iposa1 = p69 ; (1 left => -1 right) iposa2 = p70 itabposa = p71 iposavar = p72 iposb1 = p73 ; (1 left => -1 right) iposb2 = p74 itabposb = p75 iposbvar = p76 itabpos = p77 iposvar = p78 iAM1 = p79 ; AM frec. at start iAM2 = p80 ; AM frec. at end itabfreqAM = p81 ; table for AM frecuencies ifreqvarAM = p82 ; iAMount1 = p83 ; AM amount at start (0 = without AM, 1 = 100% AM) iAMount2 = p84 ; AM amount at end (0 = without AM, 1 = 100% AM) itabAMount = p85 iAMountvar = p86 ; 1 = 100% iFM1 = p87 ; FM frec. at start iFM2 = p88 ; FM frec. at end itabfreqFM = p89 ; table for FM frecuencies ifreqvarFM = p90 ; iFMount1 = p91 ; FM amount at start (vibrato +/- pitchclass) iFMount2 = p92 ; FM amount at end itabFMount = p93 iFMountvar = p94 ; iAMbypass = p95 iFMbypass = p96 kgindex phasor 1/p3 agindex phasor 1/p3 ; a-rate phasor ktrigger line itrigger1, p3, itrigger2 ktrigvar tablei kgindex*ftlen(itabtrig), itabtrig ktrigger = ktrigger + ktrigvar*itrigvar ktrigger = (ktrigger > 0 ? ktrigger : 0) kmintime line imintime1, p3, imintime2 kmintimevar tablei kgindex*ftlen(itabmintime), itabmintime kmintime = kmintime + kmintimevar*imintimevar kmintime = (kmintime > 0 ? kmintime : 0) kmaxnum line imaxnum1, p3, imaxnum2 kmaxnumvar tablei kgindex*ftlen(itabmaxnum), itabmaxnum kmaxnum = int(kmaxnum + kmaxnumvar*imaxnumvar) kmaxnum = (kmaxnum > 0 ? kmaxnum : 0) kwhenvar tablei kgindex*ftlen(itabwhen), itabwhen kwhen = iwhen + kwhenvar*iwhenvar kwhen = (kwhen > 0 ? kwhen : 0) kdurgr line idurgr1, p3, idurgr2 kdurgrvar tablei kgindex*ftlen(itabdurgr), itabdurgr kdurgr = kdurgr + kdurgrvar*idurgrvar kdurgr = (kdurgr > 0 ? kdurgr : 0) kamp line iamp1, p3, iamp2 kampvar tablei kgindex*ftlen(itabamp), itabamp kamp = kamp + kampvar*iampvar kamp = (kamp > 0 ? kamp : 0) kfreqstart line ifreqstart1, p3, ifreqstart2 kfreqstartvar tablei kgindex*ftlen(itabfreqstart), itabfreqstart kfreqstart = pchoct(kfreqstart + kfreqstartvar*ifreqstartvar) kfreqend line ifreqend1, p3, ifreqend2 kfreqendvar tablei kgindex*ftlen(itabfreqend), itabfreqend kfreqend = pchoct(kfreqend + kfreqendvar*ifreqendvar) kfreqvar line ifreqvar1, p3, ifreqvar2 kfreqvarvar tablei kgindex*ftlen(itabfreqvar), itabfreqvar kfreqvar = pchoct(kfreqvar + kfreqvarvar*ifreqvarvar) kbandstart line ibandstart1, p3, ibandstart2 kbandstartvar tablei kgindex*ftlen(itabbandstart), itabbandstart kbandstart = pchoct(kbandstart + kbandstartvar*ibandstartvar) kbandend line ibandend1, p3, ibandend2 kbandendvar tablei kgindex*ftlen(itabbandend), itabbandend kbandend = pchoct(kbandend + kbandendvar*ibandendvar) kbandvar line ibandvar1, p3, ibandvar2 kbandvarvar tablei kgindex*ftlen(itabbandvar), itabbandvar kbandvar = pchoct(kbandvar + kbandvarvar*ibandvarvar) kinflxa line inflxa1, p3, inflxa2 kinflxavar tablei kgindex*ftlen(itabinflxa), itabinflxa kinflxa = kinflxa + kinflxavar*inflxavar kinflxa = (kinflxa > 0 ? kinflxa : 0) kinflxa = (kinflxa <= 1 ? kinflxa : 1) kinflxb line inflxb1, p3, inflxb2 kinflxbvar tablei kgindex*ftlen(itabinflxb), itabinflxb kinflxb = kinflxb + kinflxbvar*inflxbvar kinflxb = (kinflxb > 0 ? kinflxb : 0) kinflxb = (kinflxb <= 1 ? kinflxb : 1) kinflxb = (kinflxb >= kinflxa ? kinflxb : kinflxa) kinterpo line interpo1, p3, interpo2 kinterpovar tablei kgindex*ftlen(itabinterpo), itabinterpo kinterpo = kinterpo + kinterpovar*interpovar kposa line iposa1, p3, iposa2 kposavar tablei kgindex*ftlen(itabposa), itabposa kposa = kposa + kposavar*iposavar kposb line iposb1, p3, iposb2 kposbvar tablei kgindex*ftlen(itabposb), itabposb kposb = kposb + kposbvar*iposbvar schedkwhen ktrigger, kmintime, kmaxnum, insnum, kwhen, kdurgr, kamp, kfreqstart, kfreqend, itabfreq, kfreqvar, kbandstart, kbandend, itabband, kbandvar, kinflxa, kinflxb, itabltex1, itablatt1, itabltex2, itablatt2, kinterpo, kposa, kposb, itabpos, iposvar, iAM1, iAM2, itabfreqAM, ifreqvarAM, iAMount1, iAMount2, itabAMount, iAMountvar, iFM1, iFM2, itabfreqFM, ifreqvarFM, iFMount1, iFMount2, itabFMount, iFMountvar, iAMbypass, iFMbypass endin ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; instr 13 ; sample granulator with schedkwhen for instr 3 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; insnum = 3 itrigger1 = p4 itrigger2 = p5 itabtrig = p6 itrigvar = p7 imintime1 = p8 imintime2 = p9 itabmintime = p10 imintimevar = p11 imaxnum1 = p12 imaxnum2 = p13 itabmaxnum = p14 imaxnumvar = p15 iwhen = p16 itabwhen = p17 iwhenvar = p18 idurgr1 = p19 idurgr2 = p20 itabdurgr = p21 idurgrvar = p22 iamp1 = p23 iamp2 = p24 itabamp = p25 iampvar = p26 isample1 = p27 isample2 = p28 itabsample = p29 itotsample = p30 ; total number of samples ipoint1 = p31 ; start point on sample (0-1) ipoint2 = p32 itabpoint = p33 ipointvar = p34 ipitchstart1 = p35 ipitchstart2 = p36 itabpitchstart = p37 ipitchstartvar = p38 ipitchend1 = p39 ipitchend2 = p40 itabpitchend = p41 ipitchendvar = p42 itabpitch = p43 ipitchvar1 = p44 ipitchvar2 = p45 itabpitchvar = p46 ipitchvarvar = p47 inflxa1 = p48 ; inflx. point "tex" (0-1) inflxa2 = p49 itabinflxa = p50 inflxavar = p51 inflxb1 = p52 ; inflx. point "atte" (0-1) inflxb2 = p53 itabinflxb = p54 inflxbvar = p55 itabltex1 = p56 ; "tex" window 1 itablatt1 = p57 ; "atten" window 1 itabltex2 = p58 ; "tex" window 2 itablatt2 = p59 ; "atten" window 2 interpo1 = p60 ; interpolation index (0 => 100% itab1, 1 => 100% itab2) interpo2 = p61 itabinterpo = p62 interpovar = p63 iposa1 = p64 ; (1 left => -1 right) iposa2 = p65 itabposa = p66 iposavar = p67 iposb1 = p68 ; (1 left => -1 right) iposb2 = p69 itabposb = p70 iposbvar = p71 itabpos = p72 iposvar = p73 iAM1 = p74 ; AM frec. at start iAM2 = p75 ; AM frec. at end itabfreqAM = p76 ; table for AM frecuencies ifreqvarAM = p77 ; iAMount1 = p78 ; AM amount at start (0 = without AM, 1 = 100% AM) iAMount2 = p79 ; AM amount at end (0 = without AM, 1 = 100% AM) itabAMount = p80 iAMountvar = p81 ; 1 = 100% iFM1 = p82 ; FM frec. at start iFM2 = p83 ; FM frec. at end itabfreqFM = p84 ; table for FM frecuencies ifreqvarFM = p85 ; iFMount1 = p86 ; FM amount at start (vibrato +/- pitchclass) iFMount2 = p87 ; FM amount at end itabFMount = p88 iFMountvar = p89 ; iAMbypass = p90 iFMbypass = p91 kgindex phasor 1/p3 agindex phasor 1/p3 ; a-rate phasor ktrigger line itrigger1, p3, itrigger2 ktrigvar tablei kgindex*ftlen(itabtrig), itabtrig ktrigger = ktrigger + ktrigvar*itrigvar ktrigger = (ktrigger > 0 ? ktrigger : 0) kmintime line imintime1, p3, imintime2 kmintimevar tablei kgindex*ftlen(itabmintime), itabmintime kmintime = kmintime + kmintimevar*imintimevar kmintime = (kmintime > 0 ? kmintime : 0) kmaxnum line imaxnum1, p3, imaxnum2 kmaxnumvar tablei kgindex*ftlen(itabmaxnum), itabmaxnum kmaxnum = int(kmaxnum + kmaxnumvar*imaxnumvar) kmaxnum = (kmaxnum > 0 ? kmaxnum : 0) kwhenvar tablei kgindex*ftlen(itabwhen), itabwhen kwhen = iwhen + kwhenvar*iwhenvar kwhen = (kwhen > 0 ? kwhen : 0) kdurgr line idurgr1, p3, idurgr2 kdurgrvar tablei kgindex*ftlen(itabdurgr), itabdurgr kdurgr = kdurgr + kdurgrvar*idurgrvar kdurgr = (kdurgr > 0 ? kdurgr : 0) kamp line iamp1, p3, iamp2 kampvar tablei kgindex*ftlen(itabamp), itabamp kamp = kamp + kampvar*iampvar kamp = (kamp > 0 ? kamp : 0) ksample line isample1, p3, isample2 ktotsample tablei kgindex*ftlen(itabsample), itabsample ksample = int(ksample + abs(ktotsample*itotsample)) display ksample, p3 kpoint line ipoint1, p3, ipoint2 kpointvar tablei kgindex*ftlen(itabpoint), itabpoint kpoint = kpoint + kpointvar*ipointvar kpitchstart line ipitchstart1, p3, ipitchstart2 kpitchstartvar tablei kgindex*ftlen(itabpitchstart), itabpitchstart kpitchstart = pchoct(kpitchstart + kpitchstartvar*ipitchstartvar) kpitchend line ipitchend1, p3, ipitchend2 kpitchendvar tablei kgindex*ftlen(itabpitchend), itabpitchend kpitchend = pchoct(kpitchend + kpitchendvar*ipitchendvar) kpitchvar line ipitchvar1, p3, ipitchvar2 kpitchvarvar tablei kgindex*ftlen(itabpitchvar), itabpitchvar kpitchvar = pchoct(kpitchvar + kpitchvarvar*ipitchvarvar) kinflxa line inflxa1, p3, inflxa2 kinflxavar tablei kgindex*ftlen(itabinflxa), itabinflxa kinflxa = kinflxa + kinflxavar*inflxavar kinflxa = (kinflxa > 0 ? kinflxa : 0) kinflxa = (kinflxa <= 1 ? kinflxa : 1) kinflxb line inflxb1, p3, inflxb2 kinflxbvar tablei kgindex*ftlen(itabinflxb), itabinflxb kinflxb = kinflxb + kinflxbvar*inflxbvar kinflxb = (kinflxb > 0 ? kinflxb : 0) kinflxb = (kinflxb <= 1 ? kinflxb : 1) kinflxb = (kinflxb >= kinflxa ? kinflxb : kinflxa) kinterpo line interpo1, p3, interpo2 kinterpovar tablei kgindex*ftlen(itabinterpo), itabinterpo kinterpo = kinterpo + kinterpovar*interpovar kposa line iposa1, p3, iposa2 kposavar tablei kgindex*ftlen(itabposa), itabposa kposa = kposa + kposavar*iposavar kposb line iposb1, p3, iposb2 kposbvar tablei kgindex*ftlen(itabposb), itabposb kposb = kposb + kposbvar*iposbvar schedkwhen ktrigger, kmintime, kmaxnum, insnum, kwhen, kdurgr, kamp, ksample, kpoint, kpitchstart, kpitchend, itabpitch, kpitchvar, 0, 0, kinflxa, kinflxb, itabltex1, itablatt1, itabltex2, itablatt2, kinterpo, kposa, kposb, itabpos, iposvar, iAM1, iAM2, itabfreqAM, ifreqvarAM, iAMount1, iAMount2, itabAMount, iAMountvar, iFM1, iFM2, itabfreqFM, ifreqvarFM, iFMount1, iFMount2, itabFMount, iFMountvar, iAMbypass, iFMbypass endin ;function tabs 1 - 10 reserved in .orc for envelopes and sinus: ;;;;; instr 11 ;itrigger1 = p4 ;itrigger2 = p5 ;itabtrig = p6 ;itrigvar = p7 ;imintime1 = p8 ;imintime2 = p9 ;itabmintime = p10 ;imintimevar = p11 ;imaxnum1 = p12 ;imaxnum2 = p13 ;itabmaxnum = p14 ;imaxnumvar = p15 ;iwhen = p16 ;itabwhen = p17 ;iwhenvar = p18 ;idurgr1 = p19 ;idurgr2 = p20 ;itabdurgr = p21 ;idurgrvar = p22 ;iamp1 = p23 ;iamp2 = p24 ;itabamp = p25 ;iampvar = p26 ;ifreqstart1 = p27 ; formant freq. in pch. class ;ifreqstart2 = p28 ;itabfreqstart = p29 ;ifreqstartvar = p30 ;ifreqend1 = p31 ; formant freq. in pch. class ;ifreqend2 = p32 ;itabfreqend = p33 ;ifreqendvar = p34 ;itabfreq = p35 ; table for fr. ;ifreqvar1 = p36 ; formant freq. in pch. class ;ifreqvar2 = p37 ;itabfreqvar = p38 ;ifreqvarvar = p39 ;ifn = p40 ; sinus function at 0 ;inflxa1 = p41 ; inflx. point "tex" (0-1) ;inflxa2 = p42 ;itabinflxa = p43 ;inflxavar = p44 ;inflxb1 = p45 ; inflx. point "atte" (0-1) ;inflxb2 = p46 ;itabinflxb = p47 ;inflxbvar = p48 ;itabltex1 = p49 ; "tex" window 1 ;itablatt1 = p50 ; "atten" window 1 ;itabltex2 = p51 ; "tex" window 2 ;itablatt2 = p52 ; "atten" window 2 ;interpo1 = p53 ; interpolation index (0 => 100% itab1, 1 => 100% itab2) ;interpo2 = p54 ;itabinterpo = p55 ;interpovar = p56 ;iposa1 = p57 ; (1 left => -1 right) ;iposa2 = p58 ;itabposa = p59 ;iposavar = p60 ;iposb1 = p61 ; (1 left => -1 right) ;iposb2 = p62 ;itabposb = p63 ;iposbvar = p64 ;itabpos = p65 ;iposvar = p66 ;iAM1 = p67 ; AM frec. at start ;iAM2 = p68 ; AM frec. at end ;itabfreqAM = p69 ; table for AM frecuencies ;ifreqvarAM = p70 ; ;iAMount1 = p71 ; AM amount at start (0 = without AM, 1 = 100% AM) ;iAMount2 = p72 ; AM amount at end (0 = without AM, 1 = 100% AM) ;itabAMount = p73 ;iAMountvar = p74 ; 1 = 100% ;iFM1 = p75 ; FM frec. at start ;iFM2 = p76 ; FM frec. at end ;itabfreqFM = p77 ; table for FM frecuencies ;ifreqvarFM = p78 ; ;iFMount1 = p79 ; FM amount at start (vibrato +/- pitchclass) ;iFMount2 = p80 ; FM amount at end ;itabFMount = p81 ;iFMountvar = p82 ; ;iAMbypass = p83 ;iFMbypass = p84 f55 0 8388608 1 "final00.wav" 0 0 1 f65 0 8388608 1 "final00.wav" 0 0 2 t 0 50.39 ;f53 0 65536 1 "nubeclusters.aif" 0 0 1 ;f54 0 65536 1 "cluster.aif" 0 0 1 ;f14 0 2048 10 0 0 0 0 0 5 f21 0 8388608 21 6 ;f20 0 32 -23 "table.txt" ;p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 p18 p19 p20 p21 p22 p23 p24 p25 p26 p27 p28 p29 p30 p31 p32 p33 p34 p35 p36 p37 p38 p39 p40 p41 p42 p43 p44 p45 p46 p47 p48 p49 p50 p51 p52 p53 p54 p55 p56 p57 p58 p59 p60 p61 p62 p63 p64 p65 p66 p67 p68 p69 p70 p71 p72 p73 p74 p75 p76 p77 p78 p79 p80 p81 p82 p83 p84 p85 p86 p87 p88 p89 p90 p91 p92 p93 p94 p95 p96 #include "Users/jose/Desktop/CDAMEE/Final/testfile.plc" e i13 0 140 1 1 9 0 .02 .06 21 .024 0 0 9 0 0 9 0 .14 .4 21 .14 40000 40000 21 40000 58 58 9 0 .325 .99 21 .2 0.9 1.46 9 0 .7 1.46 9 0 21 0 1 9 0 .1 .4 9 0 .01 .1 21 .02 6 6 6 6 .5 .5 9 0 1 1 9 0 1 1 9 0 9 0 4.04 4.07 8 0 0 1 8 0 4 4 8 0 0 0 8 0.004 0 0 i13 0 140 1 1 9 0 .02 .06 21 .024 0 0 9 0 0 9 0 .14 .4 21 .12 40000 40000 21 40000 68 68 9 0 .325 .99 21 .2 0.9 1.4 9 0 .7 1.4 9 0 21 0 1 9 0 .1 .4 9 0 .01 .1 21 .02 6 6 6 6 .5 .5 9 0 -1 -1 9 0 1 1 9 0 9 0 4.04 4.07 8 0 0 1 8 0 4 4 8 0 0 0 8 0.004 0 0 e ;nota estandar i13 0 50 1 1 9 0 .1 .1 9 0 0 0 9 0 0 9 0 .1 1 9 0 20000 20000 9 0 58 58 9 0 0 1 9 0 1 1 9 0 1 1 9 0 8 0 0 9 0 .4 .4 9 0 .6 .6 9 0 6 6 6 6 .5 .5 9 0 0 0 21 1 0 0 21 1 9 0 4.04 4.07 8 0 0 1 8 0 4 4 8 0 0 0 8 0.004 0 0 e #include "Users/jose/Desktop/CDAMEE/Final/testfile.plc" e ;nota grave i13 0 3 1 1 9 0 .05 .05 21 .04 0 0 9 0 0 9 0 .4 .4 21 .14 140000 40000 9 0 58 58 9 0 .250 .253 21 .003 1 1 9 0 1 1 9 0 8 0 0 9 0 .4 .4 9 0 .6 .6 9 0 6 6 6 6 .5 .5 9 0 1 1 9 0 1 1 9 0 9 0 4.04 4.07 8 0 0 1 8 0 4 4 8 0 0 0 8 0.004 0 0 i13 0 3 1 1 9 0 .05 .05 21 .04 0 0 9 0 0 9 0 .4 .4 21 .12 140000 40000 9 0 68 68 9 0 .250 .253 21 .003 1 1 9 0 1 1 9 0 8 0 0 9 0 .4 .4 9 0 .6 .6 9 0 6 6 6 6 .5 .5 9 0 -1 -1 9 0 1 1 9 0 9 0 4.04 4.07 8 0 0 1 8 0 4 4 8 0 0 0 8 0.004 0 0 e ;sul pont i13 0 4 1 1 9 0 .05 .05 21 .04 0 0 9 0 0 9 0 .4 .4 21 .14 90000 40000 9 0 58 58 9 0 .325 .33 21 .003 1 1 21 .1 1 1 9 0 8 0 0 9 0 .4 .4 9 0 .6 .6 9 0 6 6 6 6 .5 .5 9 0 1 1 9 0 1 1 9 0 9 0 4.04 4.07 8 0 0 1 8 0 4 4 8 0 0 0 8 0.004 0 0 i13 0 4 1 1 9 0 .05 .05 21 .04 0 0 9 0 0 9 0 .4 .4 21 .12 90000 40000 9 0 68 68 9 0 .325 .33 21 .003 1 1 21 .1 1 1 9 0 8 0 0 9 0 .4 .4 9 0 .6 .6 9 0 6 6 6 6 .5 .5 9 0 -1 -1 9 0 1 1 9 0 9 0 4.04 4.07 8 0 0 1 8 0 4 4 8 0 0 0 8 0.004 0 0 f51 0 131072 1 "Quinta.aif" 0 0 1 f61 0 131072 1 "Quinta.aif" 0 0 2 f52 0 131072 1 "Munch.aif" 0 0 1 f62 0 131072 1 "Munch.aif" 0 0 2 f53 0 524288 1 "caosguitarra.aif" 0 0 1 f63 0 524288 1 "caosguitarra.aif" 0 0 2 f54 0 524288 1 "Djembe.aif" 0 0 1 f64 0 524288 1 "Djembe.aif" 0 0 2 f55 0 524288 1 "Vasija.aif" 0 0 1 f65 0 524288 1 "Vasija.aif" 0 0 2 f56 0 524288 1 "Straw.aif" 0 0 1 f66 0 524288 1 "Straw.aif" 0 0 2 f57 0 524288 1 "Codetta.aif" 0 0 1 f67 0 524288 1 "Codetta.aif" 0 0 2 ;f58 0 16777216 1 "tonbeau.aif" 0 0 1 ;f68 0 16777216 1 "tonbeau.aif" 0 0 2 f59 0 131072 1 "notaClar.wav" 0 0 1 f69 0 131072 1 "notaClar.wav" 0 0 2 Version: 3 Render: File Ask: No SFDIR: /Users/jose/Desktop/CDAMEE/Final Functions: Window Listing: ioObject WindowBounds: 76 110 955 777 CurrentView: sco IOViewEdit: Off Options: -b64 -W -o/Users/jose/Desktop/CDAMEE/Final/finalTotal.wav -s -m3 -R ioView nobackground {65535, 65535, 65535} ioListing {0, 0} {400, 500}