Azuoo
Azuoo

Reputation: 47

How to make music play when pressing the space bar?

I want to create a really simple application that starts a song while you press the SPACE bar, but when I start the application and press the space bar, I just hear a "pop" sound, and nothing starts. No music.

Here is the code:

import pygame
from pygame.locals import *

pygame.init()
backimage = pygame.display.set_mode((395, 702), RESIZABLE)
fond = pygame.image.load("background.jpg").convert()
backimage.blit(fond, (0,0))
pygame.display.flip()
pygame.mixer.pre_init(42000,-16,1,2048)
pygame.mixer.init()
musik = pygame.mixer.Sound(b'musik.wav')

continuer = 1
while continuer == 1:
    for event in pygame.event.get():
        if event.type == QUIT:
            continuer = 0

    for event in pygame.event.get():
        if event.type == KEYDOWN and event.key == K_SPACE:
            musik.play()

Upvotes: 3

Views: 282

Answers (3)

Azuoo
Azuoo

Reputation: 47

Ok, thank you so much guys ! It works perfectly now. Here is the final code if someone has the same problem as me:

import pygame

from pygame.locals import *

pygame.init()

backimage = pygame.display.set_mode((395, 702), RESIZABLE)
fond = pygame.image.load("background.jpg").convert()
backimage.blit(fond, (0,0))
pygame.display.flip()
pygame.mixer.init()
pygame.mixer.music.load(b'musik.mp3')
pygame.event.clear()

while True:

    event = pygame.event.wait()

    if event.type == QUIT:
        pygame.quit()
        sys.exit()

    elif event.type == KEYDOWN and event.key == K_SPACE:
        pygame.mixer.music.play()

    elif event.type == KEYUP and event.key == K_SPACE:
        pygame.mixer.music.stop()

Upvotes: 1

Maxouille
Maxouille

Reputation: 2911

I think that you misunderstood the use for pygame.event. You should try with pygame.event.wait() :

pygame.event.clear()
while True:
    # wait until new event happens - blocking instruction
    event = pygame.event.wait()
    if event.type == QUIT:
        pygame.quit()
        sys.exit()
    elif event.type == KEYDOWN and event.key = K_SPACE:
        musik.play()

Upvotes: 0

yonatan strichman
yonatan strichman

Reputation: 15

I don't know why the code doesn't work, but I know it does work if you use a mp3 file. try this:

import pygame

from pygame.locals import *

pygame.init()

backimage = pygame.display.set_mode((395, 702), RESIZABLE)

fond = pygame.image.load("background.jpg").convert()

backimage.blit(fond, (0,0))

pygame.display.flip()

pygame.mixer.init()
pygame.mixer.music.load(b'musik.mp3')

continuer = 1

while continuer == 1:

    for event in pygame.event.get():
        if event.type == QUIT:
            continuer = 0

    for event in pygame.event.get():
        if event.type == KEYDOWN and event.key == K_SPACE:
            pygame.mixer.music.play()

If you want to use your .wav file you can find .wav to .mp3 online

Upvotes: 0

Related Questions