8.1 Geluid afspelen
Hier bouw je op verder: 1.5 Je eerste afbeelding
Weet je dit niet meer zeker? Lees het terug voordat je verdergaat.
Geluidsbestanden laden werkt niet in de online speeltuin. Je hebt hiervoor een lokale installatie nodig (Thonny of VS Code). Zie installatie als je dat nog niet gedaan hebt.
Een spel zonder geluid is maar half af. Met play.new_sound laad je een geluidsbestand (.mp3, .wav of .ogg) dat je op elk moment kunt afspelen.
Zet eerst een geluidsbestand in dezelfde map als je Python-bestand, net als bij een afbeelding. Dan:
import play
muntje = play.new_sound("muntje.mp3")
knop = play.new_button(text="Speel af")
@knop.when_clicked
def afspelen():
muntje.play()
play.new_sound laadt het bestand één keer; .play() speelt het af. Roep je .play() opnieuw aan terwijl het geluid nog klinkt, dan begint het opnieuw.
Volume en herhalen
muziek = play.new_sound("achtergrond.mp3", volume=0.3, loops=-1)
muziek.play()
volumeloopt van0.0(stil) tot1.0(vol); ook achteraf te zetten metmuziek.volume = 0.5- zonder
loopsklinkt het geluid één keer;loops=-1herhaalt eindeloos — handig voor achtergrondmuziek;loops=2speelt het geluid drie keer (één keer plus twee herhalingen) muziek.pause()pauzeert, nog een keer.play()gaat verder waar het wasmuziek.stop()stopt helemaal
Er gaat iets mis?
Hoor je niets, controleer dan:
- Staat het geluidsbestand in dezelfde map als je Python-bestand?
- Klopt de bestandsnaam precies, inclusief de extensie (
.mp3vs.wav)? - Wordt
.play()wel aangeroepen? Zet er ter controle eenprint("afspelen")naast. - Staat het volume van je computer aan?
Opdracht 8.1.a: Klikgeluid
Maak een knop die bij elke klik een geluid afspeelt. Gebruik een kort geluidsbestand dat je zelf hebt opgezocht of opgenomen.
Klik hier voor een tip.
Laad het geluid één keer, buiten de klikfunctie. Binnen de functie roep je er alleen .play() op aan. Zet het bestand in dezelfde map als je Python-bestand.
Klik hier voor de oplossing.
import play
klik = play.new_sound("klik.mp3")
knop = play.new_button(text="Klik")
@knop.when_clicked
def geklikt():
klik.play()