from pylab
import *
import pygame
from pygame.locals
import *
# Cette fonction gère l'interface
pygame def
maj():
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("Le
son que vous entendez est pur de fréqunce ajustable.",1,(250,
180, 0)) fenetre.blit(monTexte,(10, 40))
monTexte = font.render("Pour augmenter
ƒ, utiliser la flêche vers le haut du clavier",1,(200,200,200))
fenetre.blit(monTexte,(10, 65)) monTexte =
font.render("Pour diminuer ƒ, utiliser
la flêche vers le bas du clavier",1,(200,200,200))
fenetre.blit(monTexte,(10, 85)) monTexte =
font.render("Quelle est la plus haute
fréquence que vous pouvez entendre ?",1,(255, 100, 100))
fenetre.blit(monTexte,(10, 120)) monTexte =
font.render("Jusqu'à 2 000 Hz : vont
oreilles ont 90 ans !",1,(155, 155, 155))
fenetre.blit(monTexte,(30, 150)) monTexte =
font.render("Jusqu'à 4 000 Hz : vont
oreilles ont 80 ans !",1,(165, 165, 165))
fenetre.blit(monTexte,(30, 170)) monTexte =
font.render("Jusqu'à 8 000 Hz : vont
oreilles ont 70 ans !",1,(175, 175, 175))
fenetre.blit(monTexte,(30, 190)) monTexte =
font.render("Jusqu'à 10 000 Hz : vont
oreilles ont 60 ans !",1,(185, 185, 185))
fenetre.blit(monTexte,(30, 210)) monTexte =
font.render("Jusqu'à 12 000 Hz : vont
oreilles ont 50 ans !",1,(195, 195, 195))
fenetre.blit(monTexte,(30, 230)) monTexte =
font.render("Jusqu'à 15 000 Hz : vont
oreilles ont 40 ans !",1,(205, 205, 205))
fenetre.blit(monTexte,(30, 250)) monTexte =
font.render("Jusqu'à 16 000 Hz : vont
oreilles ont 30 ans !",1,(215, 215, 215))
fenetre.blit(monTexte,(30, 270)) monTexte =
font.render("Jusqu'à 17 000 Hz : vont
oreilles ont 26 ans !",1,(225, 225, 225))
fenetre.blit(monTexte,(30, 290)) monTexte =
font.render("Jusqu'à 18 000 Hz : vont
oreilles ont 24 ans !",1,(235, 235, 235))
fenetre.blit(monTexte,(30, 310)) monTexte =
font.render("Jusqu'à 20 000 Hz : vont
oreilles ont 20 ans !",1,(245, 245, 245))
fenetre.blit(monTexte,(30, 330)) monTexte =
font.render("Jusqu'à 22 000 Hz : vont
oreilles ont 18 ans !",1,(255, 255, 255))
fenetre.blit(monTexte,(30, 350))
pygame.display.set_caption("Quel âge
ont vos oreilles ?")
pygame.display.flip()
# Cette
fonction génère le son def
geneSon(k):
global sound
if k ==
1: sound.stop() duration = 1 / 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)
for s
in range(n_samples):
t = float(s)/sample_rate
# On complète le tableau pour l'oreille
gauche buf[s][0]
= int(round(ampli*sin(2*math.pi*frequence*t)))
# Oreille droite = oreille gauche
buf[s][1] = buf[s][0]
# Le tableau devient un son sound =
pygame.sndarray.make_sound(buf) sound.play(loops
= -1) return
sound
frequence = 440 size = (550, 400) fenetre =
pygame.display.set_mode(size, pygame.HWSURFACE | pygame.DOUBLEBUF)
nbBits = 16 pygame.mixer.pre_init(44100, nbBits, 2)
pygame.init() sample_rate = 44100
ampli = 2**(nbBits -
1) - 1 maj() geneSon(0) _running =
True
# La fin du code gère les évènements
clavier et la sortie du programme pygame.key.set_repeat(400,
1) while _running:
for event
in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_UP:
if frequence < 22000: frequence+=1
geneSon(1)
maj()
if event.key == K_DOWN:
if frequence > 20: frequence-=1
geneSon(1)
maj()
if event.type == pygame.QUIT:
_running = False
break pygame.quit()
|