def echo_division(sig_): sig = sig_ m1 = sf.Magnitude(+sig) if m1 == 0.0: return sig length = sf.Length(+sig) convol = sf.ReadFile("temp/swell.wav") sigW = convolve(+sig, convol[0]) sig = realise(sig, sigW) c_log("Reference count:", sig.getReferenceCount()) m2 = sf.Magnitude(+sig) sig = realise(sf.NumericVolume(sig, m1 / m2)) return sig
def tremolate(sig_, rate, mag): sig = sig_ m1 = sf.Magnitude(+sig) if m1 == 0.0: return sig length = sf.Length(+sig) ev = sf.NumericVolume(sf.MakeTriangle(sf.PhasedSineWave(length + 64, rate, random.random())), mag) ev = sf.Cut(0, length, ev) fv = sf.Pcnt2(+ev) ev = sf.DirectMix(1.0, ev) sig = sf.FrequencyModulate(sig, fv) sig = sf.Multiply(ev, sig) convol = sf.ReadFile("temp/swell.wav") sigW = convolve(+sig, convol[0]) sig = mix(sig, sigW) m2 = sf.Magnitude(+sig) sig = realise(sf.NumericVolume(sig, m1 / m2)) return sig
def play_string_clean(a,length,freq,whiteAmount,body): def rsd(): return raw_string(length,freq) signal=0 if(freq>500): signal=sf.FixSize(sf.Mix(rsd(),rsd(),rsd())) else: signal=sf.FixSize(sf.Mix(rsd(),rsd())) if not bright: if(freq>440): signal=sf.ButterworthHighPass(signal,freq*0.5,6) signal=sf.ButterworthHighPass(signal,2000,1) signal=sf.ButterworthLowPass(signal,8000,1) if(freq<128): signal=sf.ButterworthHighPass(signal,freq*0.5,1) signal=sf.ButterworthHighPass(signal,500,1) signal=sf.ButterworthLowPass(signal,2000,1) else: signal=sf.ButterworthHighPass(signal,freq*0.5,3) signal=sf.ButterworthHighPass(signal,1500,1) signal=sf.ButterworthLowPass(signal,4000,1) signal=sf.ButterworthLowPass(signal,freq*10.0,1) signal=sf.Mix( sf.Pcnt25(+signal), sf.Pcnt75(sf.RBJNotch(signal,freq,0.5)) ) white=sf.WhiteNoise(length) white=sf.ButterworthHighPass(white,freq*2.0,2) white=sf.ButterworthLowPass(white,freq*6.0,1) white=sf.FixSize(white) white=sf.Multiply(white,+signal) white=sf.NumericVolume(white,whiteAmount) signal=sf.NumericVolume(signal,1.0-whiteAmount) signal=sf.FixSize(sf.Mix(signal,white)) sq=sf.Mix( sf.PhasedSineWave(length,freq*0.95,random.random()), sf.PhasedSineWave(length,freq*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 body is None: if(freq<128): bodies=bassIRs elif(freq<440): bodies=celloIRs else: bodies=violinIRs else: bodies={ 'bass' : bassIRs, 'cello' : celloIRs, 'violin': violinIRs }[body] if bright: bs=[] for b in bodies: bs.append(sf.Power(b,1.25)) bodies=bs if freq<256: signal=sf.Power(signal,1.5) elif freq<512: signal=sf.Power(signal,1.25) elif freq<1024: signal=sf.Power(signal,1.15) else: signal=sf.Power(signal,1.05) env=sf.NumericShape((0,0),(16,1),(length-16,1),(length,0)) signal=sf.Multiply(env,signal) for body in bodies: sigs.append(convolve(+signal,+body)) signal=sf.Mix( sf.FixSize(sf.Mix(sigs)), sf.NumericVolume(sf.FixSize(signal),0.05) ) return sf.FixSize(sf.Clean(signal))