-
Notifications
You must be signed in to change notification settings - Fork 277
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ALSA and JACK do not support large SysEx messages #214
Comments
hi there, |
Hello, |
Hello, I've confirmed that the libremidi fork works. The RAW send method can send large (60-100k) sysex payloads (firmware), the current RtMidi ALSA send method cannot handle more than 1-2k messages. |
yay :) |
@jcelerier Any chance you'd be willing to port your fix into rtmidi and make a pull request? |
Well, it's more of a complete rewrite than a fix, I just don't have enough time for that sorry :( |
I figured as much when I looked at your Raw Send code. I wish I had the time to do this myself, but for now we will have to hold off on releasing Linux versions of our editors until this issue is fixed. |
@jcelerier Did I read libremidi right that you have the possibility to configure the transfer rate by inserting an artificial sleep in the ALSA sending routine? This could be a compromise which is much easier to backport. |
yes pretty much, but that's with the "raw" alsa api, not the seq one (I remember trying and failing to make it work there though I could just have missed something simple... that was some months ago, it's not entirely clear in my mind). All the relevant code is there, feel free to backport: https://github.com/jcelerier/libremidi/blob/master/include/libremidi/detail/raw_alsa.hpp#L447 |
As there were some patches that improve the support of larger SysEx messages on different backends (e.g. #91 ). However neither ALSA nor JACK support these kind of messages. While the ALSA sequencer theoretically allows larger SysEx messages. The kernel silently clears the input buffer as soon as an event could not be delivered to it. This means when the sender is to fast by a single packet about 2-3k of SysEx data gets silently dropped, when communicating with a software device.
A workaround could be to implement RawMIDI support for ALSA.
Another workaround could be to implement user defined input/output pool sizes.
The text was updated successfully, but these errors were encountered: