Site Map - skip to main content - dyslexic font - mobile - text - print

Hacker Public Radio

Your ideas, projects, opinions - podcasted.

New episodes Monday through Friday.

Please support our Patrons

Our hosting is kindly provided by Josh from We would appreciate it if you could donate to help reduce his costs in funding the hosting. He is also accepting bitcoins to 1KsxJr9HtsdaUeU7yaV9bk9bQi21UPBtUq
Please also consider supporting the who are now hosting our media files. Right now, a generous supporter will match your contributions 3-to-1. So your $5 donation results in $20 for the Internet Archive.



Host Image
Host ID: 213

episodes: 1

hpr0991 :: Making a Music Sampler with Midi and Pygame

Released on 2012-05-20 under a CC-BY-SA license.

Pygame Midi documentation:

Pygame Mailing List: sample from pygame example folder:

Sampler/Sound Looper made from python, pygame and midi:

Sample values that populate midi_events variable:

Middle C note key press (notice the data1 is 60 and data2 is 127)
<Event(34-Unknown {'status': 144, 'vice_id': 2, 'timestamp': 6701, 'data1': 60, 'data3': 0, 'data2': 127})>

Middle C note key release (notice the data1 is 60 and data2 is 0)
<Event(34-Unknown {'status': 128, 'vice_id': 2, 'timestamp': 6764, 'data1': 60, 'data3': 0, 'data2': 0})>

Middle C# note key press (notice the data1 is now 61)
<Event(34-Unknown {'status': 144, 'vice_id': 2, 'timestamp': 206684, 'data1': 61, 'data3': 0, 'data2': 127})>

Python code snippet that pulls the note number from the midi_events list and appends an "off" string if it is a key release.

    if str(midi_events[0][0][2]) != "0":
        midinote = str(midi_events[0][0][1])
        midinote = str(midi_events[0][0][1]) + "off"

Controlling sounds with if statements and our midinote variable:

    distbassrollloop = pygame.mixer.Sound("7FullCircleDistBassRollLoop.wav")
    distsnarerollloop = pygame.mixer.Sound("7FullCircleDistSnareRollLoop.wav")
    distbass = pygame.mixer.Sound("7FullCircleDistBassPad.wav")
    distsnare = pygame.mixer.Sound("7FullCircleDistSnare.wav")

    if midinote == "48":

    if midinote == "49":

    if midinote == "49off":

    if midinote == "50":

    if midinote == "51":

    if midinote == "51off":

Contact info:

bgryderclock on Google+:

bgryderclock on Twitter:

bgryderclock on Identica:


Become a Correspondent