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

Expose throttled midi through port (feature request) #101

Open
jariseon opened this issue Mar 3, 2022 · 2 comments
Open

Expose throttled midi through port (feature request) #101

jariseon opened this issue Mar 3, 2022 · 2 comments

Comments

@jariseon
Copy link

jariseon commented Mar 3, 2022

chromium-based web browsers support sysex, but unfortunately their implementation relies on MIDISend/EventList as shown here. since Sysex Librarian has become a de facto tool - and many legacy gear users have it already installed - would be great if it could expose a well-named throttled input port that browser-based editor/librarians could connect into. sort of opposite of "Act as a source for other programs". thus it would

  • buffer a (large) received sysex packet
  • throttle it out to a selected destination port (using the transmit speed set in preferences)

this should obviously be fixed in browser codebase, but as progress there seems a bit slow, would be very cool if you could consider adding this. browsers are attractive platforms for editor/librarian implementations, and like mentioned in issue #100, maybe other apps would benefit from the feature too. thanks!

@krevis
Copy link
Owner

krevis commented Mar 6, 2022

This is an interesting idea, I'm just not sure how many people would (1) need it and (2) figure out how to use it.

Do you have any particular hardware in mind that can't handle full-speed MIDI and needs to be throttled?

Also, if there was a browser-based editor/librarian for that hardware, couldn't it do its own throttling?

(MIDI is 40 years old, and is absurdly slow by modern standards. Any hardware newer than about 1990 has no excuses for not handling full-speed MIDI. That said, I know there are plenty of older and bad devices out there.)

@jariseon
Copy link
Author

jariseon commented Mar 6, 2022

thanks Kurt. yeah, i agree this is a corner case and might not warrant bloating the codebase. pls feel free to close the issue as you see best. i'll create a local fork and try to implement it here.

browser side cannot unfortunately throttle as it only supports sending complete sysex messages. as for the user experience, the user would simply need to select Sysex Librarian port as output at the browser side, unless already set as default. at Sysex Librarian side s/he would need to A) activate thru port mode in settings, B) possibly set its buffer size, and C) select the throttled output port in the main window.

bit complicated for sure. i guess another option could be to expose custom sysex commands which enables browser side control over those settings. that would introduce security issues though if the browser page resides in the open internet.

my specific use case is in chip-level emulation of 80s gear (in sw), and with those i've noticed that slight throttling gives more reliable results compared to full speed. i've seen the issue with several vintage models especially with larger sysex dumps. it may well be related to emulation only, and as such, is definitely a corner case of a corner case.

googling around however seems to indicate that there may be issues with real hw as well. possibly due to bad usb interfaces/drivers instead of synths themselves. interestingly, it appears to be important that the chunk size is set correctly at the sending side, since usb midi spec defines that sysex payload is carried over in three byte blocks. that was all news to me.

but agreed, this issue may not justify the bloat. in any case big thanks for the tools. i find both MIDIApps very useful.

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