from pylab
import *
import pygame
from pygame.locals
import *
import wave
frequence = 440
nbBits = 16 ampli = 2**(nbBits - 1) - 1 sample_rate = 44100
pygame.mixer.pre_init(44100, nbBits, 2) pygame.init()
# Cette fonction gère l'interface
pygame size = (400, 100) fenetre =
pygame.display.set_mode(size, pygame.HWSURFACE | pygame.DOUBLEBUF)
fenetre.fill((40,80,120)) font=pygame.font.Font(None,
36) monTexte = font.render("Fréquence
: " + str(frequence) +
" Hz",1,(255,255,255))
fenetre.blit(monTexte,(10, 10)) font=pygame.font.Font(None,
24) monTexte = font.render("Son
pur à gauche et complexe à droite.",1,(250, 180, 0))
fenetre.blit(monTexte,(10, 40)) pygame.display.set_caption("Créer
un fichier son") pygame.display.flip()
# Cette fonction génère le son
duration = 200 / frequence n_samples =
int(round(duration*sample_rate))
# On crée un tableau 2D et on le
remplit de zéros buf = zeros((n_samples, 2), dtype =
int16)
# On enregistre le son
dans un fichier AdrFichier =
"C:\pur_complexe.wav" # Adresse
modifiable Fson = wave.open(AdrFichier,"w")
# Création de l'entête
parametres = (2, 2, sample_rate, n_samples,
"NONE",
"not compressed")
Fson.setparams(parametres) for s
in
range(n_samples): t =
float(s)/sample_rate
# On complète le tableau pour l'oreille
gauche : son pur ƒ buf[s][0] =
int(round(ampli*sin(2*math.pi*frequence*t)))
# Oreille droite = son complexe ( ƒ +
2ƒ)
buf[s][1] =
int(round(0.6*ampli*sin(2*math.pi*frequence*t)))
buf[s][1] += int(round(0.4*ampli*sin(2*math.pi*2*frequence*t+0.3))) # Le tableau
devient un son sound = pygame.sndarray.make_sound(buf)
sound.play()
# on le place
dans le fichier que l'on ferme Fson.writeframes(buf)
Fson.close()
# on le dit !
monTexte = font.render("Le
fichier est enregistré : " + AdrFichier,1,(0, 180, 0))
fenetre.blit(monTexte,(10, 60)) pygame.display.flip()
_running = True
# La fin du code gère la sortie du
programme while
_running: for
event in pygame.event.get():
if event.type == pygame.QUIT:
_running = False
break pygame.quit()
|