ads by Amazon

2013年4月10日水曜日

1. はじめに

(1)ゲームで音楽を鳴らす方法
一般体なWindows、Android、iPhoneのプログラムの場合、MP3、OGG、WMAなどの圧縮された音ファイルに記録されたPCMデータをループ再生させる形で音楽を鳴らしています。しかし、この方式では、VGSの音声品質(22050Hz/16bit/1ch)なら1分あたり約2MB、CDの音声品質(44010H/16bit/2ch)なら1分あたり8MB程度の容量が必要になります。

現代のコンピュータならともかく、嘗てのファミコンなどでは、それだけ多くのメモリを積むことは不可能でした(昔のメモリはビット単価が高価でした)ので、その仕組みを採ることはできません。その仕組みが最初に採用されるようになったのは、PCエンジンのCD-ROM2ぐらいからです。嘗てのゲーム機は、プログラマブルな音源モジュール(PSG音源、波形メモリ音源、FM音源など)を搭載したマイクロチップを、プログラムが制御することで、ゲーム音楽を奏でていました。

(2)現代における価値
現代のコンピュータなら、チップチューン音源が無くても、MP3等でどんな音楽でも奏でることができます。敢えてチップチューン音源の価値を挙げるなら、「音楽データの容量を低く抑えることができる」という点ぐらいです。ネットワークがブロードバンド化し、ディスクやメモリの単価が年々安くなっていった現代、その価値は極めて低いものとなりました。

しかし、スマートフォンの登場により状況が変わりました。

スマートフォンの場合、帯域制限の大きい無線ネットワークを使用することになります。また、本体に搭載されたメモリサイズは、PCと比較して遥かに小さく、iPhoneなら本体容量の拡張はできません。Androidなら外付けのSDカードで容量の拡張は可能ですが、本体のメモリサイズは極めて小さい(私が所有しているXperia rayの場合300MBぐらいしかない)です。
つまり、スマートフォンではまだまだ、「容量の小さいアプリ」に対するニーズが大きいといえます。
実際、Appleの開発の手引書にも「アプリのサイズは可能な限り小さくすること」がガイドされています。

(3)仮想化
スマートフォンには、プログラマブルな音源チップは搭載されていません。
しかし、ネイティブコードの処理性能であれば、音源チップのエミュレーションは可能です。
そこで、私は、エミュレータの仕組みを応用して、スマートフォンでも使用できる仮想音源チップを開発し、それを私の仮想ゲームマシンVGSに搭載しました。

(4)本ブログの目的
このブログは、VGSで実装している波形メモリ音源システムの実装に関する詳細な実装方法を解説することを目的に設置してみました。このブログに書かれた記事を全部読んで頂ければ、Windows、Android、iPhone全てのプラットフォームで共通の動作をする、音声発音システムの実装が可能になると思います。
私は、VGSという枠組みで、波形メモリ音源を用いた音声発音システムを、プログラマが容易に実装できる形で提供しています。そして、私はVGSの利用を促進していくことが最良の手段であると考えています。
しかし、独自のプログラムでその仕組みを実装したいというプログラマ諸氏の熱意に応えるため、この仕組み(内部実装)を詳細に解説することにしました。なお、既に本(右側のVGS book)で解説している内容が幾つかあるかもしれません。「読んだことあるぞ?」という記事は、適宜読み飛ばしてください。

0 件のコメント:

コメントを投稿