Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)