Skip to content

Conversation

@ylm
Copy link

@ylm ylm commented Apr 1, 2021

Initial effort to integrate JACK into ORCA since portmidi doesn't support it.
A forseeable issue is the use of jack ringbuffer. It doesn't use memory barriers which are required by some architectures.
Open for discussion. Plan to have dynamic port creation too.

@neauoire neauoire requested a review from cancel April 2, 2021 01:51
@Krasjet
Copy link

Krasjet commented Apr 2, 2021

JACK's ringbuffer, unfortunately, is a problem. I opened an issue about an overbound read bug a while ago. Raspberry Pi (ARM architecture) is notably affected by it:

https://www.youtube.com/watch?v=dLdTDMsz7tg

but this bug is extremely rare. I hope it gets fixed soon.

zix's ringbuffer implementation handles memory ordering properly. Maybe it can be used as a temporary solution. Though notice that JACK's MIDI itself internally uses ringbuffer, so this problem has to be fixed in JACK.

@ylm
Copy link
Author

ylm commented Apr 3, 2021

After using this branch for a bit, there's an issue in how the midi events gets timestamped, so I need to get that ironed out first. An alternative would be to swap portmidi with RtMidi which now has a C interface and support many more backends (JACK being one of them).

@ylm ylm marked this pull request as ready for review April 13, 2021 21:38
@plexus
Copy link

plexus commented Oct 29, 2023

@ylm did that last commit fix the issue you mentioned in your previous comment? I've been running this branch and so far haven't encountered any issues.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants