-
Notifications
You must be signed in to change notification settings - Fork 49
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
MIDI 2.0 #211
Comments
@rektide have seen that UMP specs have been released? UMP presents some interesting challenges especially with JS. UMP Packets come in 32, 64,and 128 bit packet lengths. There is also very specific ways to scale up and scale down values when converting from MIDI 1.0 protocol and MIDI 2.0 UMP packets. These kinds of utilities are also going to be required. |
Is there a place where I can follow the progress of MIDI 2.0 support? I'm developing a software synth that runs on videocard shaders in the browser and I'm very interrested in the higher precission of MIDI-2.0. You can follow my progress on I'm hoping to build a community like the one on shadertoy.com (i got inspired by the sound shaders there) but for audio instruments. and effects People could write their own audio shaders, publish them and others could comment on them and like them. For the further future I'm hoping to turn it into a full DAW for music sharing alla audiotool.com. Midi 2.0 support would be awesome to have by then. |
As I understand MIDI 2.0, it is layered on top (or at least, layer-able on top) of MIDI 1.0 - features such as Property Exchange are accomplished via sysex exchange. It would be possible to build this implementation in the short term on top of Web MIDI 1.0, then, for features such as higher precision. As Web MIDI is already a low-level API, I don't expect to provide the higher-level semantics of MIDI 2.0 in the near term, but this can be built (IIUC) on top as a component layer, which would be a good lead-in to defining what Web MIDI 2.0 might look like (and native MIDI APIs for v2, for that matter). |
MIDI 2.0 is backwards compatible and can transport 1,0 messages. Controllers can query if the other side supports MIDI 2.0 and switch to use the new protocol. Messages get bigger mostly double in size (from 16 bit to 32 bit and from 32 to 64bit) the 7bit limit is removed so the whole byte is usable this gives things like:
This is what I got from watching this video after I posted the previous comment https://www.youtube.com/watch?v=Kky1nlwz8-8&ab_channel=TheMIDIAssociationGmail Some midi 2.0 features can be done over 1.0 but not the higher precission. If webmidi would support the new messages by adding more data bytes then we could do the rest from software (or is this allready possible?) in javascript. I'm willing to put out an opensource midiparser for handling of the midi 2.0 messages. (I'm planning to opensource the whole of my shadersynth, it's a private repo for now but all code is readable in the browser and I'm working on a new engine for the synth as I see the current version still as a prototype) |
chromium has it in their Project Fugu queue as a P3. note that there's been very little work towards developing a web midi 2.0 spec. please consider trying to extend the existing webmidi spec with webmidi support. this could significantly advance the feasibility of web midi 2.0 becoming a thing. |
I would be happy with just supporting the new USB endpoint and UMP as a start |
I know the comment is ancient, but there's confusion out there around this. Only the MIDI CI features can be layered on top of MIDI 1.0 byte stream messages. The UMP specification is completely different and requires ground-up support for key things like
Windows MIDI Services will ship in-box this year, and supports MIDI 2.0 protocols and transports. Other operating systems have UMP support already in place at one level or another. https://aka.ms/midirepo Pete |
Recently I have indeed created a MIDI-CI implementation on top of Web MIDI API (among many other platforms as Kotlin/Compose Multiplatform works), based on MIDI 1.0. bytestream: It is not very strict implementation (yet), but supports Profile Configuration, Property Exchange, and Process Inquiry. Its PC and PE interoperability has been tested with JUCE ( The only input it is missing for full MIDI 2.0 support compared to current "MIDI 1.0 only" transport is the context Group number (well, and probably which pair of input/output makes up the MIDI-CI session connection, which I just choose manually so far). Other than that, no platform support was required. Once the UMP connection is established - the Endpoint Name would be available via UMP Endpoint Name Notification message (the UMP specification section 7.1.1 - 7.1.4). They are part of the "in-protocol" configuration. |
Hello hello.
There's a lot of new features in the recently approved MIDI 2.0 specification. Would love to see these features make their way to the web.
I'm not sure what my intents are here, but I started a web-midi-2 repo for this initiative & have raised this idea with @WICG.
The text was updated successfully, but these errors were encountered: