Intent to Ship: Web MIDI

235 views
Skip to first unread message

Kenji Baheux

unread,
Mar 12, 2015, 12:49:07 AM3/12/15
to blink-dev

Contact emails

Engineering:


Spec

http://webaudio.github.io/web-midi-api/ (editor: Chris Wilson cwilso@)

(W3C Public Working Draft: http://www.w3.org/TR/webmidi/ - stale but will get updated soon)


Summary

The Web MIDI API enables web applications to enumerate and select MIDI input and output devices on the client system and send and receive MIDI messages. Web applications will be able to control MIDI controller output devices such as external and software based synthesizers, lighting systems, etc. In addition, users will be able to control Web applications via MIDI controller input devices such as external hardware controllers with physical buttons, knobs and sliders or musical controllers.


What this API is not:

  • This API is not trying to semantically represent MIDI messages (e.g., semantically representations such as "modulate the vibrato by 20Hz" or "play a G#7 chord").

  • This API is not dealing with Standard MIDI files, or anything specific to General MIDI. As such, the use case of playing a .SMF file is out-of-scope, although a developer could build an SMF player on top of Web MIDI.


The Web MIDI API is expected to be used in conjunction with other APIs and elements of the web platform, notably the Web Audio API.


There is a lot of excitement among vendors and artists for this API. For instance, Yamaha has shown its enthusiasm for Web MIDI through products announcements (NSX1, Japanese) and open source projects (web apps for NSX1, web music platform). Also, attendees of the NAMM* Show 2015 have reiterated their eagerness to see this API enabled by default.


Without this API, MIDI devices can only be accessed on the web platform via plugins such as the Jazz plugin, or via add-on plugins for Adobe Director or Java. Obviously, none of these plugins work on the mobile web platform (alternatives on mobile: native iOS apps using the CoreMIDI API, Android: N/A).


*: National Association of Music Merchants



Link to “Intent to Implement” blink-dev discussion

https://groups.google.com/a/chromium.org/d/msg/blink-dev/KUx9s-XFdj0/PPZcwE4l3ScJ



Is this feature supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?

Yes.



Demo links (compatible with MIDI hardware)

http://aikelab.net/websynthv2/

http://webaudiodemos.appspot.com/

http://www.w3.org/blog/2014/12/teach-the-web-to-sing/ (report)



Debuggability

This API doesn’t require anything new. For instance, you can confirm that the expected MIDI messages are exchanged through console.log().



Compatibility Risk (pluses and minuses)

+ The specification is a stable working draft and the working group considers it ready for implementation experience.

+ This API has a a very small footprint four object types - and directly maps onto existing APIs that have been successful in the industry for decades.

+ Although small changes to the specification may happen in the future, the overall API design is unlikely to change dramatically.

+ Because this API is based on well-established industry standards, we fully expect that this API is easily implementable in an interoperable manner.

+ We’ve worked with MIDI experts and artists for QA, refining the spec and minimizing the compatibility risk:
  • + close collaboration with partners at leading companies
  • + several web audio hackathons (Japan: reports for the second and third editions, Berlin: report)
  • + community-driven pull request against the w3c test suite.

+ unresolved spec issues
are either out of scope for this intent to ship, not a compatibility concern or reached an agreement.

+ A new W3C public working draft is being ready for publication in the coming days (thread)

+ An independent implementation of the Web MIDI spec can be found in the form of a third party browser for iOS which supports Web MIDI: Web MIDI Browser (requires iOS8+).

+ Mozilla has made positive comments (see this comment on bugzilla#836897). 
  • - Unfortunately, the implementation got sidetracked for a while
  • + We’ve confirmed with the bug owner that interest is still there. In fact, the work has been resumed.
- Internet Explorer’s modern.status.ie currently list this API as "Not currently planned". 
However, the Web Audio API , a pre-requisite for many use cases, is in development.
  • + We’ve been in touch with web audio APIs counterparts at Microsoft and addressed their concerns about the spec.

OWP launch tracking bug?

crbug.com/163795


Link to entry on the feature dashboard

https://www.chromestatus.com/feature/4923613069180928

Dimitri Glazkov

unread,
Mar 12, 2015, 10:55:29 AM3/12/15
to Kenji Baheux, blink-dev
LGTM.

:DG<

Chris Harrelson

unread,
Mar 12, 2015, 12:58:24 PM3/12/15
to Dimitri Glazkov, Kenji Baheux, blink-dev
LGTM2

LGTM.

:DG<
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.

TAMURA, Kent

unread,
Mar 12, 2015, 7:47:50 PM3/12/15
to Chris Harrelson, Dimitri Glazkov, Kenji Baheux, blink-dev
LGTM3.  Small API, and we tested this feature and the specification behind the flag for a long time.  Risk should be low.

--
TAMURA Kent
Software Engineer, Google


Takashi Toyoshima

unread,
Mar 13, 2015, 2:12:44 AM3/13/15
to TAMURA, Kent, Chris Harrelson, Dimitri Glazkov, Kenji Baheux, blink-dev
Thanks.
I will remove the experimental flag to enable it by default soon.
--
Takashi Toyoshima
Software Engineer, Google
Reply all
Reply to author
Forward
0 new messages