Hi Daniel, Ah indeed, that would work as well!
Unfortunately not entirely: pygame 2 allows get() to have a timeout value, so then it might take a while before the midi events could be retrieved. And I don't think I should create a busy-loop. Now I could do the midi polling in a separate thread and then push them into the main event loop. According to https://stackoverflow.com/questions/15538287/can-i-add-pygame-events-from-a-second-thread the SDL event-loop underneath it is supposed to be thread-safe. Let's see if that works. Thanks sofar! On Mon, Jul 26, 2021 at 3:54 PM Daniel Foerster <pydsig...@gmail.com> wrote: > In that example, the midi events are converted to Pygame events and posted > to the Pygame event queue here: > https://github.com/pygame/pygame/blob/main/examples/midi.py#L74 > > On Mon, Jul 26, 2021, 04:02 Folkert van Heusden <m...@vanheusden.com> > wrote: > >> Hi, >> >> If I look at https://github.com/pygame/pygame/blob/main/examples/midi.py >> I see the following: >> >> if e.type in [pygame.midi.MIDIIN]: >> >> I tried that in a tiny test program, but that never gets triggered. >> pygame.event.get() *does *work, so something is received. >> >> My test-code is: >> >> #! /usr/bin/python3 >> >> import pygame >> import pygame.midi >> import time >> >> pygame.init() >> pygame.midi.init() >> midi_in = pygame.midi.Input(pygame.midi.get_default_input_id()) >> >> pygame.fastevent.init() >> >> while True: >> for event in pygame.fastevent.get(): >> if event.type == pygame.QUIT: >> sys.exit(0) >> >> if event.type in [pygame.midi.MIDIIN]: >> print(event) >> >> time.sleep(0.001) >> >> pygame.quit() >> >> >> I would like to receive it as an event, as that way I can do get() with a >> timeout instead of get() & sleep(); the timeout variant would reduce the >> latency that is introduced by the sleep. >> >> >> regards >> >