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の対応を進めているところであり、今後に期待と言ったところです。

HP Stream 11 d012TU

3万円以下で買えるカジュアルなラップトップ。HPのラップトップはChromebook 11も気に入って使い続けてるんだけど、こういうカジュアル路線が個人的な趣味にドンピシャ。って事で、最近タブレット以外に実機を持ってなかったWindowsの動作確認用に1台入手したのでした。

でまぁWindowsとか言いながらも、おもむろにUbuntuのインストールを始めるわけですが。内蔵ストレージ32GB、メモリの4GBとなるとWindows上に仮想環境作ってもあまり現実的ではない。という事でSD Cardにインストールしてdual boot環境を作ることにしました。実は購入前にこの辺のページを見ていてLinuxフレンドリーなハード構成であることは確認済みなのでありました。

で、いざ作業を始めてみるとUEFIがSD Cardには対応していない様子。USBからUbuntuをインストールしてみたものの、GPTでパーティション切ってSD Card内のEFI Systemパーティションにインストールを指定しても、インストーラの判断かWindows Boot Managerがいる内蔵ストレージのEFIにインストールされちゃう。この時点で一応BIOSからUEFIのBoot設定でUbuntuが選べるようになるのだけど、Grubの起動はするもののLinuxの起動で停止。Grubのコマンドに降りて確認してみると、この時点でSD Cardのストレージは見えていなかった。USBからはインストーラが動いたくらいなので当然Bootは可能。という事でUEFI Shell環境をUSBから起動してみると、やはりUEFIレベルでSD Cardが見えていなかった。

という事で、SD CardからのBootは諦めて別案2つ。

  1. USB 3.0にストレージ挿してインストール:USB 3.0なら高速なストレージが使えるので、USBに逃げるのは悪い手ではない。けど、モバイルで出っ張ったデバイスにrootファイルシステムを置くのは少々不安。ちょっとぶつけただけでpanicしそう、というか昔LOOX Uを埼京線の通勤で使ってた時によく遭遇した。
  2. /bootだけ内蔵ストレージ:/bootなら512MBもあれば十分なサイズなので内蔵ストレージを圧迫する事もない。KernelとinitrdさえUEFIから見えればkernelは起動するし、initrd内に必要なドライバが揃っていればLinux全体のbootにも支障ないはず。
で、案2を採用して作業。Windows 8.1側からdiskmgmt.mscを使ってCドライブのサイズを縮小。512MB分の空き領域を作った。続けて128GBのSD Cardを突っ込んで外付けDVDドライブから14.04.2のインストーラ起動。パーティション設定になったら、さきほど開放した内蔵ストレージ(/dev/mmcblk0)から真ん中にぽっかり空いた先ほどのスペースを使ってext4を/boot用に確保(/dev/mmcblk0p5)。あとは/dev/sdaとして見えてるSD Cardに4GBのswapを作って、残りは全部/用にext4で確保。boot loaderのインストール先は指定方法として/dev/mmcblk0(MMC MBG4GC)を指定すべきなのか、/dev/mmcblk0p1(Windows Boot Manager)を指定すべきなのか迷ったけど、どうせ指定を無視してWindows Boot Managerの横にインストールされることを事前の試行で知っていたのでSD Cardである/dev/sdaを指定。
再起動後は電源入った直後にESC連打でメニュー。F9からUEFIのメニューにいけばUbuntuがGrub経由で起動できる。F10でBIOSからUbuntuをデフォルトにしておけば、Grub経由でWindowsもchainloadできるので便利。

その他、デバイス周りの注意点。
  • 内蔵無線LANは初期の14.04ではサポートされていない模様(from まさおのブログ)。14.04.2では問題なく使えてたけど、数時間に1度くらいの頻度で接続が切れて、無線アクセスポイントの認証に失敗するようになる。上記ブログで紹介してるGithubのリポジトリから最新版(2015/4/19現在)をとってきてインストールしたところ安定して動作している模様。
  • 初期状態&インストーラではタッチパッドに問題があった。カーソル移動くらいなら大丈夫なんだけど、一度クリックするとそれ以降クリックが効かなくなる。マウスの設定でタッチを一度無効にしないと外付けマウスも効かなくなるので注意。インストール中は外付けマウス使いました。この情報によればKernel 3.19で修正されているらしいが、こっちの情報によると3.16。手元ではインストール後の3.16.0-34-genericへのカーネルアップデートで治ったので、バックポートされたのかも。
  • インストール後にバッドノウハウページ発見。なかなか良い情報源。輝度調整ボタンとか音量調整、飛行機ボタンなんかは、14.04.2では標準で使えてます。
  • Caps Lockはこっちの方法で。swapcapsにするとShiftとの同時押しで誤動作するので潔くnocapsにしました。
  • BIOSからVT有効にできるのでKVMとかVirtualBoxとか入れて遊ぶのも一興。とりあえずHaiku OSのx86安定版とtrunkのx86とx86_64を入れてる。
という事で、なかなか良いマシンなのではないでしょうか、と。