NRTDRV on web(tech demo)

(発表会風でお読みください)

技術は進化を続けています。

タブレット型コンピュータの成功、デスクトップPCの衰退、スマートフォンの台頭。
ARMプロセッサの普及によるOSの変化。
コンピュータを取り巻く環境の変化はアプリケーションのあり方をも変えています。

そう、バイナリ(機械語)に依存しないソフトウェアが求められているのです。

あらゆるコンピュータで動作するにはどうすればいいのか、
よりカジュアルな環境を作るにはどうすればいいのか。

環境に依存しないカジュアルなユーザー体験。
それがNRTDRV on webです。

https://dl.dropboxusercontent.com/u/81581673/nrtweb/nrtweb_enter.html
(注意:ファイルサイズが大きいので期間限定です…)

このデモでは、ブラウザ上でオフラインでNRTDRVを再現します。
つまりブラウザが動作すればアプリケーションをインストールすることなく利用できるのです。

そしてこのデモでは最新技術を惜しみなく利用しています。
例えばEmscripten。C言語などの言語をLLVMを利用してJavaScriptに変換するバックエンドです。
asm.jsに最適化されたスクリプトは対応ブラウザであれば、
ネイティブバイナリに対して半分程度の速度低下で実行可能です。

WebAudio API。モダンアーキテクチャに対応するブラウザが対応する新世代音声処理APIです。

NLGファイルフォーマット。
NRTDRV for Androidにも利用されている、NEZplugコアエンジンによって出力されたログを
扱いやすくするYM2151 x 2 / AY-8910 x 1という環境に対応した独自ファイルフォーマットです。

このデモ、NRTDRV on webでは、NLGとminiplayというNEZplugベースのレンダリングエンジンを
EmscriptenでJavaScriptに変換。ブラウザ上でリアルタイムに音声データを生成し、WebAudio APIで再生します。


リアルタイムで生成しているという証拠にPAUSEボタンを押してみてください。
レジスタへの出力が一時的に停止されたあの懐かしい音がします。


WebAudio APIは現時点では対応していないブラウザもありますが、
ブラウザは進化を続けているので、今後、様々な環境で利用できるようになる可能性があります。

また、WebAudio APIに対応していなくても音声を出力しない形でのベンチマークは実行できます。
ブラウザによっても、環境によっても全く異なる数値がでることでしょう。

私のスマートフォンでは1.099倍でした。ぜひお友達と比較をしてみてください。


では、またの機会にお目にかかりましょう!
以上、発表会風でした!

一度はやってみたかったんですよね。

俺俺って尖った感じが厨二病ならこれは何病?リンゴ病?

冗談はさておき、WebAudio APIがあらゆるブラウザに搭載されることは間違いありませんし、
iOS 6もWebAudio APIには対応しているので、今後環境は広がるんじゃなかろうかと。

ただ、惜しくは現時点でFirefoxが対応してないこと。WebAudio APIがまだ部分的な実装の段階で、
ScriptProcessorNodeが作れないという。ベンチマークはFirefoxがasm.jsに対応しているので
圧倒的なのですが…。

Atom ネットブック + Chromeでも詰まりながらもなんとか再生できるのはすごいなと。

最後に、なるとさんのSAMPLE01を利用させていただきました。
ありがとうございます。
スポンサーサイト

コメント

非公開コメント

プロフィール

BouKiCHi

Author:BouKiCHi
ABOUT ME
MAIL:alf_byncyou at hotmail.com

WEB:http://clogging.web.fc2.com/
TWITTER:@bkc_alf

月別アーカイブ

FC2カウンター

ブロとも申請フォーム

ブログ内検索