Programme de génération d'un document audio .wav
Bonsoir,
Je travaille sur un programme qui permet de créer un fichier son à partir d'une liste A obtenue après un filtrage via Python et composée de sous-listes contenant chacune deux éléments, l'élément d'indice 0 étant les fréquences à utiliser et l'élément d'indice 1 étant le niveau d'intensité sonore (non utilisé ici). Mon problème avec ce programme est que le fichier son généré par Python n'est pas lisible (le fichier son est crée mais vide). Je crois que cela vient de ma dernière boucle for contenant les fonctions sinus mais je n'arrive pas à résoudre le problème.
Merci d'avance pour votre aide !
Le programme en question :
Je travaille sur un programme qui permet de créer un fichier son à partir d'une liste A obtenue après un filtrage via Python et composée de sous-listes contenant chacune deux éléments, l'élément d'indice 0 étant les fréquences à utiliser et l'élément d'indice 1 étant le niveau d'intensité sonore (non utilisé ici). Mon problème avec ce programme est que le fichier son généré par Python n'est pas lisible (le fichier son est crée mais vide). Je crois que cela vient de ma dernière boucle for contenant les fonctions sinus mais je n'arrive pas à résoudre le problème.
Merci d'avance pour votre aide !
Le programme en question :
import wave
import math
NomFichier = 'son essai.wav'
Monson = wave.open(NomFichier,'w') # instanciation de l'objet Monson
A=[[602.929688, -47.194477], [645.996094, -42.493034], [689.0625, -33.40897], [732.128906, -17.552778], [775.195313, -1.925487], [818.261719, -1.046774], [861.328125, -13.499054], [904.394531, -31.658836], [947.460938, -41.486362], [990.527344, -48.059921], [1033.59375, -49.857601], [1076.660156, -43.585949], [1119.726563, -30.763716], [1162.792969, -4.434253], [1205.859375, -0.142476], [1248.925781, -7.987887], [1291.992188, -35.338837]]
nbCanal = 2
nbOctet = 1
fech = 44100
print(len(A))
F=[]
def frequence(A):
for i in range(len(A)):
freq =((A[i][0]))
F.append(freq)
return F
print(frequence(A))
N=[]
def niveau(A):
for i in range(len(A)):
niv=1
N.append(niv)
return N
print(niveau(A))
duree = 10
nbEchantillon = int(duree*fech)
print("Nombre d'échantillons :",nbEchantillon)
parametres = (nbCanal,nbOctet,fech,nbEchantillon,'NONE','not compressed')
Monson.setparams(parametres)
print(parametres)
AM=[]
def amplitude(A):
for i in range(len(N)):
amp=127.5*N[i]
AM.append(amp)
return AM
print(amplitude(A))
VA=[]
def son(A):
for i in range(len(A)):
val= wave.struct.pack('B',int(127.5 + AM[i] *math.sin(2.0*math.pi* F[i] * i/fech)))
VA.append(val)
return(Monson.writeframes(sum(VA))) # écriture frame
Monson.close()
A voir également:
- Programme de génération d'un document audio .wav
- Comment reduire la taille d'un document - Guide
- Musique audio - Télécharger - Lecture & Playlists
- Realtek audio driver - Télécharger - Pilotes & Matériel
- Signer un document word - Guide
- Programme demarrage windows - Guide
1 réponse
Bonjour,
Tu n'appelles pas la fonction son, est-ce normal ?
Quelques recommandations :
Bonne chance
Tu n'appelles pas la fonction son, est-ce normal ?
Quelques recommandations :
- définis tes fonctions à un endroit, le code global ensuite ;
- tu pourrais même définir une fonction (appelons la main) et la seule chose faite dans la partie globale est l'appel à
main()
qui appelle les différentes fonctions de ton programme ; -
return
est un mot-clé de python et donc il n'y a pas de raison de mettre des parenthèse (ce n'est pas une fonction) ; - pour être conforme à au code style PEP8, pense à mettre une espace après les virgules et autour de tes opérateurs (
*
,=
, etc).
Bonne chance