def sing_base(length,freq,z=1.0): voxA=[] hc=1.0 freq=float(freq) while hc*freq<18000: hf=hc*freq # at higher frequencies there is less need to # richen the sound so do only one pass of creating the # waves, but double the volume of each one by two to # avoid filtering effects if freq<5000: x=2 y=1.0 else: x=1 y=2.0 for c in range(0,x): vol = (1.0/hc)**z # cut of at -60 db if vol>0.25e-06: vol*=y voxA.append(sf.NumericVolume(sf.PhasedTableSineWave(length,hf+random.random()*10.0,random.random()),vol)) voxA.append(sf.NumericVolume(sf.PhasedTableSineWave(length,hf-random.random()*10.0,random.random()),vol)) voxA.append(sf.NumericVolume(sf.PhasedTableSineWave(length,hf+random.random()*10.0,random.random()),vol)) voxA.append(sf.NumericVolume(sf.PhasedTableSineWave(length,hf-random.random()*10.0,random.random()),vol)) hc+=1 vox=mix(voxA) vox=sf.Clean(vox) vox=polish(sf.FixSize(vox),freq) return sf.FixSize(vox)
def trumpet_base(length,freq,z=1.0): voxA=[] hc=1.0 freq=float(freq) while hc*freq<20000: hf=hc*freq voxA.append(sf.NumericVolume(sf.PhasedSineWave(length,hf,random.random()),(1.0/hc)**z)) hc+=1 vox=mix(voxA) vox=sf.Clean(vox) vox=polish(sf.FixSize(vox),freq) return sf.FixSize(vox)
def stretched_bass(length,freq,z=1.0,s=1.0,d=0.0,at=0): freq=float(freq) hf=freq hc=1.0 if at==0: at=length*0.9 vox=sf.Silence(length) while hf<20000: v=(1.0/hc)**z env=sf.NumericShape((0,v),(at,v-(d**hc-1.0)),(length,v-(d**hc-1.0))) vox=mix( sf.Multiply( sf.PhasedSineWave(length,hf,random.random()), env ), vox ) hf+=freq*s hc+=1 vox=sf.Clean(vox) vox=polish(sf.FixSize(vox),freq) return sf.FixSize(vox)