Problème avec fct random

Fermé
pythonson - 9 mars 2016 à 21:56
dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 - 10 mars 2016 à 04:45
Bonjour,
Je voudrait créer un bruit blanc avec Pyhton , pour créer mon bruit blanc j'ai utilisé la fonction random (de la bibliothèque random) , et ça marche pas :/
frequence = 20+random.random()*19980 , voici la ligne de code où je l'utilise , j'avais avant essayée en appelant au début du code la bibliothèque mais il me mets toujours qu'il y a un problème avec la fct random.
(le code à été fait sur Cloud9 sous Python 3



import wave

import math

import binascii


print("Creation d'un fichier audio au format WAV (PCM 8 bits stereo 44100 Hz)")

print("Son de forme sinusoidale sur chaque canal\n")

NomFichier = 'bruitblanc.wav'

Monson = wave.open(NomFichier,'w') # instanciation de l'objet Monson

nbCanal = 2 # stereo

nbOctet = 1 # taille d'un echantillon : 1 octet = 8 bits

fech = 44100 # frequence d'echantillonnage

niveau = float(input('Niveau du son des canaux (0 à 1) ? '))

duree = float(input('Durée entre 1 et 20 (en secondes) ? '))

nbEchantillon = int(duree*fech)

print("Nombre d'echantillons :",nbEchantillon)


for duree in range(1,20):


frequence = 20+random.random()*19980

parametres = (nbCanal,nbOctet,fech,nbEchantillon,'NONE','not compressed')# tuple

Monson.setparams(parametres) # création de l'en-tete (44 octets)

# niveau max dans l'onde positive : +1 -> 255 (0xFF)

# niveau max dans l'onde negative : -1 -> 0 (0x00)

# niveau sonore nul : 0 -> 127.5 (0x80 en valeur arrondi)

amplitude = 127.5*niveau

print('Veuillez patienter...')

for i in range(0,nbEchantillon):

# canal gauche

# 127.5 + 0.5 pour arrondir à l'entier le plus proche

valG = wave.struct.pack('B',int(128.0 + amplitude*math.sin(2.0*math.pi*frequence*i/fech)))

# canal droit

valD = wave.struct.pack('B',int(128.0 + amplitude*math.sin(2.0*math.pi*frequence*i/fech)))

Monson.writeframes(valG + valD) # ecriture frame

Monson.close()

Fichier = open(NomFichier,'rb')

data = Fichier.read()

tailleFichier = len(data)

print('\nTaille du fichier',NomFichier, ':', tailleFichier,'octets')

print("Lecture du contenu de l'en-tete (44 octets) :")

print(binascii.hexlify(data[0:44]))

print("Nombre d'octets de donnees :",tailleFichier - 44)

Fichier.close()



Merci bcp pour votre aide

1 réponse

dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 2 476
10 mars 2016 à 04:45
Salut
ton code n'est pas lisible, utilise le bouton "code" pour que les autres puissent t'aider. Et mets stp le code complet avec le import nécessaire.
0