Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
[email protected] webmail now available. Want one? Go here.
Cannot use outlook/hotmail/live here to register as they blocking our mail servers. #microsoftdeez
Obey the Epel!

Paste

Pasted as Python by blober ( 12 years ago )
# -*- coding: utf-8 -*-

# _o_o_ oOo _o_o_ @ CiDTL @ juntaDados.org @ LabMacambira.sf.net
# 2010, 2012, o0o0o

# Nao tem dependencia nenhuma. apenas rode:
#      $ python minimum-fi-music.py
# e ouça o sequencia.wav

import math, random, wave, struct

###################################
###################################
######### Lookup table ############
def lookup(table, dur, freq):
    """X Hz Y segundos ---- Y*44100 amostras X senoides
    X*T*n.arange(Y*44100)/(Y*44100)"""

    T=len(table)
    SI= freq * T / 44100
    ap=0
    samples=[]
    for i in xrange(int(dur*44100)): # n_de_amostras = dur * 44100
 samples.append(table[int(ap)])
 ap = (SI + ap)%T
    return samples
    
#########################################
##### alterador de timbres ###
# multiplicador de funções

def lookupcruz(func, func2, dur, freq):
    """X Hz Y segundos ---- Y*44100 amostras X senoides
    X*T*n.arange(Y*44100)/(Y*44100)"""
    
    T=len(func)
    SI= freq * T / 44100
    ap=0
    samples=[]    
    for i in xrange(int(dur*44100)): # n_de_amostras = dur * 44100
 samples.append(func[int(ap)]*func2[int(ap)])
 ap = (SI + ap)%T
    return samples

################
#### fazendo o som: ####
# sequencia inicializada:
def fazSequencia(notas, f0, fator, dur_nota, dur_silencio, funcao1, funcao2=0):
  #seq=1.5*fazSequencia(nt, f, fator, d, s, senoide, dente)
    """Retorna sequência de notas especificada por uma lista
    de valores em proporção (usualmente de semitons), a fequencia fundamental, o fator
    de proporção, a duração sonora da nota, a duração silenciosa da nota,
    e as funções ara síntese de timbre.
    
    Ex:
    
    >>> import numpy as n, scikits.audiolab as a
    >>> senoide=n.sin(n.linspace(0,2*n.pi,T,endpoint=False))
    >>> dente=n.linspace(-1,1,T,endpoint=False)    
    >>> fazSequencia([0,4,7,4,0,4,7,12,7,4,0], 440, 2**(1/12.), .3, .4, senoide, dente)
    >>> a.wavwrite(seq,"sequencia.wav",44100)
    """
    seq=[]
    for nota in notas:
        freq=f0*fator**nota
        if funcao2:
            amostras=lookupcruz(funcao1,funcao2,dur_nota,freq)
        else:
            amostras=lookup(funcao1,dur_nota,freq)
        amostras += [0]*int(44100*dur_silencio)
        seq += amostras
    smin=min(seq); smax=max(seq)
    seq= [(-.5+(i-smin)/(smax-smin)) for i in seq]
    return seq

def fazAcorde(notas, f0, fator, dur_nota, dur_silencio, funcao1, funcao2=0):
    """Retorna um acorde, funcionamento inspirado no fazSequencia."""
    
    seq=[]
    for nota in notas:
        freq=f0*fator**nota
        if funcao2:
            amostras=lookupcruz(funcao1,funcao2,dur_nota,freq)
        else:
            amostras=lookup(funcao1,dur_nota,freq)
        #seq=amostras+[0]*(dur_silencio)*44100 # versao fiel ao que estava
        amostras=amostras+[0]*int(dur_silencio*44100)
        seq=somador(seq,amostras)

    smin=min(seq); smax=max(seq)
    seq= [(-.5+(i-smin)/(smax-smin)) for i in seq]
    return seq
############

def somador(seq1,seq2):
    diff=len(seq1)-len(seq2)
    if diff > 0:
        seq2+=[0]*diff
    elif diff< 0:
        seq1+=[0]*-diff
        
    seq=[(i+j) for i,j in zip(seq1,seq2)]
    return seq
####### funções

T=2048
l=range(T+1)
l= [i/float(T) for i in l] # l E [0,1]
l=l[:-1] # len(l) = 2048, endpoint=false para o ciclo
l=[i*2*math.pi for i in l] # l E [0,2*pi)
senoide=[math.sin(i) for i in l] # sin eh um ciclo de senoide E [-1,1]

l=range(2048)
l=[i/2048. for i in l] # l[i] E [0,1]
dente=[i*2-1 for i in l] # l[i] E [-1,1]
##################################

##################################
# banco de séries

# escalas simétricas:
escala_1=range(12) # cromática ascendente sem inclusão da oitava
escala_2=range(0,12,2) # tons inteiros
escala_3=range(0,12,3) # diminutão
escala_4=range(0,12,4) # terças maiores
escala_6=range(0,12,6) # trítonos

# acordes
maior=[0,4,7]
menor=[0,3,7]

# randomico:
randomico=[random.randint(0,11) for i in xrange(16)]

#############
# series pensadas:
# bases:
b1=[0]*4
b2=[0]*7+[7]
b3=  [0,7,0,1]
b3_2=[0,7,8,7]
b4=[0,7,7,7]
b5=[0,7]
b6=[0,19,7,12]
b7=[0,-1,0,-1]
b8=[0,-1,7,-1]
b9=[0,1,0,-1]
b10=[0,7,6,7]

# frequencia de base (hz):
f0=80

# fator de multiplicação por semitom
fator=2.**(1/12.)

# duração das notas (s):
dur=.3*.5

# silêncio entre notas:
sil=.1

# volume Peak:
vol=0.2

print range(10)
#### Abertura
f=f0; d=dur*10; s=sil
nt=b10
seq=[1.5*i for i in fazSequencia(nt, f, fator, d, s, senoide, dente)]

print "000000000000" # TTM

#### Impacto 1
f=f0; d=dur; s=sil
nt=b2*2
seq2=fazSequencia(nt, f, fator, d, s, senoide, dente)

nt=b10*4
seq2=[(i+j) for i,j in zip(seq2,fazSequencia(nt, f, fator, d, s, senoide, dente))]

nt=b2*2
f=f0*4
seq2=[i+j for i,j in zip(seq2,fazSequencia(nt, f, fator, d, s, dente))]

seq+=seq2

#### retorno 1

f=f0*2; d=dur; s=sil
nt=b10*4
seq2=[1.5*i for i in fazSequencia(nt, f, fator, d, s, senoide, dente)]

seq+=seq2

#### Impacto 2 (==1)
f=f0; d=dur; s=sil
nt=b2*2
seq2=fazSequencia(nt, f, fator, d, s, senoide, dente)

nt=b10*4
seq2=[(i+j) for i,j in zip(seq2,fazSequencia(nt, f, fator, d, s, senoide, dente))]

nt=b2*2
f=f0*4
seq2=[(i+j) for i,j in zip(seq2,fazSequencia(nt, f, fator, d, s, dente))]


seq+=seq2

#### Continuação do impacto 2
print "11111111111" # TTM

f=f0; d=dur; s=sil
nt=b2*2
seq2=fazSequencia(nt, f, fator, d, s, senoide, dente)

nt=b10*4
seq2=[(i+j) for i,j in zip(seq2,fazSequencia(nt, f, fator, d, s, senoide, dente))]

nt=b2*2
f=f0*4
seq2=[(i+j) for i,j in zip(seq2,fazSequencia(nt, f, fator, d, s, dente, senoide))]

nt=b1*4
f=f0/2
seq2=[(i+j) for i,j in zip(seq2,fazSequencia(nt, f, fator, d, s, dente, senoide))]

#seq+=seq2 # NAO TINHA NO ORIGINAL< PERDIA O PEDACO

#### Continuação da continuação do impacto 2

f=f0; d=dur; s=sil
nt=b2*2
seq2=fazSequencia(nt, f, fator, d, s, senoide, dente)

nt=b10*4
seq2=[(i+j) for i,j in zip(seq2,fazSequencia(nt, f, fator, d, s, senoide, dente))]

nt=b2*2
f=f0*4
seq2=[(i+j) for i,j in zip(seq2,fazSequencia(nt, f, fator, d, s, dente, senoide))]

nt=b1*4
f=f0/2
seq2=[(i+j) for i,j in zip(seq2,fazSequencia(nt, f, fator, d, s, dente, senoide))]

nt=b3*4
f=f0*8
seq2=[(i+j) for i,j in zip(seq2,fazSequencia(nt, f, fator, d, s, dente))]

seq2*=2

seq+=seq2

#### retorno 2

f=f0/2; d=dur*2; s=sil*2
nt=b1*2
seq2=[5*i for i in fazSequencia(nt, f, fator, d, s, senoide, dente)]

seq+=seq2

#### acumulo 1 em retorno 2, (16 tempos, 4 compassos)

f=f0/2; d=dur*2; s=sil*2
nt=b1*2*2
seq2=[5*i for i in fazSequencia(nt, f, fator, d, s, senoide, dente)]

f=f0*8; d=dur; s=sil
nt=[random.randint(0,-1+len(escala_2)) for i in xrange(16*2)]
seq3=fazSequencia(nt, f, fator, d, s, dente)

seq2=somador(seq3,seq2)

f=f0*16; d=dur; s=sil
nt=[random.randint(0,-1+len(escala_4)) for i in xrange(16*2)]
seq3=fazSequencia(nt, f, fator, d, s, dente)

seq2=somador(seq3,seq2)

seq+=seq2

#### acumulo 2 em retorno 2, (16 tempos, 4 compassos)
print '2222222222222222222222' # TTM

f=f0/2; d=dur*2; s=sil*2
nt=b1*2*2
seq2=fazSequencia(nt, f, fator, d, s, senoide, dente)

f=f0; d=dur*2; s=sil*2
nt=b3*2*2
seq2=[(i+j) for i,j in zip(seq2,fazSequencia(nt, f, fator, d, s, senoide, dente))]

f=f0*8; d=dur; s=sil
nt=[random.randint(0,-1+len(escala_2)) for i in xrange(16*2)]
seq3=fazSequencia(nt, f, fator, d, s, dente)

seq2=somador(seq3,seq2)

f=f0*16; d=dur; s=sil
nt=[random.randint(0,-1+len(escala_4)) for i in xrange(16*2)]
seq3=fazSequencia(nt, f, fator, d, s, dente)

seq2=somador(seq3,seq2)

seq+=seq2

#### acumulo 3 em retorno 2, (16 tempos, 4 compassos)

f=f0/2; d=dur*2; s=sil*2
nt=b1*2*2
seq2=[1.3*i for i in fazSequencia(nt, f, fator, d, s, senoide, dente)]

f=f0*fator**7; d=dur*2; s=sil*2
nt=b7*2*2
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, senoide, dente))

f=f0; d=dur*2; s=sil*2
nt=b3*2*2
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, senoide, dente))



f=f0*8; d=dur; s=sil
nt=[random.randint(0,-1+len(escala_2)) for i in xrange(16*2)]
seq3=fazSequencia(nt, f, fator, d, s, dente)

seq2=somador(seq3,seq2)

f=f0*16; d=dur; s=sil
nt=[random.randint(0,-1+len(escala_4)) for i in xrange(16*2)]
seq3=fazSequencia(nt, f, fator, d, s, dente)

seq2=somador(seq3,seq2)

seq+=seq2


#### acumulo 4 em retorno 2, (16 tempos, 4 compassos)

f=f0/2; d=dur*2; s=sil*2
nt=b1*2*2
seq2=[1.3*i for i in fazSequencia(nt, f, fator, d, s, senoide, dente)]

f=f0*fator**7; d=dur*2; s=sil*2
nt=b7*2*2
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, senoide, dente))

f=f0; d=dur*2; s=sil*2
nt=b3*2*2
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, senoide, dente))



f=f0*8; d=dur; s=sil
nt=[random.randint(0,-1+len(escala_2)) for i in xrange(16*2)]
seq3=fazSequencia(nt, f, fator, d, s, dente)

seq2=somador(seq3,seq2)

f=f0*16; d=dur; s=sil
nt=[random.randint(0,-1+len(escala_4)) for i in xrange(16*2)]
seq3=fazSequencia(nt, f, fator, d, s, dente)

seq2=somador(seq3,seq2)

f=f0/2; d=dur*2; s=sil*2
nt=b1*2*2
ac=[]
for i in xrange(8): # a cada 2 tempos
    ac+=fazAcorde([0,7,14,21,28,35,42,49,56,63,70,77,84], f, fator, d, s, senoide, dente)
    ac+=[0]*int((d+s)*44100)
seq2=somador(ac,seq2)



seq+=seq2

#### transformação final do acumulo 4 em retorno 2, (16 tempos, 4 compassos)

f=f0/2; d=dur*2; s=sil*2
nt=b1*2*2
seq2=[1.3*i for i in fazSequencia(nt, f, fator, d, s, senoide, dente)]

f=f0*fator**7; d=dur*2; s=sil*2
nt=[escala_3[i] for i in [random.randint(0,-1+len(escala_3)) for j in xrange(16)]]
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, senoide, dente))

f=f0; d=dur*2; s=sil*2
nt=[escala_3[i] for i in [random.randint(0,-1+len(escala_3)) for j in xrange(16)]]
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, senoide, dente))



f=f0*8; d=dur; s=sil
nt=[escala_3[i] for i in [random.randint(0,-1+len(escala_3)) for j in xrange(16*2)]]
seq3=fazSequencia(nt, f, fator, d, s, dente)

seq2=somador(seq3,seq2)

f=f0*16; d=dur; s=sil
nt=[escala_3[i] for i in [random.randint(0,-1+len(escala_3)) for j in xrange(16*2)]]
seq3=fazSequencia(nt, f, fator, d, s, dente)

seq2=somador(seq3,seq2)

f=f0/2; d=dur*2; s=sil*2
nt=b1*2*2
ac=[]
for i in xrange(8): # a cada 2 tempos
    ac+=fazAcorde([0,7,14,21,28,35,42,49,56,63,70,77,84], f, fator, d, s, senoide, dente)
    ac+=[0]*int((d+s)*44100)
seq2=somador(seq2,ac)



seq+=seq2

#### parte 2 da transformação final do acumulo 4 em retorno 2, (16 tempos, 4 compassos)

f=f0/2; d=dur*2; s=sil*2
nt=b1*2*2
seq2=[1.3*i for i in fazSequencia(nt, f, fator, d, s, senoide, dente)]

f=f0*fator**7; d=dur*2; s=sil*2
nt=[escala_4[i] for i in [random.randint(0,-1+len(escala_4)) for j in xrange(16)]]
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, senoide, dente))

f=f0; d=dur*2; s=sil*2
nt=[escala_4[i] for i in [random.randint(0,-1+len(escala_4)) for j in xrange(16)]]
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, senoide, dente))


f=f0*8; d=dur; s=sil
nt=[escala_4[i] for i in [random.randint(0,-1+len(escala_4)) for j in xrange(16*2)]]
seq3=fazSequencia(nt, f, fator, d, s, dente)

seq2=somador(seq3,seq2)

f=f0*16; d=dur; s=sil
nt=[escala_4[i] for i in [random.randint(0,-1+len(escala_4)) for j in xrange(16*2)]]
seq3=fazSequencia(nt, f, fator, d, s, dente)

seq2=somador(seq3,seq2)

f=f0/2; d=dur*2; s=sil*2
nt=b1*2*2
ac=[]
for i in xrange(8): # a cada 2 tempos
    ac+=fazAcorde([0,7,14,21,28,35,42,49,56,63,70,77,84], f, fator, d, s, senoide, dente)
    ac+=[0]*int((d+s)*44100)
seq2=somador(seq2,ac)


seq+=seq2

#### parte 2 da transformação final do acumulo 4 em retorno 2, (16 tempos, 4 compassos)

f=f0/2; d=dur*2; s=sil*2
nt=b1*2*2
seq2=[1.3*i for i in fazSequencia(nt, f, fator, d, s, senoide, dente)]

f=f0*fator**7; d=dur*2; s=sil*2
nt=[escala_6[i] for i in [random.randint(0,-1+len(escala_6)) for j in xrange(16)]]
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, senoide))

f=f0; d=dur*2; s=sil*2
nt=[escala_6[i] for i in [random.randint(0,-1+len(escala_6)) for j in xrange(16)]]
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, senoide))


f=f0*8; d=dur; s=sil
nt=[escala_6[i] for i in [random.randint(0,-1+len(escala_6)) for j in xrange(16*2)]]
seq3=fazSequencia(nt, f, fator, d, s, senoide)

seq2=somador(seq3,seq2)

f=f0*16; d=dur; s=sil
nt=[escala_6[i] for i in [random.randint(0,-1+len(escala_6)) for j in xrange(16*2)]]
seq3=fazSequencia(nt, f, fator, d, s, senoide)

seq2=somador(seq3,seq2)

f=f0/2; d=dur*2; s=sil*2
nt=b1*2*2
ac=[]
for i in xrange(8): # a cada 2 tempos
    ac+=fazAcorde([0,7,14,21,28,35,42,49,56,63,70,77,84], f, fator, d, s, senoide, dente)
    ac+=[0]*int((d+s)*44100)
seq2=somador(seq2,ac)


seq+=seq2


#### parte 3 da transformação final do acumulo 4 em retorno 2, (16 tempos, 4 compassos)
f0=f0*fator**7
f=f0/2; d=dur*2; s=sil*2
nt=b1*2*2
seq2=[1.3*i for i in fazSequencia(nt, f, fator, d, s, senoide, dente)]

f=f0*fator**7; d=dur*2; s=sil*2
nt=[escala_4[i] for i in [random.randint(0,-1+len(escala_4)) for j in xrange(16)]]
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, dente))

f=f0; d=dur*2; s=sil*2
nt=[escala_4[i] for i in [random.randint(0,-1+len(escala_4)) for j in xrange(16)]]
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, dente))


f=f0*8; d=dur; s=sil
nt=[escala_4[i] for i in [random.randint(0,-1+len(escala_4)) for j in xrange(16*2)]]
seq3=fazSequencia(nt, f, fator, d, s, dente)

seq2=somador(seq3,seq2)

f=f0*16; d=dur; s=sil
nt=[escala_4[i] for i in [random.randint(0,-1+len(escala_4)) for j in xrange(16*2)]]
seq3=fazSequencia(nt, f, fator, d, s, dente)

seq2=somador(seq3,seq2)

f=f0/2; d=dur*2; s=sil*2
nt=b1*2*2
ac=[]
for i in xrange(8): # a cada 2 tempos
    ac+=fazAcorde([0,7,14,21,28,35,42,49,56,63,70,77,84], f, fator, d, s, senoide, dente)
    ac+=[0]*int((d+s)*44100)
seq2=somador(seq2,ac)

seq+=seq2

#### parte 3 da transformação final do acumulo 4 em retorno 2, (16 tempos, 4 compassos)
f0=f0*fator**-5
f=f0/2; d=dur*2; s=sil*2
nt=b1*2
seq2=[1.3*i for i in fazSequencia(nt, f, fator, d, s, senoide, dente)]

f=f0*fator**7; d=dur*2; s=sil*2
nt=[escala_4[i] for i in [random.randint(0,-1+len(escala_4)) for j in xrange(8)]]
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, dente))

f=f0; d=dur*2; s=sil*2
nt=[escala_4[i] for i in [random.randint(0,-1+len(escala_4)) for j in xrange(8)]]
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, dente))


f=f0*8; d=dur; s=sil
nt=[escala_4[i] for i in [random.randint(0,-1+len(escala_4)) for j in xrange(16)]]
seq3=fazSequencia(nt, f, fator, d, s, dente)

seq2=somador(seq3,seq2)

f=f0*16; d=dur; s=sil
nt=[escala_4[i] for i in [random.randint(0,-1+len(escala_4)) for j in xrange(16)]]
seq3=fazSequencia(nt, f, fator, d, s, dente)

seq2=somador(seq3,seq2)

f=f0/2; d=dur*2; s=sil*2
nt=b1*2*2
ac=[]
for i in xrange(4): # a cada 2 tempos
    ac+=fazAcorde([0,7,14,21,28,35,42,49,56,63,70,77,84], f, fator, d, s, senoide, dente)
    ac+=[0]*int((d+s)*44100)
seq2=somador(seq2,ac)

seq+=seq2

#### Dominante para terminar da transformação final do acumulo 4 em retorno 2, (16 tempos, 4 compassos)
f0=f0*fator**5
f=f0/2; d=dur*2; s=sil*2
nt=b1*2
seq2=[1.3*i for i in fazSequencia(nt, f, fator, d, s, dente)]

f=f0*fator**7; d=dur*2; s=sil*2
nt=[escala_3[i] for i in [random.randint(0,-1+len(escala_3)) for j in xrange(8)]]
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, dente))

f=f0; d=dur*2; s=sil*2
nt=[escala_3[i] for i in [random.randint(0,-1+len(escala_3)) for j in xrange(8)]]
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, dente))


f=f0*8; d=dur; s=sil
nt=[escala_3[i] for i in [random.randint(0,-1+len(escala_3)) for j in xrange(16)]]
seq3=fazSequencia(nt, f, fator, d, s, dente)

seq2=somador(seq3,seq2)

f=f0*16; d=dur; s=sil
nt=[escala_3[i] for i in [random.randint(0,-1+len(escala_3)) for j in xrange(16)]]
seq3=fazSequencia(nt, f, fator, d, s, dente)

seq2=somador(seq3,seq2)

f=f0/2; d=dur*2; s=sil*2
nt=b1*2*2
ac=[]
for i in xrange(4): # a cada 2 tempos
    ac+=fazAcorde([0,7,14,21,28,35,42,49,56,63,70,77,84], f, fator, d, s, senoide, dente)
    ac+=[0]*int((d+s)*44100)
seq2=somador(seq2,ac)

seq+=seq2


#### tonica em senóide para terminar da transformação final do acumulo 4 em retorno 2, (16 tempos, 4 compassos)
f0=f0*fator**-4
f=f0/2; d=dur*2; s=sil*2
nt=b1*2*2
seq2=[1.3*i for i in fazSequencia(nt, f, fator, d, s, senoide)]

f=f0*fator**7; d=dur*2; s=sil*2
nt=[escala_6[i] for i in [random.randint(0,-1+len(escala_6)) for j in xrange(16)]]
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, senoide))

f=f0; d=dur*2; s=sil*2
nt=[escala_6[i] for i in [random.randint(0,-1+len(escala_6)) for j in xrange(16)]]
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, senoide))


f=f0*8; d=dur; s=sil
nt=[escala_6[i] for i in [random.randint(0,-1+len(escala_6)) for j in xrange(16*2)]]
seq3=fazSequencia(nt, f, fator, d, s, senoide)

seq2=somador(seq3,seq2)

f=f0*16; d=dur; s=sil
nt=[escala_6[i] for i in [random.randint(0,-1+len(escala_6)) for j in xrange(16*2)]]
seq3=fazSequencia(nt, f, fator, d, s, senoide)

seq2=somador(seq3,seq2)

f=f0/2; d=dur*2; s=sil*2
nt=b1*2*2
ac=[]
for i in xrange(8): # a cada 2 tempos
    ac+=fazAcorde([0,7,14,21,28,35,42,49,56,63,70,77,84], f, fator, d, s, senoide)
    ac+=[0]*int((d+s)*44100)
seq2=somador(seq2,ac)

seq+=seq2


#### acorde final
f=f0/2; d=dur*2*5; s=sil*2
nt=[0]
seq2=[1.3*i for i in fazSequencia(nt, f, fator, d, s, senoide)]

f=f0*fator**7; d=dur*2*5; s=sil*2
nt=[escala_6[random.randint(0,-1+len(escala_6))]]
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, senoide))

f=f0; d=dur*2*5; s=sil*2
nt=[escala_6[random.randint(0,-1+len(escala_6))]]
seq2=somador(seq2,fazSequencia(nt, f, fator, d, s, senoide))


f=f0*8; d=dur*5; s=sil
nt=[escala_6[random.randint(0,-1+len(escala_6))]]
seq3=fazSequencia(nt, f, fator, d, s, senoide)

seq2=somador(seq3,seq2)

f=f0*16; d=dur*5; s=sil
nt=[escala_6[random.randint(0,-1+len(escala_6))]]
seq3=fazSequencia(nt, f, fator, d, s, senoide)

seq2=somador(seq3,seq2)

f=f0/2; d=dur*2*5; s=sil*2
nt=b1*2*2
ac=[]
for i in xrange(1): # a cada 2 tempos
    ac+=fazAcorde([0,7,14,21,28,35,42,49,56,63,70,77,84], f, fator, d, s, senoide)
    ac+=[0]*int((d+s)*44100)
seq2=somador(seq2,ac)

seq+=seq2



################
#### Gravando em disco
smin=min(seq); smax=max(seq)
seq= [(-.5+(i-smin)/(smax-smin)) for i in seq] # normalizando
sound = wave.open('musica.wav','w')
sound.setframerate(44100)
sound.setsampwidth(2) # Always 16bit/sample (2 bytes)
sound.setnchannels(1) # Mono
sonic_vector=[i*(2**15-1) for i in seq] #signed 16 bit
sound.writeframes(struct.pack('h'*len(sonic_vector),*[int(i) for i in sonic_vector]))
sound.close()
print "arquivo musica.wav gravado"


# TODO
# implementar sequencia de durações e sequencia de intensidades
# implementar envelope

##########################################

 

Revise this Paste

Your Name: Code Language: