from what I understand portmidi uses a lockfree ringbuffer so sending a lot of MIDI messages shouldn't block Pd.
I was wrong, the lockfree ringbuffer is only used for *receiving* MIDI messages. looking at pmwinmm.c, sending MIDI messages certainly involves blocking operations. I think the midi_outqueue should be read by a seperate worker thread.
Christof
Gesendet: Samstag, 04. Mai 2019 um 00:23 Uhr
Von: "Christof Ressi" <christof.ressi@gmx.at>
An: "Dan Wilcox" <danomatika@gmail.com>
Cc: Pd-List <pd-list@lists.iem.at>
Betreff: Re: [PD] pd-lork and midi on osX
thanks! FWIW, I also get the blocking behavior on Pd 0.46 - 0.49 (Windows) and also on Pd extended, so at least on Windows this has always been a problem. Cyrill only said that it worked on Pd extended but he didn't say anything about older Pd vanilla releases. You've done some macOS specific changes in portmidi/portmidi/pm_mac/pmmacosxcm.c but afaict it's only about *receiving* MIDI messages. So actually I don't think that you've introduced a regression here.
note that when I turn on Cyrill's test patch, audio output is completely blocked and the GUI lags. from what I understand portmidi uses a lockfree ringbuffer so sending a lot of MIDI messages shouldn't block Pd. the patch itself doesn't show a significant CPU increase, it's just blocking unnecessarily.
since it seems to affect both Windows and macOS but not Linux (as Cyrill has noted, I didn't check), we should probably look at the portmidi part.
Christof
Gesendet: Freitag, 03. Mai 2019 um 23:31 Uhr
Von: "Dan Wilcox" <danomatika@gmail.com>
An: "Christof Ressi" <christof.ressi@gmx.at>
Cc: Pd-List <pd-list@lists.iem.at>
Betreff: Re: [PD] pd-lork and midi on osX
https://github.com/pure-data/pure-data/pull/214
On May 3, 2019, at 11:29 PM, Christof Ressi <christof.ressi@gmx.at[mailto:christof.ressi@gmx.at]> wrote:
hey, can you point me to your changes?
--------
Dan Wilcox
@danomatika[http://twitter.com/danomatika]
danomatika.com[http://danomatika.com]
robotcowboy.com[http://robotcowboy.com]
_______________________________________________
Pd-list@lists.iem.at mailing list
UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list