Skip to content
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

port connection fails when connecting many ports in quick succession #92

Open
sadguitarius opened this issue Dec 21, 2022 · 3 comments
Open

Comments

@sadguitarius
Copy link
Contributor

Hi, I'm using rtpmidid to implement a patchbay to route connections through a Raspberry Pi. I've written a version of aconnect that allows me to serialize and deserialize a group of ALSA port connections to a TOML file so that I can save and recreate a complex rtpMIDI routing.

So far this is working great except for one issue. When restoring a group of connections from many outputs (from an iConnectivity MioXL) to the same input (Windows rtpMIDI), the connection appears in the Windows rtpMIDI connection list but is greyed out. I tried adding std::this_thread::sleep_for(0.5s) after each connection and all connections were then restored properly. Seems like there might be some kind of race condition going on, either with alsa seq or rtpmidid. Any idea why this might be happening?

I'm happy to post code for my aconnect version with instructions so you can try the utility, but it's very much an undocumented work in progress so I thought I'd check for a quick solution here first. Let me know if there's any other info that would be helpful. Thanks!

@sadguitarius
Copy link
Contributor Author

Looking back over the issues list, I'm wondering if this might be the same as #34 which was never resolved. It does seem pretty similar at least.

@davidmoreno
Copy link
Owner

Hi, I have a similar program aseqrc, and did not find these problems.. although I don't connect to Windows' rtpMIDI....

Can you send me these instructions so I can check?

Also a network capture of the relevant data would be interesting.. I think...

Thanks for the report.

@sadguitarius
Copy link
Contributor Author

sadguitarius commented Dec 28, 2022

Hi @davidmoreno, here you go... https://github.com/sadguitarius/neoaconnect

Most of this works and should be pretty self-explanatory, but it doesn't have a proper install script yet.

The specific point where I'm running into trouble is where I have a single rtpMIDI port on my PC for all hardware devices to send Sysex dumps to, and when I try to restore connections from a TOML file, it looks like the connection is starting to work, but it disappears leaving a phantom connection on the Windows end. I think part of this may be that Windows rtpMIDI doesn't handle this situation gracefully, because I usually need to restart the associated Windows services when this happens in order to get things up and running again. Nothing suspicious is showing up in the Windows rtpMIDI logs though.

With line 385 uncommented in neoaconnect.cpp to introduce a small delay between subsequent connections, I am able to restore all connections from the TOML file with no problem.

I'll check out what you're doing with aseqrc and see if there something I'm doing wrong with the ALSA stuff (that is entirely possible).

I'll also do some snooping around with Wireshark and tcpdump to see if anything weird is happening there.

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

No branches or pull requests

2 participants