Web MIDI API - the paster, the present, and the future -

Preview:

DESCRIPTION

Slide present at the Web Music Meetup #1

Citation preview

Web MIDI API- the past, the present, and the future -

Takashi Toyoshima <toyoshim@chromium.org>

Web MIDI APIMIDI is a protocol to control music devices in real-time❏ AMEI / MMA - Invent and develop the MIDI❏ W3C Audio WG (http://www.w3.org/2011/audio/)

❏ Web MIDI: http://webaudio.github.io/web-midi-api/Why does the web need MIDI?

❏ HTML gots expressive features by HTML5❏ Web Audio API is really awesome!

❏ But we still miss a controller...

Chromium / BlinkThe Chromium Projects started Web MIDI API in 2013❏ Members

❏ Chris Rogers (Web Audio spec / implement)❏ Chris Wilson (Web MIDI spec)❏ Takashi Toyoshima (Web MIDI implement)

OS dependent impl.Chrome specific impl.

ChromeMIDIPermissionContext

RenderProcessHost

Render

RenderView RenderThreadImpl

Blink

Web MIDI Impl. in BlinkMIDIAccessor

dependsMIDIDispatcher :

WebMIDIClient, RVO

Blink Web API

MIDIMessageFilter :IPC::ChannelProxy::MessageFilter

RendererWebMIDIAccessorImplBlink Platform API

MIDIDispatcherHost :BrowserMessageFilter

MIDIHost :BrowserMessageFilter

ChildProcessSecurityPolicyAllow Check

ProfileImplContent API

ContentSettings UI Thread

MIDIManager

MIDIManagerMacMIDI Thread

Intent to Implement

Short HistoriesChrome 30 Input device for MacChrome 31 Output device for MacChrome 32 IAC driver for MacChrome 33 WindowsChrome 34 System / real-time messages, LinuxChrome 35 Promise, Chrome OSChrome 36 AndroidChrome 37 Android (UI), Chrome OS (Seq. API)...

Blink focus❏ 2013 mobile performance

➜ Speed➜ Memory➜ Graphics (GPU)

❏ 2014 performance and APIs➜ Yes, Web MIDI API is welcomed ;)

Source: Vision Mobile Blog

60hz, Speed Team, Juice

Device APIs, ServiceWorker

WebComponentsWebAnimationpolymer-project.org

developer.google.com/web

from Eric Seidel’s slideat BlinkOn 2

Platforms × Versionschrome://flags/#enable-web-midi

Platforms Versions Note

Mac OS X Chrome 36

Windows Chrome 36

Chrome OS / Linux Chrome 36 Seq API is on 37

Android Chrome 37 USB MIDI only

Under development issues❏ Device detection

❏ Device list is snapshotted at the first API call❏ New device does not appear (restart is needed)

❏ API is not up to date❏ OLD: http://goo.gl/vfj1xP❏ NEW: http://webaudio.github.io/web-midi-api/

Infobar Website settings

Icon & Bubble

Settings

User Interfaces

What’s the Next❏ Web MIDI API is depending on new JS features

❏ Promise => Done!❏ ECMA Script 6 (harmony)

❏ Map❏ MIDIInputMap, MIDIOutputMap

❏ Iterators❏ MIDIKeyIterator, MIDIEntryIterator, MIDIValueIterator

❏ Device detection❏ Depends on new API (Map and Iterators)

Web MIDI v2?❏ Worker❏ Software Synth framework❏ New device support?

Recommended