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}