Transcript
Page 1: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

Web MIDI APIGoogle Developers Live Japan #8

http://goo.gl/89Lbdd

Yamaha CorporationAMEI Web MIDI WG

Ryoya Kawaihttp://goo.gl/hxWCA7

Page 2: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

おしながき

● MIDI○ 概要○ メッセージの基礎 (1), (2), (3)○ メリット・デメリット○ ユースケース

● Web MIDI API○ 概要○ Spec、Source○ Live Coding

● まとめ

Page 3: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

MIDI

Page 4: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

本題の前に

● 2013年でMIDIは30周年○ 発表:1983年

● テクニカルグラミー受賞○ 梯 郁太郎氏、Dave Smith氏○ メーカーを問わない電子楽器の世界共通規格の制定に

尽力し、音楽産業の発展に貢献したことが評価

▶ Technical Grammy Award 2013

Page 5: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

概要

● Musical Instrument Digital Interface○ 電子楽器同士を接続する為のインターフェイス

■ 非同期シリアル通信● 速度:31.25kbps● データ単位:8bits (1byte)

■ 端子:IN、OUT、THRU■ 1ポート:16 チャンネル

Page 6: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

メッセージの基本(1)

● メッセージの種類○ チャンネル・メッセージ

■ チャンネル毎に独立した演奏情報を伝える

○ システム・メッセージ■ 全体をコントロールする情報を伝える

▶ Status Byte

(9nh)(8nh)

(Cnh)

(F0h‥F7h)

Page 7: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

メッセージの基本(2)

● メッセージの構成○ 単・複数の8bit (1Byte) で構成○ Status Byte(80h-FFh)、Data Byte(00h-7fh)

例1)Channel=0 で A4(NoteNo=69/45h) を 101/65h の Velocity の音を鳴らす

A4 (NoteNo=69/45h)Channel Velocity (101)NoteOn

※ Channel=0 の A4(NoteNo=69) の音を止める (noteOff (8nh)) ▶ 80h 45h 00h

例2)Channel=0 の音色を Applause(programNo=126) に変更

9 0 4 5 6 5

Applause (ProgramNo=126/7Eh)

ChannelNoteOn

C 0 7 E (9nh)(8nh)

(Cnh)

MIDI Message Tester

Page 8: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

メッセージの基本(3)

● System Exclusive(SysEx)○ 電子楽器固有の機能を制御する為に使用

■ Voice、エフェクトのパラメータ等を送信○ メッセージ

■ F0hで始まり、F7hで終わる■ 可変長

○ ID Numnber (ManufactuererID)■ 楽器メーカが持つ固有のID

● 取得には申請が必要 (申請先:AMEI(日本)、MMA)

F0h <ID Number> <Device ID> F7h・・・

Page 9: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

MIDIを詳しく知りたい!

● MIDI 1.0 規格書○ 発行:社団法人 音楽電子事業協会(AMEI)

▶ http://amei.or.jp/merchan/MIDI_spc.html

Page 10: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

メリット・デメリット

○ メリット■ 信号なので実際の音よりデータ量が少ない

● 「発音せよ!」、「音色を変えろ!」等の信号● 1分約10kb以下

■ シーケンスが書ける

○ デメリット■ 音源によって音色がバラつく可能性がある

Page 11: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

ユースケース

○ 音楽用途■ 電子楽器の複数台同時コントロール■ DAW(Cubase, Vision等)■ カラオケ、演奏記録アプリ

■ 遠隔地ライブ配信 Elton John Remote Live

○ ショー(MSC:MIDI Show Control)■ Universal Studio Water World■ Bellagio fountain show

Page 12: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

MIDIをみてみる

TO MAKE THE END OF BATTLE / Ys2 © Falcom 1988 MIDI Data From : http://goo.gl/gxg4Cx

Page 13: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

Web MIDI API

Page 14: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

概要

● ブラウザとMIDI機器を直接つなぐHTML5の1部としてW3Cにて策定が進められているAPI○ WG:Audio WG (Web Audio APIと同一WG)○ Editor:Chris Wilson(Google), Jussi Kalliokoski

○ Milestone

Page 15: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

対応状況

● 実装済みブラウザ○ Google Chrome Canary (Mac)

● その他のブラウザで使う○ Jazz-Plugin (Jazz-Soft.net)

■ http://jazz-soft.net/doc/Jazz-Plugin/○ Polyfill

■ Web MIDI API Shim

○ 使い方

Page 16: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

Specへのリンク

● W3C http://webaudio.github.io/web-midi-api/

● Chrome http://goo.gl/D3AHF3

Page 17: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

Spec

● Method○ [(I/F) navigator]

requestMIDIAccess({sysex:ture/false}).then(scb, ecb)

→ scb:(I/F) MIDIAccess

→ ecb:(I/F) DOMError

○ [(I/F) MIDIAccess] outputs() -> (I/F) MIDIPort■ [(I/F) MIDIOutput] send()

○ [(I/F) MIDIAccess] inputs() -> (I/F) MIDIPort

● EventHandler○ [(I/F) MIDIInput] onmidimessage○ [(I/F) MIDIOutput] onconnect○ [(I/F) MIDIOutput] ondisconnect

Page 18: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

Source

Page 19: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

MIDIメッセージ知らなくてもOK!

● Web MIDI API Wrapper○ チャンネルメッセージをほぼ網羅

http://goo.gl/rWvhGW (英語) http://goo.gl/RAJJTw (日本語)

Page 20: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

Live Coding

http://goo.gl/gTbcHz

Page 21: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

楽器以外を操作

Arduino UNO +MIDI Shield

http://goo.gl/KWT2Cn

Page 22: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

まとめ

● Chrome CanaryでWeb MIDI API実装済み!○ Polyfillを使えばモダンブラウザで利用可能

● Web MIDI APIはすごくシンプル○ Wrapperを使えばメッセージを理解する必要もない

● MIDIは楽器だけの規格にあらず○ アイデア次第で夢は膨らむ

Page 23: Chrome+HTML5 Developers Live Japan #8 - Web MIDI API

Web Music Developers JP

● 音楽系アプリ等に興味のあるかたはぜひ!○ Web Audio API○ Web MIDI API○ Web RTC

Google Groups : http://goo.gl/G9U8Mr Google+ : http://goo.gl/BULcuo


Top Related