"""
Thanks for your reply Lenard,

I looked at the examples and created this working program (see program
below). When I close the program, this error message appears in the
terminal:

PortMidi call failed...
  PortMidi: `Bad pointer'
type ENTER...

What can I change in the program to avoid the
"PortMidi-call-failed-Bad-pointer" error? Any code snippets, links to
articles, or suggestions would be greatly appreciated.

"""

#--------------start miditest.py--------------
import pygame
import pygame.midi
from pygame.locals import *

pygame.init()

pygame.fastevent.init()
event_get = pygame.fastevent.get
event_post = pygame.fastevent.post

pygame.midi.init()
input_id = pygame.midi.get_default_input_id()
i = pygame.midi.Input( input_id )

pygame.display.set_caption("midi test")
screen = pygame.display.set_mode((400, 300), RESIZABLE, 32)

print "starting"

going = True

while going:

        events = event_get()
        for e in events:
                if e.type in [QUIT]:
                        going = False
                if e.type in [KEYDOWN]:
                        going = False

        if i.poll():
                midi_events = i.read(10)
                #print "full midi_events " + str(midi_events)
                print "my midi note is " + str(midi_events[0][0][1])
                # convert them into pygame events.
                midi_evs = pygame.midi.midis2events(midi_events,
i.device_id)

                for m_e in midi_evs:
                        event_post( m_e )

print "exit button clicked."
i.close()
pygame.midi.quit()
pygame.quit()
exit()
#--------------  end miditest.py--------------



On Wed, Dec 15, 2010 at 7:13 PM, Lenard Lindstrom <[email protected]> wrote:

> Hi Brian,
>
> The pygame midi.py example has an input event display mode.
>
> python -m pygame.examples.midi -i
>
> It is in the examples subdirectory in the pygame package directory.
> Unfortunately, the PortMidi with pygame.midi wraps does not have a midi
> event callback option, so midi events must be polled.
>
> Lenard Lindstrom
>
>
> On 15/12/10 03:19 PM, Brian Gryder wrote:
>
>> """
>> How can I detect midi events in pygame? I am able to detect the count of
>> MIDI devices and input and output device names (see program below)  I'd like
>> to display the midi note names like "C3 ON" or "D3 OFF". I am using the JACK
>> Audio Connection Kit. Any code snippets, links to articles, or suggestions
>> would be greatly appreciated.
>> """
>>
>> import pygame
>> import pygame.midi
>> from pygame.locals import *
>>
>> pygame.init()
>> pygame.display.set_caption("midi test")
>> screen = pygame.display.set_mode((400, 300), RESIZABLE, 32)
>>
>> pygame.midi.init()
>>
>> print "There are " + str(pygame.midi.get_count()) + " MIDI devices"
>>
>> print "The default input device number is "  +
>> str(pygame.midi.get_default_input_id())
>>
>> print "The default input device info is " +
>> str(pygame.midi.get_device_info(pygame.midi.get_default_input_id()))
>>
>> print "The default output device info is " +
>> str(pygame.midi.get_device_info(pygame.midi.get_default_output_id()))
>>
>> print "The current time on the PortMidi timer is " +
>> str(pygame.midi.time()) + " ms"
>>
>> event_text = []
>>
>> while True:
>>
>>        for event in pygame.event.get():
>>                if event.type == QUIT:
>>                        exit()
>>
>>        event = pygame.event.wait()
>>        print str(event)
>>
>>
>> """
>> output:
>> u...@lappy:~/Documents$ python -u miditest.py
>> There are 5 MIDI devices
>> The default input device number is 1
>> The default input device info is ('ALSA', 'Midi Through Port-0', 1, 0, 0)
>> The default output device info is ('ALSA', 'Midi Through Port-0', 0, 1, 0)
>> The current time on the PortMidi timer is 1 ms
>> """
>>
>>
>>
>

Reply via email to