Problème avec fct random
pythonson
-
dsy73 Messages postés 9917 Statut Contributeur -
dsy73 Messages postés 9917 Statut Contributeur -
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
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
A voir également:
- Problème avec fct random
- Chat random - Accueil - Réseaux sociaux
- Random pascal - Forum Pascal
- Random. chat - Accueil - Réseaux sociaux
- Random en RUBY ✓ - Forum Ruby
- Excel:Moyenne glissante en fct d'1 période - Forum Excel