Chapitre 10 : TP5. Musique Maestro !
..... a. Introduction.
..... b. Bruitages : module mixer.
..... c. Musiques : module mixer.music.
a) Introduction.
Un jeu vidéo avec du son, c'est toujours plus entraînant !
Le module
mixer de la librairie
pygame va nous apporter ce petit plus.
Dans un soucis de simplicité, dans les exemples qui suivent, les sons seront déclenchés à l'aide de boutons. Dans un jeu vidéo, ce seront les événements qui
déclencheront les sons : début de la partie, collisions, bonbons mangés ... game over.
Les fichiers sons sont à placer dans le même répertoire que votre programme python.
Vous pouvez les télécharger pour tester les programmes qui suivent :
   
musique    
bruitage    
image de fond    
b) Bruitages : module mixer.
Pour des sons courts, le module mixer fera très bien l'affaire. La démarche sera la suivante :
- 1. Initialisation du mixer.
- 2. Création de l'objet son.
- 3. Jouer le son au moment souhaité.
######## Importations ########
from tkinter import *
from pygame import mixer
######## Fonctions ########
def jouer() :
# Jouer l'objet son :
son.play()
######## MAIN ########
# Création de la fenêtre :
fen = Tk()
can = Canvas(fen)
can.pack()
fond = PhotoImage(file='piano.png')
can.create_image(0,0, image = fond, anchor = 'nw')
# Création d'un bouton pour jouer le son :
b = Button(fen, text="Blop !", command = jouer, bg ='red', font ='Arial 12')
b.pack()
# Initialisation du mixer :
mixer.init()
# Création de l'objet son :
son = mixer.Sound("blop.wav")
fen.mainloop()
c) Musiques : module mixer.music
Pour des sons plus long, tels qu'une musique de fond, le sous-module music du module mixer sera plus adapté. La démarche sera la suivante :
- 1. Initialisation du mixer.
- 2. Chargement du fichier musical dans la liste de lecture du module music.
- 3. Lancer (ou stopper) la lecture.
################ IMPORTATIONS ################
from tkinter import *
from pygame import mixer
################ FONCTIONS ################
def jouer() :
# Lecture :
mixer.music.play()
def arreter() :
# Stop :
mixer.music.stop()
################ MAIN ################
# Création de la fenêtre :
fen = Tk()
can = Canvas(fen)
can.pack()
fond = PhotoImage(file='piano.png')
can.create_image(0,0, image = fond, anchor = 'nw')
# Créations de boutons lecture et stop de la musique :
b1 = Button(fen, text="Music, please !", command = jouer, bg ='red', font ='Arial 12')
b1.pack()
b2 = Button(fen, text="Stop it, please !", command = arreter, bg ='red', font ='Arial 12')
b2.pack()
# Initialisation du mixer :
mixer.init()
# Chargement de la musique dans la playlist du module music :
mixer.music.load("Sugar_Zone.wav")
fen.mainloop()
Remarques :
- Le format mp3 donne souvent des bug avec le module mixer. On utilisera plutôt les formats ogg ou wav.
- Pour convertir vos fichiers dans ces formats, on peut utiliser le logiciel audacity.
- On trouvera sur le web de nombreux sites proposant des fichiers musicaux, ou de bruitages, libres de droits.
Par exemple : Youtube audiolibrary music, ou encore : Universal Soundbank.
- Pour ceux qui souhaitent réaliser un projet autour de ce thème, on consultera la Pygame documentation pour découvrir plus de fonctionnalités.
Exercice :
Choisir un morceau de musique, ainsi qu'un bruitage, et construire une petite application pour les jouer (éventuellement simultanément) :
En cas de besoin :    
musique    
bruitage    
image de fond