I am very found of this piece because it was the start of my work with granular reverberation for 'following' sounds. Also, I just love the effect. I heard something similar from the son's guitar pedal and just had to be able to do that myself!
import random
import math
sf.SetSampleRate(192000)
# Single threaded for debug
#def sf_do(toDo):
# return toDo()
def granularReverb(signal,ratio,delay):
def granularReverbInner():
out=[]
for grain in sf.Granulate(signal,50,10):
(signal_i,at)=grain
signal_i=sf.DirectRelength(signal_i,ratio-0.01+(0.02*random.random()))
for x in range(0,50):
out.append(
(
+signal_i,
at + (random.random()+random.random())*delay
)
)
-signal_i
return sf.Normalise(sf.MixAt(out))
return sf_do(granularReverbInner)
def reverbInner(signal,convol,grainLength):
def reverbInnerDo():
mag=sf.Magnitude(+signal)
if mag>0:
signal_=sf.Concatenate(signal,sf.Silence(grainLength))
signal_=sf.FrequencyDomain(signal_)
signal_=sf.CrossMultiply(convol,signal_)
signal_=sf.TimeDomain(signal_)
newMag=sf.Magnitude(+signal_)
signal_=sf.NumericVolume(signal_,mag/newMag)
# tail out clicks due to amplitude at end of signal
return signal_
else:
-convol
return signal
return sf_do(reverbInnerDo)
def reverberate(signal,convol):
def reverberateDo():
grainLength = sf.Length(+convol)
convol_=sf.FrequencyDomain(sf.Concatenate(convol,sf.Silence(grainLength)))
signal_=sf.Concatenate(signal,sf.Silence(grainLength))
out=[]
for grain in sf.Granulate(signal_,grainLength):
(signal_i,at)=grain
out.append((reverbInner(signal_i,+convol_,grainLength),at))
-convol_
return sf.Realise(sf.Normalise(sf.MixAt(out)))
return sf_do(reverberateDo)
# Get IRs
violinIRs = sf.ViolinBodyIRs(())
#violaIRs = sf.ViolaBodyIRs(())
celloIRs = sf.CelloBodyIRs(())
bassIRs = sf.BassBodyIRs(())
def createSawTooth(length,pitch):
signals=[]
v=1
opitch=pitch
it=1.0
phase=random.random()
while pitch<18000:
signals.append(sf.NumericVolume(sf.PhasedSineWave(length,pitch,phase),1.0/it))
pitch+=opitch
it+=1
return sf.Clean(sf.FixSize(sf.Mix(signals)))
def rawString(length,pitch):
def rawStringA(l,p):
def rawStringAIn():
return createSawTooth(l,p)
return sf_do(rawStringAIn)
pitch=float(pitch)
#pitch=pitch+pitch*random.random()*0.0001
s1=rawStringA(length,pitch)
s2=rawStringA(length,pitch*2.0)
s3=rawStringA(length,pitch*4.0)
s4=sf.WhiteNoise(length)
signal=sf.Normalise(
sf.Mix(
sf.Pcnt20(s4),
sf.Pcnt50(s1),
sf.Pcnt20(s2),
sf.Pcnt10(s3)
)
)
signal=sf.Clean(sf.ResonantFilter(signal,0.95,0.15,sf.Period(pitch)))
multi=sf.Normalise(
sf.DirectRelength(
sf.ButterworthLowPass(sf.WhiteNoise(length/500.0),2500,6),
0.001
)
)
multi=sf.Cut(0,sf.Length(+signal),multi)
signal=sf.Resample(
sf.DirectMix(1,sf.NumericVolume(multi,0.001)),
signal
)
return sf.Realise(sf.Normalise(sf.Clean(signal)))
def playStringClean(a,length,pitch,whiteAmount):
def rsd():
return rawString(length,pitch)
signal=0
if(pitch>500):
signal=sf.Normalise(sf.Mix(sf_do(rsd),sf_do(rsd),sf_do(rsd)))
else:
signal=sf.Normalise(sf.Mix(sf_do(rsd),sf_do(rsd)))
if(pitch>440):
signal=sf.ButterworthHighPass(signal,pitch*0.5,6)
signal=sf.ButterworthHighPass(signal,2000,1)
signal=sf.ButterworthLowPass(signal,8000,1)
if(pitch<128):
signal=sf.ButterworthHighPass(signal,pitch*0.5,1)
signal=sf.ButterworthHighPass(signal,500,1)
signal=sf.ButterworthLowPass(signal,2000,1)
else:
signal=sf.ButterworthHighPass(signal,pitch*0.5,3)
signal=sf.ButterworthHighPass(signal,1500,1)
signal=sf.ButterworthLowPass(signal,4000,1)
signal=sf.ButterworthLowPass(signal,pitch*10.0,1)
signal=sf.Mix(
sf.Pcnt25(+signal),
sf.Pcnt75(sf.RBJNotch(signal,pitch,0.5))
)
white=sf.WhiteNoise(length)
white=sf.ButterworthHighPass(white,pitch*2.0,2)
white=sf.ButterworthLowPass(white,pitch*6.0,1)
white=sf.Normalise(white)
white=sf.Multiply(white,+signal)
white=sf.NumericVolume(white,whiteAmount)
signal=sf.NumericVolume(signal,1.0-whiteAmount)
signal=sf.Normalise(sf.Mix(signal,white))
sq=sf.Mix(
sf.PhasedSineWave(length,pitch*0.95,random.random()),
sf.PhasedSineWave(length,pitch*1.05,random.random())
)
envb=sf.NumericShape((0,0.25),(a,0),(length,0))
sq=sf.Multiply(envb,sf.FixSize(sq))
enva=sf.NumericShape((0,0.75),(a,1),(length,1))
signal=sf.Multiply(enva,signal)
signal=sf.Mix(sq,sf.FixSize(signal))
sigs=[]
bodies=[]
if(pitch<128):
bodies=bassIRs
elif(pitch<440):
bodies=celloIRs
else:
bodies=violinIRs
for body in violinIRs:
sigs.append(reverberate(+signal,+body))
-signal
signal=sf.Normalise(sf.Mix(sigs))
return signal
def playString(pitch,e,a,d,dat,s,sat,r,whiteAmount,vibStart,vibMiddle,vibAmount,vibRate=2.0):
print ("Performing Note: ",pitch,e,a,d,dat,s,sat,r,whiteAmount,vibStart,vibMiddle,vibAmount,vibRate)
def playStringInner():
envA=sf.SimpleShape(
(0,-60),
(e,0),
(d,0),
(s,0),
(r,0)
)
envB=sf.NumericShape(
(0,0),
(a,1),
(d,dat),
(s,sat),
(r,0)
)
env=sf.Multiply(envA,envB)
sigs=[]
for x in range(0,5):
sigs.append(playStringClean(a,r,pitch,whiteAmount))
signal=sf.Normalise(sf.Mix(sigs))
signal=sf.Multiply(signal,env)
if(vibAmount>0):
l=sf.Length(+signal)
env=sf.NumericShape((0,0),(vibStart,0),(vibMiddle,1),(r,0.75),(l,0))
env=sf.NumericVolume(env,vibAmount)
trem=sf.SineWave(l,2.0+random.random())
trem=sf.Multiply(env,trem)
vib=+trem
trem=sf.DirectMix(1,sf.Pcnt50(trem))
signal=sf.Multiply(trem,signal)
vib=sf.DirectMix(1,sf.NumericVolume(vib,0.01))
signal=sf.Resample(vib,signal)
if(pitch>128):
signal=sf.ButterworthHighPass(signal,pitch*0.75,6)
signal=sf.BesselLowPass(signal,pitch,1)
else:
signal=sf.ButterworthHighPass(signal,pitch*0.75,3)
return sf.Realise(sf.Normalise(sf.Clean(signal)))
return sf_do(playStringInner)
def playStringInitial(pitch,length,volume):
def playStringInitialInner():
sig=playString(
pitch,
64, # e
128, # a
length*0.5, # d
0.75, # d at
length*0.75, # s
1.0, # s at
length, # r
0.75, # white amount
length*0.75, # vib start
length*0.75, # vib middle
0.5 # vib amount
)
envH=sf.NumericShape((0,1),(length*0.25,0.25),(length,0.25))
envL=sf.NumericShape((0,0),(length*0.25,0.75),(length,0.75))
sig=sig.get()
sigLow=sf.ButterworthLowPass(+sig,pitch*2.0,2)
sigHi =sf.ButterworthHighPass(sig ,pitch*2.0,2)
sigLow=sf.Multiply(sigLow,envL)
sigHi =sf.Multiply(sigHi ,envH)
env =sf.NumericShape((0,0),(length*0.25,0.25),(length*0.5,1),(length,1))
sig =sf.Mix(sigLow,sigHi)
sig =sf.FixSize(sf.Multiply(env,sig))
return sf.Clean(sf.NumericVolume(sig,volume))
return sf_do(playStringInitialInner)
def playStringSuperSoft(pitch,length,volume):
def playStringSoftSuperInner():
if(pitch<256):
w=0.75
else:
if(pitch<720):
w=0.33
else:
w=0.25
sig = sf.NumericVolume(
playString(
pitch,
64, # e
length*0.25, # a
length*0.50, # d
1.0, # d at
length*0.75, # s
1.0, # s at
length, # r
w, # white amount
length*0.50, # vib start
length*0.75, # vib middle
0.5 # vib amount
),
volume
)
env = sf.NumericShape((0,0),(length*0.25,1),(length,1))
return sf.Clean(sf.FixSize(sf.Multiply(env,sig)))
return sf_do(playStringSoftSuperInner)
def playStringSoftShort(pitch,length,volume):
def playStringSoftShortInner():
if(pitch<256):
w=0.5
else:
if(pitch<720):
w=0.25
else:
w=0.15
return sf.Clean(sf.NumericVolume(
playString(
pitch,
32, # e
64, # a
length*0.15, # d
1.0, # d at
length*0.5, # s
0.5, # s at
length, # r
w, # white amount
length*0.50, # vib start
length*0.75, # vib middle
0.5 # vib amount
),
volume
))
return sf_do(playStringSoftShortInner)
def playStringHardLong(pitch,length,volume):
def playStringHardLong():
if(pitch<256):
w=0.1
else:
if(pitch<720):
w=0.1
else:
w=0.05
return sf.Clean(sf.NumericVolume(
playString(
pitch,
32, # e
64, # a
length*0.25, # d
1.0, # d at
length*0.75, # s
0.75, # s at
length, # r
w, # white amount
length*0.25, # vib start
length*0.75, # vib middle
0.5 # vib amount - no vib in this case
),
volume
))
return sf_do(playStringHardLong)
def playStringHardShort(pitch,length,volume):
def playStringHardShortInner():
if(pitch<256):
w=0.1
else:
if(pitch<720):
w=0.1
else:
w=0.05
return sf.Clean(sf.NumericVolume(
playString(
pitch,
32, # e
64, # a
length*0.125, # d
1.0, # d at
length*0.75, # s
0.75, # s at
length, # r
w, # white amount
length*0.25, # vib start
length*0.75, # vib middle
0 # vib amount - no vib in this case
),
volume
))
return sf_do(playStringHardShortInner)
def playStringPluck(pitch,length,volume):
def playStringPluckInner():
sig=playString(
pitch,
8, # e
16, # a
32, # d
0.5, # d at
length*0.75, # s
0.25, # s at
length, # r
0, # white amount
length*0.50, # vib start
length*0.90, # vib middle
1 # vib amount - no vib in this case
)
envH=sf.NumericShape((0,0),(32,1),(length,0))
envL=sf.NumericShape((0,1),(32,0),(length,1))
sig=sig.get()
sigL=sf.ButterworthLowPass(+sig,pitch,1)
sigL=sf.ButterworthLowPass(sigL,pitch*3,1)
sigH=sf.Multiply(sig,envH)
sigL=sf.Multiply(sigL,envL)
sig=sf.Mix(sigL,sigH)
sig=sf.NumericVolume(sig,volume)
return sig
return sf_do(playStringPluckInner)
def makeClick(formant):
clickA=sf.Multiply(
sf.SimpleShape((0,0),(500,-30),(512,-60)),
sf.NumericShape((0,0),(100,1),(-300,-1),(400,0)),
sf.FixSize(sf.Power(sf.WhiteNoise(512),8))
)
clickA=sf.BesselLowPass(clickA,440,1)
clickA=formant(clickA)
for i in range(0,4):
clickB=sf.BesselLowPass(+clickA,440,1)
clickB=formant(clickB)
clickA=sf.MixAt(
(clickA,0),
(clickB,beat/8)
)
return sf.Normalise(clickA)
def doFormant(sig,f1,f2,f3):
def doFormantInner(a,b,c,d):
def doFII():
return sf.RBJPeaking(a,b,c,d)
return sf_do(doFII)
sig1=doFormantInner(+sig,f1,1,40)
sig2=doFormantInner(+sig,f2,2,20)
sig3=doFormantInner( sig,f3,1,40)
x=sf.Mix(sig1,sig2,sig3)
x=sf.Normalise(x)
return sf.Realise(x)
#beat
def doFormant1(sig):
return doFormant(sig,300,2800,3300)
#bit
def doFormant2(sig):
return doFormant(sig,430,2500,3100)
#bet
def doFormant3(sig):
return doFormant(sig,600,2350,3000)
#bat
def doFormant4(sig):
return doFormant(sig,860,2050,2850)
#part
def doFormant5(sig):
return doFormant(sig,850,1200,2800)
#pot
def doFormant6(sig):
return doFormant(sig,590,900,2700)
#boat
def doFormant7(sig):
return doFormant(sig,470,1150,2700)
#boat
def doFormant8(sig):
return doFormant(sig,470,1150,2700)
#book
def doFormant9(sig):
return doFormant(sig,370,950,2650)
#but
def doFormant10(sig):
return doFormant(sig,760,1400,2800)
#pert
def doFormant11(sig):
return doFormant(sig,500,1650,1950)
# oddness
#pert
def doFormant12(sig):
return doFormant(sig,550,1800,2050)
formants=[
doFormant1,
doFormant2,
doFormant3,
doFormant4,
doFormant5,
doFormant6,
doFormant7,
doFormant8,
doFormant9,
doFormant10,
doFormant11,
doFormant12
]
# Very slow indeed
beat = 1024*2.0
def phrase1():
print "Phrase 1"
at = 0
sigl = []
sigr = []
pitch=sf.Note("G6")
length=beat*0.5
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 1
at+=beat*1
pitch=sf.Note("G6")
pitch+=10
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 2
at+=beat*1
pitch=sf.Note("G6")
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
at+=beat*0.5
pitch=sf.Note("G6")
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 3
at+=beat*0.5
pitch=sf.Note("G6")
length=beat*0.2
sigl.append((playStringPluck(pitch,length,0.25),at))
sigr.append((playStringPluck(pitch,length,0.75),at))
at+=beat*0.25
pitch=sf.Note("G6")
pitch+=10
length=beat*0.15
sigl.append((playStringPluck(pitch,length,0.75),at))
sigr.append((playStringPluck(pitch,length,0.25),at))
# 4
at+=beat*0.75
pitch=sf.Note("G6")
length=beat*2.0
sigl.append((playStringSoftShort(pitch,length,0.15),at))
sigr.append((playStringSoftShort(pitch,length,0.15),at))
pitch=sf.Note("G7")
length=beat*0.15
pitch*=1.01
sigl.append((playStringPluck(pitch,length,0.05),at))
pitch=sf.Note("G7")
pitch*=0.99
sigr.append((playStringPluck(pitch,length,0.05),at))
print "Compiling Phrase1"
left=sf.FixSize(sf.MixAt(sigl))
right=sf.FixSize(sf.MixAt(sigr))
wleft = granularReverb(+left,0.5,1000)
wright = granularReverb(+right,0.5,1000)
left=sf.Normalise(sf.MixAt(
(sf.Pcnt50(wleft),0),
(sf.Pcnt50(left),0)
))
right=sf.Normalise(sf.MixAt(
(sf.Pcnt50(wright),0),
(sf.Pcnt50(right),0)
))
sf.WriteFile32([left,right],"temp/phrase-1.wav")
def phrase2():
print "Phrase 2"
at = 0
sigl = []
sigr = []
pitch=sf.Note("G6")
pitch+=10
length=beat*0.5
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 1
at+=beat*1
pitch=sf.Note("G6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 2
at+=beat*1
pitch=sf.Note("G6")
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
at+=beat*0.5
pitch=sf.Note("G6")
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 3
at+=beat*0.5
pitch=sf.Note("G6")
pitch+=10
length=beat*0.2
sigl.append((playStringPluck(pitch,length,0.75),at))
sigr.append((playStringPluck(pitch,length,0.25),at))
at+=beat*0.25
pitch=sf.Note("G6")
length=beat*0.15
sigl.append((playStringPluck(pitch,length,0.25),at))
sigr.append((playStringPluck(pitch,length,0.75),at))
# 4
at+=beat*0.75
pitch=sf.Note("F6")
length=beat*0.5
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
print "Compiling Phrase2"
left=sf.FixSize(sf.MixAt(sigl))
right=sf.FixSize(sf.MixAt(sigr))
wleft = granularReverb(+left,0.5,1000)
wright = granularReverb(+right,0.5,1000)
left=sf.Normalise(sf.MixAt(
(sf.Pcnt50(wleft),0),
(sf.Pcnt50(left),0)
))
right=sf.Normalise(sf.MixAt(
(sf.Pcnt50(wright),0),
(sf.Pcnt50(right),0)
))
sf.WriteFile32([left,right],"temp/phrase-2.wav")
def phrase3():
print "Phrase 3"
at = 0
sigl = []
sigr = []
pitch=sf.Note("F6")
pitch+=10
length=beat*0.5
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 1
at+=beat*1
pitch=sf.Note("F6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 2
at+=beat*1
pitch=sf.Note("F6")
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
at+=beat*0.5
pitch=sf.Note("F6")
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 3
at+=beat*0.5
pitch=sf.Note("F6")
pitch+=10
length=beat*0.2
sigl.append((playStringPluck(pitch,length,0.75),at))
sigr.append((playStringPluck(pitch,length,0.25),at))
at+=beat*0.25
pitch=sf.Note("G6")
length=beat*0.15
sigl.append((playStringPluck(pitch,length,0.25),at))
sigr.append((playStringPluck(pitch,length,0.75),at))
# 4
at+=beat*0.75
pitch=sf.Note("A6")
length=beat*0.5
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
print "Compiling Phrase3"
left=sf.FixSize(sf.MixAt(sigl))
right=sf.FixSize(sf.MixAt(sigr))
wleft = granularReverb(+left,0.5,1000)
wright = granularReverb(+right,0.5,1000)
left=sf.Normalise(sf.MixAt(
(sf.Pcnt50(wleft),0),
(sf.Pcnt50(left),0)
))
right=sf.Normalise(sf.MixAt(
(sf.Pcnt50(wright),0),
(sf.Pcnt50(right),0)
))
sf.WriteFile32([left,right],"temp/phrase-3.wav")
def phrase4():
print "Phrase 4"
at = 0
sigl = []
sigr = []
pitch=sf.Note("A6")
pitch+=10
length=beat*0.5
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 1
at+=beat*1
pitch=sf.Note("B6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 2
at+=beat*1
pitch=sf.Note("G6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 3
at+=beat*1
pitch=sf.Note("A6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 4
at+=beat*1
pitch=sf.Note("F6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 5
at+=beat*1
pitch=sf.Note("G6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
print "Compiling Phrase4"
left=sf.FixSize(sf.MixAt(sigl))
right=sf.FixSize(sf.MixAt(sigr))
wleft1 = granularReverb(+left,0.5,1000)
wright1 = granularReverb(+right,0.5,1000)
wleft2 = granularReverb(+left,0.75,1200)
wright2 = granularReverb(+right,0.75,1200)
left=sf.Normalise(sf.MixAt(
(sf.Pcnt40(wleft1),0),
(sf.Pcnt10(wleft2),0),
(sf.Pcnt50(left),0)
))
right=sf.Normalise(sf.MixAt(
(sf.Pcnt20(wright1),0),
(sf.Pcnt30(wright2),0),
(sf.Pcnt50(right),0)
))
sf.WriteFile32([left,right],"temp/phrase-4.wav")
def phrase5():
print "Phrase 5"
at = 0
sigl = []
sigr = []
pitch=sf.Note("G0")
pitch+=10
length=beat*3
sigl.append((playStringSuperSoft(pitch,length,0.5),at))
sigr.append((playStringSuperSoft(pitch,length,0.5),at))
# 1
at+=beat*3
pitch=sf.Note("D1")
sigl.append((playStringSuperSoft(pitch,length,0.5),at))
sigr.append((playStringSuperSoft(pitch,length,0.5),at))
print "Compiling Phrase4"
left=sf.FixSize(sf.MixAt(sigl))
right=sf.FixSize(sf.MixAt(sigr))
wleft1 = granularReverb(+left, 0.5,1000)
wright1 = granularReverb(+right,0.5,1000)
wleft2 = granularReverb(+left, 1.5,1200)
wright2 = granularReverb(+right,1.5,1200)
#6 -> #3 : boat to bat
left=sf.Normalise(sf.MixAt(
(sf.Pcnt40(wleft1),0),
(sf.Pcnt10(wleft2),0),
(sf.Pcnt50(left),0)
))
right=sf.Normalise(sf.MixAt(
(sf.Pcnt20(wright1),0),
(sf.Pcnt30(wright2),0),
(sf.Pcnt50(right),0)
))
def doBoatBat(sig):
l=sf.Length(+sig)
envBoat=sf.NumericShape((0,1),(l,0))
sigBoat=sf.Multiply(envBoat,+sig)
sigBoat=doFormant6(+sig)
envBat =sf.NumericShape((0,0),(l,1))
sigBat =sf.Multiply(envBat,+sig)
sigBat =doFormant3(sig)
sig =sf.Mix(sigBat,sigBoat)
return sf.Normalise(sf.ButterworthLowPass(sig,256,1))
left = doBoatBat(left)
right= doBoatBat(right)
sf.WriteFile32([left,right],"temp/phrase-5.wav")
def phrase6():
print "Phrase 6"
at = 0
sigl = []
sigr = []
pitch=sf.Note("A6")
pitch+=10
length=beat*0.5
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
# 1
at+=beat*1
pitch=sf.Note("B6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 2
at+=beat*1
pitch=sf.Note("G6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
# 3
at+=beat*1
pitch=sf.Note("A6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 4
at+=beat*1
pitch=sf.Note("F6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
# 5
at+=beat*1
pitch=sf.Note("G6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 6
at+=beat*1
pitch=sf.Note("D6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
print "Compiling Phrase6"
left=sf.FixSize(sf.MixAt(sigl))
right=sf.FixSize(sf.MixAt(sigr))
wleft1 = granularReverb(+left,0.5,800)
wright1 = granularReverb(+right,0.5,8000)
wleft2 = granularReverb(+left,0.25,1500)
wright2 = granularReverb(+right,0.25,1500)
left=sf.Normalise(sf.MixAt(
(sf.Pcnt40(wleft1),0),
(sf.Pcnt10(wleft2),0),
(sf.Pcnt50(left),0)
))
right=sf.Normalise(sf.MixAt(
(sf.Pcnt20(wright1),0),
(sf.Pcnt30(wright2),0),
(sf.Pcnt50(right),0)
))
sf.WriteFile32([left,right],"temp/phrase-6.wav")
def phrase7():
print "Phrase 7"
at = 0
sigl = []
sigr = []
pitch=sf.Note("A6")
pitch+=10
length=beat*0.5
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
# 1
at+=beat*1
pitch=sf.Note("B6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 2
at+=beat*1
pitch=sf.Note("G6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
# 3
at+=beat*1
pitch=sf.Note("A6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 4
at+=beat*1
pitch=sf.Note("F6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
# 5
at+=beat*1
pitch=sf.Note("G6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 6
at+=beat*1
pitch=sf.Note("D6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
print "Compiling Phrase7"
left=sf.FixSize(sf.MixAt(sigl))
right=sf.FixSize(sf.MixAt(sigr))
wleft1 = granularReverb(+left,0.5,800)
wright1 = granularReverb(+right,0.5,800)
wleft2 = granularReverb(+left,0.25,1500)
wright2 = granularReverb(+right,0.25,1500)
r=0.5*6.0/5.0
wleft3 = granularReverb(+left ,r,1000)
wright3 = granularReverb(+right,r,1000)
left=sf.Normalise(sf.MixAt(
(sf.Pcnt30(wleft1),0),
(sf.Pcnt10(wleft2),0),
(sf.Pcnt10(wleft3),0),
(sf.Pcnt50(left),0)
))
right=sf.Normalise(sf.MixAt(
(sf.Pcnt20(wright1),0),
(sf.Pcnt20(wright2),0),
(sf.Pcnt20(wright3),0),
(sf.Pcnt40(right),0)
))
sf.WriteFile32([left,right],"temp/phrase-7.wav")
def phrase8():
print "Phrase 8"
at = 0
sigl = []
sigr = []
pitch=sf.Note("G6")
pitch+=10
length=beat*0.5
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
# 1
at+=beat*1
pitch=sf.Note("A6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 2
at+=beat*1
pitch=sf.Note("F6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
# 3
at+=beat*1
pitch=sf.Note("G6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 4
at+=beat*1
pitch=sf.Note("E6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
# 5
at+=beat*1
pitch=sf.Note("F6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 6
at+=beat*1
pitch=sf.Note("C6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
print "Compiling Phrase8"
left=sf.FixSize(sf.MixAt(sigl))
right=sf.FixSize(sf.MixAt(sigr))
wleft1 = granularReverb(+left,0.5,800)
wright1 = granularReverb(+right,0.5,800)
wleft2 = granularReverb(+left,0.25,1500)
wright2 = granularReverb(+right,0.25,1500)
r=0.5*6.0/5.0
wleft3 = granularReverb(+left ,r,1000)
wright3 = granularReverb(+right,r,1000)
wleft4 = granularReverb(+left,1.5,2000)
wright4 = granularReverb(+right,1.5,2000)
left=sf.Normalise(sf.MixAt(
(sf.Pcnt30(wleft1),0),
(sf.Pcnt10(wleft2),0),
(sf.Pcnt10(wleft3),0),
(sf.Pcnt5(wleft4),0) ,
(sf.Pcnt45(left),0)
))
right=sf.Normalise(sf.MixAt(
(sf.Pcnt20(wright1),0),
(sf.Pcnt20(wright2),0),
(sf.Pcnt20(wright3),0),
(sf.Pcnt5(wright4),0) ,
(sf.Pcnt35(right),0)
))
sf.WriteFile32([left,right],"temp/phrase-8.wav")
def phrase9():
print "Phrase 9"
at = 0
sigl = []
sigr = []
pitch=sf.Note("F6")
pitch+=10
length=beat*0.5
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
# 1
at+=beat*1
pitch=sf.Note("G6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 2
at+=beat*1
pitch=sf.Note("E6b")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
# 3
at+=beat*1
pitch=sf.Note("F6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 4
at+=beat*1
pitch=sf.Note("D6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
# 5
at+=beat*1
pitch=sf.Note("E6b")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 6
at+=beat*1
pitch=sf.Note("B5b")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
print "Compiling Phrase9"
left=sf.FixSize(sf.MixAt(sigl))
right=sf.FixSize(sf.MixAt(sigr))
wleft1 = granularReverb(+left,0.5,800)
wright1 = granularReverb(+right,0.5,800)
wleft2 = granularReverb(+left,0.25,1500)
wright2 = granularReverb(+right,0.25,1500)
r=0.5*6.0/5.0
wleft3 = granularReverb(+left ,r,1000)
wright3 = granularReverb(+right,r,1000)
wleft4 = granularReverb(+left,1.5,2000)
wright4 = granularReverb(+right,1.5,2000)
left=sf.Normalise(sf.MixAt(
(sf.Pcnt30(wleft1),0),
(sf.Pcnt10(wleft2),0),
(sf.Pcnt10(wleft3),0),
(sf.Pcnt5(wleft4),0) ,
(sf.Pcnt45(left),0)
))
right=sf.Normalise(sf.MixAt(
(sf.Pcnt20(wright1),0),
(sf.Pcnt20(wright2),0),
(sf.Pcnt20(wright3),0),
(sf.Pcnt5(wright4),0) ,
(sf.Pcnt35(right),0)
))
sf.WriteFile32([left,right],"temp/phrase-9.wav")
def phrase10():
print "Phrase 10"
at = 0
sigl = []
sigr = []
pitch=sf.Note("E6b")
pitch+=10
length=beat*0.5
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
# 1
at+=beat*1
pitch=sf.Note("F6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 2
at+=beat*1
pitch=sf.Note("D6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
# 3
at+=beat*1
pitch=sf.Note("E6b")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 4
at+=beat*1
pitch=sf.Note("C6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
# 5
at+=beat*1
pitch=sf.Note("D6")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
# 6
at+=beat*1
pitch=sf.Note("A5")
sigl.append((playStringPluck(pitch,length,0.5),at))
sigr.append((playStringPluck(pitch,length,0.5),at))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.25))
pitch*=2
length=beat*0.25
sigl.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
sigr.append((playStringPluck(pitch,length,0.15),at+beat*0.50))
print "Compiling Phrase10"
left=sf.FixSize(sf.MixAt(sigl))
right=sf.FixSize(sf.MixAt(sigr))
wleft1 = granularReverb(+left,0.5,800)
wright1 = granularReverb(+right,0.5,800)
wleft2 = granularReverb(+left,0.25,1500)
wright2 = granularReverb(+right,0.25,1500)
r=0.5*6.0/5.0
wleft3 = granularReverb(+left ,r,1000)
wright3 = granularReverb(+right,r,1000)
wleft4 = granularReverb(+left,1.5,2000)
wright4 = granularReverb(+right,1.5,2000)
left=sf.Normalise(sf.MixAt(
(sf.Pcnt30(wleft1),0),
(sf.Pcnt10(wleft2),0),
(sf.Pcnt10(wleft3),0),
(sf.Pcnt5(wleft4),0) ,
(sf.Pcnt45(left),0)
))
right=sf.Normalise(sf.MixAt(
(sf.Pcnt20(wright1),0),
(sf.Pcnt20(wright2),0),
(sf.Pcnt20(wright3),0),
(sf.Pcnt5(wright4),0) ,
(sf.Pcnt35(right),0)
))
sf.WriteFile32([left,right],"temp/phrase-10.wav")
def phrase11():
print "Phrase 11"
at = 0
sigl = []
sigr = []
pitch=sf.Note("G6")
pitch+=10
length=beat*4.0
sigl.append((playStringSuperSoft(pitch,length,0.5),at))
sigr.append((playStringSuperSoft(pitch,length,0.5),at))
print "Compiling Phrase11"
left=sf.FixSize(sf.MixAt(sigl))
right=sf.FixSize(sf.MixAt(sigr))
wleft1 = granularReverb(+left,0.5,800)
wright1 = granularReverb(+right,0.5,800)
wleft2 = granularReverb(+left,0.25,2400)
wright2 = granularReverb(+right,0.25,2400)
r=0.5*6.0/5.0
wleft3 = granularReverb(+left ,r,1600)
wright3 = granularReverb(+right,r,1600)
wleft4 = granularReverb(+left,0.125,3200)
wright4 = granularReverb(+right,0.125,3200)
wleft5 = granularReverb(+left,0.0625,3800)
wright5 = granularReverb(+right,0.0625,3800)
wleft5 = granularReverb(wleft5,1.0,3800)
wright5 = granularReverb(wright5,1.0,3800)
left=sf.Normalise(sf.MixAt(
(sf.Pcnt10(wleft1),0),
(sf.Pcnt10(wleft2),0),
(sf.Pcnt10(wleft3),0),
(sf.Pcnt20(wleft4),0) ,
(sf.Pcnt20(wleft5),0) ,
(sf.Pcnt30(left),0)
))
right=sf.Normalise(sf.MixAt(
(sf.Pcnt10(wright1),0),
(sf.Pcnt10(wright2),0),
(sf.Pcnt10(wright3),0),
(sf.Pcnt20(wright4),0) ,
(sf.Pcnt20(wright5),0) ,
(sf.Pcnt30(right),0)
))
sf.WriteFile32([left,right],"temp/phrase-11.wav")
#phrase1()
#phrase2()
#phrase3()
#phrase4()
#phrase5()
#phrase6()
#phrase7()
#phrase8()
#phrase9()
#phrase10()
phrase11()
(left1,right1)=sf.ReadFile("temp/phrase-1.wav")
left1 = sf.Swap(left1)
right1 = sf.Swap(right1)
(left2,right2)=sf.ReadFile("temp/phrase-2.wav")
left2 = sf.Swap(left2)
right2 = sf.Swap(right2)
(left3,right3)=sf.ReadFile("temp/phrase-3.wav")
left3 = sf.Swap(left3)
right3 = sf.Swap(right3)
(left4,right4)=sf.ReadFile("temp/phrase-4.wav")
left4 = sf.Swap(left4)
right4 = sf.Swap(right4)
(left5,right5)=sf.ReadFile("temp/phrase-5.wav")
left5 = sf.Swap(left5)
right5 = sf.Swap(right5)
(left6,right6)=sf.ReadFile("temp/phrase-6.wav")
left6 = sf.Swap(left6)
right6 = sf.Swap(right6)
(left7,right7)=sf.ReadFile("temp/phrase-7.wav")
left7 = sf.Swap(left7)
right7 = sf.Swap(right7)
(left8,right8)=sf.ReadFile("temp/phrase-8.wav")
left8 = sf.Swap(left8)
right8 = sf.Swap(right8)
(left9,right9)=sf.ReadFile("temp/phrase-9.wav")
left9 = sf.Swap(left9)
right9 = sf.Swap(right9)
(left10,right10)=sf.ReadFile("temp/phrase-10.wav")
left10 = sf.Swap(left10)
right10 = sf.Swap(right10)
(left11,right11)=sf.ReadFile("temp/phrase-11.wav")
left11 = sf.Swap(left11)
right11 = sf.Swap(right11)
left = sf.FixSize(
sf.MixAt(
( sf.Pcnt50( left1),1000),
( sf.Pcnt50(+left2),1000+beat*6),
( sf.Pcnt50( left3),1000+beat*12),
( sf.Pcnt50(+left4),1000+beat*18),
( sf.Pcnt50( left2),1000+beat*24),
( sf.Pcnt40(+left5),1000+beat*29),
( sf.Pcnt20( left4),1000+beat*30),
( sf.Pcnt20(+left6),1000+beat*36),
( sf.Pcnt40(+left5),1000+beat*35),
( sf.Pcnt40(+left7),1000+beat*42), # 8 time
( sf.Pcnt20(+left5),1000+beat*41),
( sf.Pcnt20(+left8),1000+beat*50),
( sf.Pcnt40(+left5),1000+beat*49),
( sf.Pcnt40(+left9),1000+beat*58),
( sf.Pcnt20(+left5),1000+beat*57),
( sf.Pcnt20(+left10),1000+beat*66),
( sf.Pcnt40(+left5) ,1000+beat*65),
( sf.Pcnt40( left7),1000+beat*74),
( sf.Pcnt20(+left5),1000+beat*73),
( sf.Pcnt20( left8),1000+beat*82),
( sf.Pcnt40(+left5),1000+beat*81),
( sf.Pcnt40( left9),1000+beat*90),
( sf.Pcnt20(+left5),1000+beat*89),
( sf.Pcnt20( left10),1000+beat*98),
( sf.Pcnt40( left5) ,1000+beat*97),
( sf.Pcnt50( left11),1000+beat*106)
)
)
right = sf.FixSize(
sf.MixAt(
( sf.Pcnt50( right1),1000),
( sf.Pcnt50(+right2),1000+beat*6),
( sf.Pcnt50( right3),1000+beat*12),
( sf.Pcnt50(+right4),1000+beat*18),
( sf.Pcnt50( right2),1000+beat*24),
( sf.Pcnt20(+right4),1000+beat*30),
( sf.Pcnt40(+right5),1000+beat*29),
( sf.Pcnt40( right6),1000+beat*36),
( sf.Pcnt20(+right5),1000+beat*35),
( sf.Pcnt20(+right7),1000+beat*42), # 8 time
( sf.Pcnt40(+right5),1000+beat*41),
( sf.Pcnt40(+right8),1000+beat*50),
( sf.Pcnt20(+right5),1000+beat*49),
( sf.Pcnt20(+right9),1000+beat*58),
( sf.Pcnt40(+right5),1000+beat*57),
( sf.Pcnt40(+right10),1000+beat*66),
( sf.Pcnt20(+right5) ,1000+beat*65),
( sf.Pcnt20( right7),1000+beat*74),
( sf.Pcnt40(+right5),1000+beat*73),
( sf.Pcnt40( right8),1000+beat*82),
( sf.Pcnt20(+right5),1000+beat*81),
( sf.Pcnt20( right9),1000+beat*90),
( sf.Pcnt40(+right5),1000+beat*89),
( sf.Pcnt40( right10),1000+beat*98),
( sf.Pcnt20( right5) ,1000+beat*97),
( sf.Pcnt50( right11),1000+beat*106)
)
)
sf.WriteFile32((+left,+right),"temp/temp.wav")
(convoll,convolr)=sf.ReadFile("temp/revb2.wav")
def procConvol(convol):
env=sf.SimpleShape((0,0),(2048,0),(sf.Length(+convol),-40))
convolH=sf.FixSize(sf.BesselHighPass(sf.Saturate(+convol),5000,6))
convolL=sf.FixSize(sf.Multiply(env,convol))
return sf.FixSize(sf.Mix(convolH,convolL))
convoll=procConvol(convoll)
convolr=procConvol(convolr)
wleft =reverberate(+left,convoll)
wright=reverberate(+right,convolr)
left_out=sf.Normalise(sf.MixAt(
(sf.Pcnt50(wleft),0),
(sf.Pcnt50(left),00)
))
right_out=sf.Normalise(sf.MixAt(
(sf.Pcnt50(wright),0),
(sf.Pcnt50(right),0)
))
sf.WriteFile32((left_out,right_out),"temp/temp_postb.wav")
No comments:
Post a Comment