ラベル WebMIDI の投稿を表示しています。 すべての投稿を表示
ラベル WebMIDI の投稿を表示しています。 すべての投稿を表示

2015年12月26日土曜日

Think MIDI

Think MIDIがとにかく凄かった

って話を書こう、書こうと思って引っ張っていたので、忘れないうちにそろそろ書こうかと思います。イベントの詳細については藤本さんのDTMステーションに紹介があるので、そちらを見てください。今回、関係者のご厚意でイベントには招待して頂いたのですが、そういう事を抜きにしても「これ、国際フォーラムで2F最後列で1万って言われても絶対行く!」って内容でした。

出演陣が凄い!

メインステージだけでも、裏ボス級のアーティストが惜しげも無く大量投入。
Day 1:向谷実、西脇辰弥、増田隆宣、篠田元一、浅倉大介、松武秀樹、冨田勲、服部克久
Day 2:大島ミチル、伊藤賢治、伊藤圭一、白井良明、難波弘之、氏家克典、梯郁夫、松武秀樹、篠田元一、根岸孝旨・阿部薫
(抜けがあったらごめんなさい、裏ボス級じゃないって意味ではなく、単純に多すぎて書き忘れてるだけです)

展示が凄い!



YMOに関しては既に何回か機材展示があったので、そこまで貴重と言うわけではなかったかもしれないですが。
それにしても、このタンスに松武さんがスタンバって、メインステージとの共演をやったりしたのには大興奮。

また、これ以外にもヴィンテージシンセが年代順に展示されていました。この写真は展示のほんの一部だけ。


円卓に並べられた往年の名機たち。実は全機がMIDI接続されていて、Web MIDI使って使ったというパッチベイを使ってお客さんが手前のキーボードから演奏できるという仕掛けに。

左のは物理モデリングのVL1。実物は初めて見たけどめちゃくちゃオシャレ。眺めてたら知り合いの方が来て「これ僕が作ったんですよ」と、少しお話を聞かせてもらいました。VL-70mは持ってたんですよ。大学に来るときにヤマハ音楽教室の積み立て金が余ってて。好きな楽器選んでいいよ、って親に言われて(妹には内緒って言われてたけど、もう時効だよね)。高校でクラリネットやってたので、コントローラのWXとセットで手に入れて、今でも大切に持ってます。今回ステージで氏家さんが使ってたんですが、やっぱり生楽器のシミュレーションでは別次元の素晴らしさでした。

で、他にも企業展示とかあったんですが、撮影して良いのかわからなかったので写真はありません。

ライブ・ステージ

個人的に思い入れのあるアーティストも多かったので、文章だけですが、がっつりと。

Live I The Great MIDI's

YAMAHA DX-7、Roland D-50、KORG M1に関して、それぞれ縁のあるキーボードプレイヤーが語りつつ、篠田さんとセッションするという素敵コーナーです。ちなみに僕は篠田さんの実践コード・ワークで結構勉強してた人なんですが、篠田さん自身についてはほとんど知らなくて。今回、ステージ関係をまとめていらしたようなのですが、司会も素敵だったし、セッションで演奏された篠田さんの音楽も好み。帰り道にamazonで検索したらCDあまり出てこなくて教本ばかりだったのでがっかりしたくらいです。

で、トップバッターは向谷さん。DXのプリセットを作りこんだご本人の降臨。初期のカシオペアで使われてたような音色で時間差でデチューンしてくようなうっとりサウンド。感動しました。向谷さんのコピーはみんな二人でやってるみたいな話がありましたが。そりゃそうですよ。向谷さんって和音でフレーズ組んじゃうっていうか。メロディーにも複雑なハーモニーが積まれてて、採譜するのも演奏するのも凄く大変。加えて大量の音色だもんなぁ。

二番手の西脇さんは僕にとってはかなり特別な存在で。子供の頃、歌謡曲って一切聞かない子だったんですよ。なんか音がスカスカで聴いててもつまらないな、とか思って。ゲーム音楽とかは好きだった癖に(笑)。でも、ドリフとか見てるとなんとなく耳には入ってくる。で、ある時たまたま聴いたribbonの「太陽の行方」に衝撃受けて。それからアイドルの曲とかロックも聴くようになった。それ以来、西脇センサーみたいなのが体の中に出来上がってしまって、気になる曲を見つけて調べると西脇さん、みたいな時代が長いこと続きました。國府田マリ子にしたって西脇さんの存在がなければ聞いていたかわからない。その後の音楽の趣向に大きな影響を与えた人です。西脇さんは編曲はシンセがっつりだけど、演奏はオルガンにハーモニカってイメージなんですが、結構なシンセ好きのようで。篠田さんとのシンセ談義は永遠に聞いていても飽きなそう。Rolandのエンドーサーでもある西脇さんはD-50の紹介をしつつ、今に繋がるRolandの音作りについてのお話でした。

最後は増田さん。B'zのサポートメンバー。音は色々なCDで聞いてきてるけど、アーティスト本人については僕はあまり知りませんでした。ロックな音楽性とKORGの太い色がマッチしてますね。M1の紹介という性質上、一世を風靡したあのピアノ音を使ったデモではありましたが。

そう言えば関係ないけど昔作った【ニコニコ動画】【初音ミク】寂しがりやの舞踏会 - Cosplay i-Doll -【オリジナル】は、Legacy Collectionですけど、ほとんどM1でした。綺羅びやかな音色が多いので、こういう使い方も結構いける。

Live II History of Legend

MIDI登場以前のシンセを使ったスペシャルライブ。松武さんはタンスにスタンバイ、篠田さんと浅倉さんも、それぞれヴィンテージなアナログシンセ。実験的な音楽から始まって、最後はなんとBehind The Maskで〆。浅倉さんというとデジタル世代って感じですが、その浅倉さんを交えてのアナログ全開なBehind The Maskは聴いていて涙モノでした。

Live III MIDI SUPER BAND

難波さんを交えたSUPERライブ!難波さんは関西でのライブから駆けつけてリハもままならなかったようですが、演奏は熱かった。ここまではわりとフュージョン色が濃かったんですが、難波さん登場とあってキング・クリムゾンのコピーありーので一気にプログレ展開。氏家さんも色物シンセを駆使しての変態的な演奏を展開していたし、松武さんはタンスで追い打ちかけるしで、狂喜乱舞のステージでした。ここでも最後はなんとライディーン。「あ、やばっ。ちょっと音作るんで待ってください」ってアナログシンセ最高!ってイベントの趣旨に反した想いを抱きつつ「ちょっ、それまさか」のライディーン。難波さんがその場で作った音色でリードをとってのライディーンとか、どんだけレアなんだこれ。

その他のステージ・デモイベント

パネル:MIDI Legen - Think MIDI -

松武さんがセットしただけあって、超超超大御所が登場。服部克久先生に富田勲先生。服部先生MIDIとは縁遠い印象で、トーク的にも生演奏派って感じだたんだけど、富田先生が話し始めて合点が言ったというか。この二人組み合わせると面白いし、旧知の仲だったんですね。富田先生が当時、新しい音を作っては服部先生のところに夜中に電話してきた話とか。松武さんの用意した質問も面白くて、富田先生ちょっとヤバメの大暴露の連続。

松武「金星の冒頭のあの人の声のような音、どうやって作ったんですか?」
富田「あぁ、あれか……。……人の声……に聴こえますねぇ」
服部「ちょっと、あぶないよ、この人。大丈夫なの?!」

えー?!ちょっと、今、何て!!

松武「新しい録音ではティンパニの音を入れなおしてるらしいですが、前はどうやっていたんですか?」
服部「ちょっと、あれ言わないほうがいいんじゃないの?」
富田「……ティンパニの音ですね」

!!!

まぁ、盛り上がりました。で、このトークで新録の存在を知ったので、帰り道でさっそくGoogle Play MusicにてULTIMATE EDITION聴きました。いや、いい時代。しかし、結構作りなおしてますね。「イトカワとはやぶさ」とかいう断章が追加されてますし、生っぽい音も積極的に追加されていて、開き直ってハイブリッドにしました、な感じ。

MIDI's Exhibition

実はここあまり見てなかったんですが、イトケンさんがコメンテーターとして出演されてて。最後にオケもので、Logicで作った借版を流すところがあったんですが……そっかー、今時は適当に作った借版でもこんな音が出ちゃうんだー、と妙に感心しました。一昔前は寺嶋民哉さんとかがゲーム音楽の予算使って実験的に手間暇かけて電子オーケストラやってたわけですよね。それよりはるかにリアルな音が素人が手の出る予算でDAWをオンライン購入すれば実現できちゃう。もちろん能力も必要ですけど、機材的には可能なわけですよね。凄いなぁ……と驚きました。

大島ミチルと映像音楽

メインステージでのトークでしたが、素晴らしい内容でした。大島さんって映画やドラマの音楽を何万曲も書いてる方で。忙しい時には一晩で何十曲とかお話してました。その大島さんを技術面で支えていた伊藤圭一さんを交えてのトークだったんですが。オーケストラやピアノを使った作品が中心なのでMIDIは関係ないと思っていたら、まさかのMIDI大活躍っぷりに驚きました。

まず、スタジオなんですが大島さん用特性のピアノ。中に手作りのMIDI装置が取り付けてある。今でこそ自動演奏機能付きのピアノは当たり前のように売ってますが、それ以前に考えて作られたんでしょうね。映像を見ながら即興で曲を作るんですが、映像とのタイミングが微妙にずれてしまった時にMIDIデータでテンポを修正して再演奏したものを使っていたんだそうです。最初は自分の演奏を修正される事に大島さんも抵抗があったそうですが、慣れてからは一発撮りでもミスを恐れず、音楽的に妥協のない思い切った演奏ができるようになって良かった、といった話をされていました。

それとオーケストラ曲を作る際にも、今はオーケストラ音源を使ってMIDIで曲を組み上げるんですね。で、映像に合わせてテンポ取りをして。そのテンポ情報からクリックを作って、本物のオーケストラが録音する時はクリックに合わせて指揮棒を降る。こういう裏事情は全然知りませんでした。

ABILITY Proのデモ

デモステージだったんですが、西脇さんを交えて、という事でガチで見ておりました。しかし、ミュージシャンの方々ってトーク慣れしてますね。エンドーサーとしてのキャリアからなのかもしれませんが。ボーカロイドが操作できるショルキーを使ったデモとかもしてました。ひょっとしてあれ、中身はeVocaloidだったのかな?NSX-39と似たような仕組みで演奏してました。救済ボタンがついてて、歌詞がずれた時に小節頭に戻せたりするらしいです。あと、megpoid v4のデモ曲が西脇さんだったらしく、そのデモ演奏もありました。西脇さん、中島愛さんのライブのバンマスだったのか……知らなかったなぁ。

AMEIによるWeb MIDI / Web Audioを使ったデモ演奏

プロのミュージシャンがChrome上で動くWeb AudioベースのシンセをWeb MIDI経由で演奏する、というもの。嬉しい半面、やっぱり見ていてドキドキする。トラブルあったらごめんなさい、みたいな。で、実際トラブルあって「ブラウザが応答しません」ダイアログが出ちゃってドキドキ……。Rolandの渡邊さんが例によってブラウザベースのVJシステムで映像を出していました。

しかし、レイテンシの低めなOS Xを使っていても、プロの演奏陣から見ると、まだまだもっさりな印象が否めないようですね。まぁ、この辺はソフトシンセが出てきた頃も同じように言われていて今の地位を築いたわけで、おいおい解決されていくのかな、と思っています。

別のステージでも誰かが言われてたんですが、実は慣れの問題も大きいし、レイテンシ含めて楽器なんだよね、みたいな話。確かにアナログシンセとかは立ち上がりが良いのですが、ピアノとかだってメカニカルな遅延があるし、最近何気なく使ってるソフトシンセだって遅延はアナログ時代より大きい。そもそも普段の演奏からして音速350m/sの世界なんですよね。10m離れていれば30msecくらいは遅れてちゃう。だからオケでは指揮棒を見て合わせるんですが、そもそも人間自身の反応速度を考えると、脳が考えてから手が動くまでの遅延のほうが1桁大きい。なので頭の中では常にタイミング合わせるための先出しをしているわけで、楽器側の遅延はそこに若干オフセットを加える程度の差異なんですね。もちろん練習を重ねてきたタイミングがあるので、慣れないと違和感は感じるわけですが。

でもまぁ、そういう事はプレイヤー側が言うからカッコいいのであって、作る側は改善する努力は続けるべきだろうな、とは思います、もちろん。

「DTMステーション Plus!」出張版

あれ、藤本さんまでステージあったのかー、って感じで。なんかこっち方面の知り合いはみんな出し物やらステージやらでしたね。作曲家の多田さんとオーケストラ音源を使った打ち込みの実際みたいなステージでした。多田さんの音楽はあんまり知らないかなぁ、とか思ったけど、天地無用!GXPとか、砂沙美☆魔法少女クラブの人でした。めちゃくちゃ通ってきた道じゃん。最近はプリキュアって言ってたので子供達の耳にも浸透してるはず。ストリングス音源って奏法の切り替えとか普通のシンセにはない特殊なMIDIの使い方をしていて、とっつきにくい印象だったんだけど、デモをみると抵抗なくなりますね。たぶん「本当にこんな風にして使うのかなぁ」といった長年の不安が「あ、やっぱりこれで良いのか」と解決してすっきり。とは言っても、昔持ってたEW/QLとか、最近のOS Xだとインストールできなくて、使える状態にあるオーケストラ音源は今は持っていないのであった。安くなってきたとは言え、年1回くらいしか使わない現状だと、使うたびにアップデートとか、Windowsとか据え置きゲーム機みたいな状況に……。

閑話休題。最後は打ち込みオーケストラに生バイオリンの共演って形のデモで終わりました。

最後に

facebookのコミュニティにも貴重な写真が上がっているようですので、ぜひチェック!2015というタイトルから来年にも期待しちゃいますね。梯さんにも元気で活躍し続けて頂きたい。

しかし、MIDIも30才を越えました。これからどうなるんでしょうね。WWWの世界も最先端って言われ続けてもう25年も経つ技術です。そのWWWも基幹技術のHTTPについて抜本的なメスが入り、1.1から2.0への移行をまずまずの調子で進めています。その一方でもう1つの基幹技術HTMLは苦しみながらも段階的な改良の道を選びました。戦略の違いはプレイヤーの数の違いから来るところなんでしょうね。HTTPならApacheやnginxなどの主要なサーバ、IE/FF/Chromeといった主要ブラウザさえ対応してしまえば、ある程度強引に移行が勧められそうですし、実際にそういうシナリオで進んでいるように見えます。一方でHTMLは世界に無数に散らばるコンテンツプロバイダーに影響する話ですから、例えコストがかかっても泥沼を掻き分けて進むしかありません。

MIDIもここ数年でWeb MIDI、BLE MIDIと応用範囲を広げていますが、基本はエンドユーザ向けの段階的な変化ですね。昨今、音楽産業の中心がレコード会社からライブ運営会社に移ろうとしています。現状ではステージ全体の制御となるとMIDI、DMX、OSC、あとは0MQ使った独自システムの相互運用みたいな感じなんじゃないかな?予算とどこまで実験的な事をやるかによって、その場その場でシステムを組んでいく感じで。ツアーでも、それなりにベーシックな構成でも機材一式をトラックに乗せて回るしかない。お金がライブ主体で回るようになった時に、この辺がどう整理されていくのかは少し興味があります。アマチュアのライブでも自宅で作りこんだ照明データをライブハウスに持ち込んで〜みたいな事ができるようになると楽しいな、という話なんですが。

2015年6月12日金曜日

ライブの告知

久々のライブです。Cri☆siSさんの後ろで演奏させてもらったのが2008年で、この年を最後にライブハウスでの演奏はしてない気がします、僕の記憶が確かなら。会社内のイベントではパーティー会場とかニコファーレでボチボチ演奏してはいたんですけどね。で、活動再開だーっと思った矢先に3人目の子供が出来たので……たぶん一時的な復活に終わる気がしていますよ。まぁ、ともかく告知です。

Magical Girls Fes!!3!! @ 2015年7月5日(日)高田馬場CLUB PHASE

女の子イベントですが、バックバンドとして参加します。300人のキャパがある箱で開催される結構大きめなイベントですね。東京女子流のコピーでキーボード担当。Rolandの音源を限界まで駆使して仕込んでます。でも、生演奏を重視したかったのでシーケンスは未使用。オーガニックな味をお楽しみください。

闇の大感謝祭 @ 2015年8月8日(土)浅草KURAWOOD

こっちも300人弱のキャパがある箱。ライブハウス内でおでん、たこ焼きを売ってたりとか、お祭り騒ぎのイベント。今から演奏後に呑んだくれるのが楽しみで仕方がない。
演奏曲ですが、クラウドと言えば雲、雲と言えば八雲。そんなわけでTAKADA BANDでございます。昔から大好きだったんですが、いざ演奏してみるとドフュージョンなキメばかりで変な汗がダラダラと……。こちらはYAMAHAの音源で90年代サウンドを余すところなく再現。再現度という意味ではあらゆる点で海老反り級を目指しております。

とまぁ、そんなところでしょうか。せっかく久々のステージなのでニコファーレで培ったVJ技術を使いまわそうかと思っています。きっとシンセの演奏に合わせて派手に動く映像が僕の横でチカチカしていることでしょう。Powered by Web GL + Web MIDI on Chrome。

(追記)ニコニコに上がってるこの辺の動画がわりと最後の演奏かも。

2015年4月20日月曜日

Chrome 43 beta with Web MIDI

こちらでもアナウンスしたのですが、大切なことなので日本語でも言っておきますよ。しかも、もっと詳しく。

最新のChrome BetaでWeb MIDI APIが標準でサポートされるようになりました。このAPIはAndroid版と全てのデスクトップ版Chromeで利用可能になります。

MIDIはご存知の通り30年以上の歴史を持つ古い規格。よくSMFと混同されがちなのですが、音楽ファイルというわけではなく楽器同士の通信プロトコルです。その通信内容を時間情報とともにダンプしたファイルがSMF。演奏情報を記録する事でカラオケや着メロの楽曲データとして利用されてきた経緯もあり、その印象から(チープな音で演奏される)音楽ファイルとして誤解されがちですが、あくまでもそれは一応用、という事で。

なんでそんな古いものをまた……と思ったそこのあなた。Webも25年近い歴史を持つ古い技術です。垣根を超えてつながることで発展してきた、という意味ではどちらも似た志を持っており、絶妙な割り切りが的を得て発展・成功した仲間です。ここでこの2つが分野を超えて繋がることで新しい応用が広がるかと思うと、なんかワクワクしませんか?

Web MIDI APIはJava ScriptからMIDIの入出力を可能にするAPIです。具体的には電子ピアノやシンセサイザーなどのキーボード類、電子ドラム、あるいはDJ機器からの入力を受け取ることが出来るようになります。一方で、各種電子楽器に対して演奏情報や設定情報などを送信することが可能になります。これにより

  • 電子楽器の音色管理ソフトウェアをWeb上で構築
  • サイトを通じて自動演奏ピアノに曲を提供
  • Web Audioなどで作られたソフトウェア音源をキーボードから演奏
  • 演奏情報をWebからリアルタイム配信
  • Web GLなどを使って作成したVJソフトを演奏情報に同期させる
などがWeb標準技術を用いて実現可能となります。すでに多くの開発者がソフトウェア音源を作ったり、DAWソフトを作ったりしていますが、これからも多くの応用が生み出されていくと期待しています。

今現在ではWeb Audioの実装で先行していたChromeのみがWeb MIDI APIをサポートするブラウザとなっています。が、仕様はW3Cで標準化されており、同じくWeb Audioの実装を持ったFirefoxも開発を進めているところです。IEは今まさにWeb Audioの対応を進めているところであり、今後に期待と言ったところです。

2014年10月22日水曜日

Web Music Platform 魔改造

YAMAHAさんのWeb Music Platform
bower使ってmodule化されつつあり、自分のモジュールを追加した魔改造もしやすくなってきてます。とりあえず自分の方でもtsstmalibなんかをPolymer化、bowerで突っ込めるようにして、2つばかりVisualizerとして追加、さらにHerokuにdeployできるようにした魔改造版を作ってみました。


実際にdeployしたデモはこちら

そう言えばHeroku、ここ2ヶ月くらいで変な最適化が入ったのか、謎な挙動をしますよね。例えばpostinstallのスクリプト中にgit cloneしたリポジトリから特定のrevisionをcheckoutしようとすると、そこはrepositoryじゃないよ、的な事を言われてcheckoutできない。Google Codeからだとbranch作ってbranch直指定でcloneする以外に解決方法見つからなかった。GitHubの場合はtagを切ってないモジュールをbowerでinstallしようとしても、同じように怒られる。さらにbowerが途中でエラーするとbuild directoryから最終的なdeploy先にbower_componentsの中身がコピーされない? こっち系はあまり詳しくないので、詳しい人がいたら対処法というか裏で何が起きてるのか教えてもらえると嬉しいです。というか、今日ささださんとお昼食べるから聞いてみれば良いのか。

それはそうとscript tag injectionとかXHR、そのままだと並列読み込みとか扱いが面倒なので、Promise化してPromise.allで一気に待つようにしてみたら結構お手軽に高速化できた。もうPromiseなしでは生きていけない。

2014年9月14日日曜日

ニコファーレ完結編


イベント終了。突貫工事だったけど、なんとかそれなりに仕上げることができたかなぁ、と。イベント中はプロの映像制作屋さん・オペレータの2名と一緒にLED照明卓に張り付いていたので、プロの作業を仕込みの段階から長時間見ることができたのが何よりの収穫。

作った素材的にはこの辺にあるモノ+αの15種類くらい。3chのミキサーをMIDIコントローラから制御できるようにしたホストアプリをtmalib上に構築してました。今回のために書いたコードは175 commitsにわたり、コード量も倍増。
% git log -p --full-diff --since Aug | wc -l
23742
だそうです。

Tell Your Worldのステージ中に使った素材の一部

ライブラリ実験用に作った3D版Waypointsがパラメータを変えるだけで色々と使いまわせたのは助かったです。特に直前に追加で作ることになったエンドロールとかは数時間しか作業できなかったので……。フォントからテクスチャ作るライブラリ工事だけで時間切れになっちゃった感じ。

本番のエンドロールはMichael Jackson版Behind the Mask

で、色々と見つかった課題。

  • 自分の作ったライブラリで一番まずかった点はミキサーのフェーダ。うかつにも線形に作ってしまったけど、どう考えても対数で作るべきだった。コードばかり書いてて操作をあまりやってなかったので気付かなかった。
  • 機能として足りなかったのはプレビューと速度調整。プロの現場だと、次に使う絵をプレビューで先出ししてて、ステージ上の音楽に合うように映像のループ位置や速度を調整して、ここからって場所が来たら瞬時に切り替えて使う。DJアプリと一緒ですね。今のフレームワークでもタイムラインはきちんと管理してるので、UIさえつければすぐにでも動く。けど、性能的にプレビューまで出すのはちょっとキツイ。本番ではFull HDで生成・出力をしていたけど、エフェクトを重ねてると現状でも30fpsに落ちることがあった。そもそもコンソールと外部出力、複数のウィンドウに対して、同じタイミングで絵を送るのがちょっと難しそう。Web Music Hackathonの打ち上げでも話題に出てたけど、それこそOS XのSyphonみたいな仕組みが欲しくなってくる。
  • シェーダーのコンパイルに数百msec必要で、その間requestAnimationFrameが届かなくなるため、エフェクトのダイナミックなロードが難しい。フレーム落ちを避けようとすると、基本的に曲の頭で色々なリソースを先読みする事になってしまい、メモリ消費が激しくなりがち。ちなみにこのアプリは起動時に500MB以上食ってたし、デバッグ時には作業しているうちに2GB付近まで増えてタブ落ちする事も。
でもまぁ、ウェブアプリベースで本格的な照明制御を行う実験としてはまずまずかな。思いついた事を全てやるには圧倒的に時間が足りなかったけど、まずまずは満足。


Web MIDI API update at Chrome 39

これが最初で最後になるとは思うのですが、ECMAScript 6との親和性を高く保つため、既存のJavaScriptコードに修正が必要になる変更がChrome 39で導入されます。現在はCanaryとDevのみの変更ですが、年内には安定版も含めて新APIへ移行します。

Chrome 37, 38, 39で動作するコードを考えた場合に気をつける点としては、ES6のfor...of構文が導入されたのがChrome 38という点に注意する必要があります。この構文を含むコードは、例えこの構文が実行されないパスにある場合でも文法エラーになってしまいます。そのため、Chrome 37以降で動作させるためには、next()とdoneを使ってforループを回す必要があります。

具体的な例としてYAMAHAさんがGitHubに公開しているコードに対してパッチを作ってみたので参考にしてみて下さい。



To be more friendly with ECMAScript 6, we will introduce incompatible change to Web MIDI API that requires applications' JavaScript code being modified in Chrome 39. It's in Canary and Dev channel for now, but all channels including Stable will migrate to the new API by the end of this year.

If you want to support Chrome 37, 38, and 39, you should be careful about that the ES6 'for...of' syntax can be available in 38 and laters. It will raise a syntax error. To avoid this problem, you need to use next() and done to run a for loop correctly.

Here are two examples for YAMAHA's GitHub projects that may help you.


2014年8月29日金曜日

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

Web Music Meetup #1で発表したスライドを公開しました。Chromeでの実装についてのまとめです。今までHTML5についてはWebSocketとWeb MIDIについて関わってきましたが、どちらもメディアアート系の人たちに気に入ってもらえているのが嬉しいです。


2014年6月14日土曜日

続・ChromeにおけるWeb MIDI APIの実装状況

昨年末にWeb MIDIの実装状況について書かせて頂きました。その後の更新状況についてまとめたいと思います。

Chrome 34
  • Linuxサポート(ALSAをサポートするシステムのみ)
  • Androidは出力のみ対応(ただし、初期化手順の問題で最初の呼び出しは失敗する)
  • リアルタイムメッセージのサポート
  • システムメッセージ(sysexではない)はパーミッションなしで送信できるように修正
  • 送信メッセージにエラーがある場合、詳細情報がエラーメッセージとして書き出されるようになった
  • パーミッション許可を求めるinfobarが file://... に対しても表示されるようになった。ただし、セキュリティの都合上、許可・不許可は記憶されない。
  • Windowsでtimestampが間違っていたのが修正された
Chrome 35
  • PromiseがWeb MIDI向けの機能限定版から、フル機能版に差し替えられた
  • Chrome OSサポート
  • Androidの入力サポート(初期化手順の問題は未修正)
  • OS Xにおいて送信されるMIDIメッセージにCore MIDIのtimestampが正しく付加されておらず、Chromeから送信されるデータをDAWで受信すると、正しいタイミングで録音できない問題が修正された
  • MIDIAccess.sysexEnabledアトリビュートが追加された
Chrome 36
  • Androidの初期化手順の問題が修正された
Chrome 37(予定)
  • LinuxとChrome OS向けの実装が改善された(ALSA sequencer APIに対応)
  • Android向けのUI実装完了(infobarと設定画面)
追記:Chromeで実装しているAPIは最新版と若干異なります。最新の使用に合わせて近々更新する見通しですが、それまではこちらの旧APIを参照願います。またMIDIConnectionEventの実装も新APIになるまで見合わせています。

For English readers;
I'd summarize Web MIDI implementation status on Chrome. I also did it at the end of the last year, but in Japanese. So, I'd mention also previous status together.

Chrome 30
  • chrome://flags#enablr-web-midi appeared on OS X
  • Input ports were available on OS X, but there was a bug on sysex until Chrome 32
Chrome 31
  • Output ports were also available on OS X
  • Infobar and settings UI were implemented as a part of content settings
Chrome 32
  • IAC driver was available
Chrome 33
  • Web MIDI worked on Windows, but had wrong timestamp values
Chrome 34
  • Web MIDI worked on Linux (but only ALSA supporting systems)
  • Also, worked on Android, but only output ports are available
  • There was a problem on initialization process, so the first API call didn't work on Android
  • Real-time messages were available from this version
  • System messages were available without a sysex permission from this version (previous versions required a sysex permission even for system messages)
  • Error provided detailed messages on invalid send messages
  • Infobar appeared even on local files, but browser could not remember the permission because of security reason
  • Wrong timestamp was fixed on Windows
Chrome 35
  • Now, Promise is not limited version Promise, MIDIAccessPromise, but fully featured proper Promise
  • Now the API is available on Chrome OS
  • Input ports are available on Android, but the initialization issue is not fixed yet
  • Fix a bug that sending messages had wrong CoreMIDI timestamp and caused a problem that DAW could not record Chrome sending messages with correct timestamp
  • MIDIAccess.sysexEnabled attribute is added
Chrome 36
  • Android initialization issue will be fixed
Chrome 37 (planned)
  • Linux and Chrome OS supports will be improved so to support ALSA sequencer API
  • Infobar and settings UI for Android will be implemented
Note: The implemented API is slightly different from the latest W3C spec. You can see the old specification here. Also, MIDIConnectionEvent is not implemented yet. It will be available once new API is ready.

2013年12月31日火曜日

ChromeにおけるWeb MIDI APIの実装状況

2013もそろそろ終わりって事で今年色々と動きはじめたWeb MIDI APIの実装状況について簡単にまとめておきたいと思います。会社の方針とかそういう話ではなく、担当者として客観的事実の報告です。

ChromeではMac版のみで実装を進めてきました。最初の実装という事で、実装から仕様へのフィードバック、上位仕様とのすり合わせなどで仕様変更が伴います。全OSの対応を同時に進めると、イテレーションのコストが大きくなってしまうためです。

Chrome 30からchrome://flags#enable-web-midiが登場しました。この時点ではMacで入力ポートのみ動作していました。ただし、SysExメッセージ入力にバグがあり、このバグはChrome 32まで残っています。

Chrome 31で入出力ひと通りの機能が揃い、SysExメッセージ利用許可を求めるUI、設定などが入りました。Chrome的に言うとContent Settingsという仕組みの中に統合しています。

Chrome 32ではIAC Driver経由で外部ソフトウェア(音源)と連携できるようになりました。

Chrome 33からはいよいよWindows版でも動くようになりました。Timestampが異常値を返すバグがあるのですが、基本的な機能は動作するはずです。TimestampのバグはChrome 34で修正されています。

さて、ここまではリリース済み、またはブランチカット済みのバージョンの話でした。ここから先は予定の話になるので確約はできないことをご了承ください。現在、開発中の最新バージョンはChrome 34です。以下はChrome 34に向けて実装を始めている項目です。

  • Promise
    • 今まではthen()しか使えない限定的なWeb MIDI専用のPromiseもどきを返していました。Chrome 32から本物のPromiseが有効になるため、本物のPromiseに移行します。
  • Chrome OS / Linux
  • Android
    • いずれのプラットフォームでもラフな実装を終え、レビューを回している段階です。
これ以外に直近で計画しているのは

  • 入出力デバイスを列挙するAPIが変更になっており、その対応
  • デバイスの動的な追加・削除のイベント通知
ですが、詳細なスケジュールについては調整中です。対応プラットフォームの拡大も含め、いずれもデバイスの動的な追加・削除を実現するため仕組みを、すべてのプラットフォーム上で無理なく実装するための取り組みです。

という事で、仕様も実装も完全に安定したわけではありませんが、興味ある方はぜひ使ってみてください。また、不審な点に気づいた場合には私までご一報ください。

という事で、良いお年を!

2013年10月19日土曜日

Web MIDIでゲーム

最近MIDI入力を使ったゲームが話題になっていたので、Webの世界でも同じ物を・・・と。 Web Music ハッカソンにて作ってみました。 とりあえず、KORGさんのnanoKONTROL2で操作しやすい設定にしてあります。フェーダーセットの一番左側で、Sボタンでスタート、パンでバー操作、フェーダーで弾幕速度の調節です。