MIDIApps icon indicating copy to clipboard operation
MIDIApps copied to clipboard

Expose throttled midi through port (feature request)

Open jariseon opened this issue 2 years ago • 2 comments

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!

jariseon avatar Mar 03 '22 23:03 jariseon

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.)

krevis avatar Mar 06 '22 00:03 krevis

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.

jariseon avatar Mar 06 '22 16:03 jariseon