Le python landais

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 :
######## 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 :
################ 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 :

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