Skip to content

Instantly share code, notes, and snippets.

@naotokui
Last active April 21, 2022 11:27
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save naotokui/29073690279056e9354e6259efbf8f30 to your computer and use it in GitHub Desktop.
Save naotokui/29073690279056e9354e6259efbf8f30 to your computer and use it in GitHub Desktop.
Play MIDI file in Python
# see: https://www.daniweb.com/programming/software-development/code/216976/play-a-midi-music-file-using-pygame
# sudo pip install pygame
# on ubuntu
# sudo apt-get install python-pygame
import pygame
def play_music(music_file):
"""
stream music with mixer.music module in blocking manner
this will stream the sound from disk while playing
"""
clock = pygame.time.Clock()
try:
pygame.mixer.music.load(music_file)
print "Music file %s loaded!" % music_file
except pygame.error:
print "File %s not found! (%s)" % (music_file, pygame.get_error())
return
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
# check if playback has finished
clock.tick(30)
# pick a midi music file you have ...
# (if not in working folder use full path)
midi_file = './data/clean_midi/808 State/Pacific 202.mid'
freq = 44100 # audio CD quality
bitsize = -16 # unsigned 16 bit
channels = 2 # 1 is mono, 2 is stereo
buffer = 1024 # number of samples
pygame.mixer.init(freq, bitsize, channels, buffer)
# optional volume 0 to 1.0
pygame.mixer.music.set_volume(0.8)
try:
play_music(midi_file)
except KeyboardInterrupt:
# if user hits Ctrl/C then exit
# (works only in console mode)
pygame.mixer.music.fadeout(1000)
pygame.mixer.music.stop()
raise SystemExit
@Bobzilla07
Copy link

would this work with any midi file or just from pygame

@Majda995
Copy link

When i run this file it shows that audio device is not available

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment