web midi api - the paster, the present, and the future -

12
Web MIDI API - the past, the present, and the future - Takashi Toyoshima <[email protected]>

Upload: takashi-toyoshima

Post on 02-Dec-2014

811 views

Category:

Software


4 download

DESCRIPTION

Slide present at the Web Music Meetup #1

TRANSCRIPT

Page 1: Web MIDI API - the paster, the present, and the future -

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

Takashi Toyoshima <[email protected]>

Page 2: Web MIDI API - the paster, the present, and the future -

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

Page 3: Web MIDI API - the paster, the present, and the future -

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)

Page 4: Web MIDI API - the paster, the present, and the future -

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

Page 5: Web MIDI API - the paster, the present, and the future -

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

Page 6: Web MIDI API - the paster, the present, and the future -

Blink focus❏ 2013 mobile performance

➜ Speed➜ Memory➜ Graphics (GPU)

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

Page 7: Web MIDI API - the paster, the present, and the future -

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

Page 8: Web MIDI API - the paster, the present, and the future -

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

Page 9: Web MIDI API - the paster, the present, and the future -

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/

Page 10: Web MIDI API - the paster, the present, and the future -

Infobar Website settings

Icon & Bubble

Settings

User Interfaces

Page 11: Web MIDI API - the paster, the present, and the future -

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)

Page 12: Web MIDI API - the paster, the present, and the future -

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