Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Playing midi on Pygame

Tags:

midi

pygame

Ok, this is what I got:

import pygame
import sys

from pygame.locals import *

bif="bg.jpg"
mif="pkmn.png"
sif="bubble.png"
song_1="testaudio.mid"

pygame.init()

FPS = 30  # FPS
FPSCLOCK = pygame.time.Clock()  # FPS

screen = pygame.display.set_mode ((600,375),0,32)

intro=pygame.mixer.Sound(song_1)
intro.play()

background = pygame.image.load(bif).convert()

pygame.mouse.set_visible(0)

char = pygame.image.load(mif).convert_alpha()
x = screen.get_width()/2 - char.get_width()/2
y = screen.get_height() - char.get_height()

bubble = pygame.image.load(sif).convert_alpha()
shoot_y = 0

move_speed = 15  # FPS

while True:

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

    pressed = pygame.key.get_pressed()
    if pressed[K_LEFT]:
        x -= move_speed
    if pressed[K_RIGHT]:
        x += move_speed
    if pressed[K_UP]:
        y -= move_speed
    if pressed[K_DOWN]:
        y += move_speed

    if event.type==KEYDOWN:
        if event.key==K_SPACE:
            shoot_y = y
            shoot_x = x

    screen.blit(background,(0,0))

    if shoot_y > 0:
        screen.blit(bubble,(shoot_x, shoot_y))
        shoot_y -= 10


    screen.blit(char,(x,y))

    pygame.display.update()
    FPSCLOCK.tick(FPS)  # FPS

So I got some midi files I created, however I keep getting "Unable to open file 'testaudio.mid", I tried quite a bit but I'm really confused, I'm new to pygame but can't figure this out, I've looked everywhere but still can't get it to work, even in this same site but still couldn't figure it out.

I really hope someone can help me by modifying my code or showing me the way to some clearer example cause I've been unable to understand the one I found.

Thanks (:

like image 585
Bob Lozano Avatar asked Jun 04 '13 08:06

Bob Lozano


People also ask

What is pygame mixer Sound?

mixer pygame module for loading and playing sounds is available and initialized before using it. The mixer module has a limited number of channels for playback of sounds. Usually programs tell pygame to start playing audio and it selects an available channel automatically.

Can Android run Pygame?

Pygame applications can run on Android phones and tablets with the use of the Pygame Subset for Android. Sound, vibration, keyboard, accelerometer are supported on Android. There is currently no way to run Pygame applications on iOS.


2 Answers

The following code will play music.mid located in the current directory

import pygame
pygame.init()

pygame.mixer.music.load("music.mid")
pygame.mixer.music.play()
like image 85
Adrian G Avatar answered Sep 28 '22 04:09

Adrian G


If you have a simple program that exits after the play instruction, music playback will stop.

you should add the following two lines:

while pygame.mixer.music.get_busy():
    pygame.time.wait(1000)

to prevent the program from exiting before the music has finished playing.

like image 29
RufusVS Avatar answered Sep 28 '22 05:09

RufusVS