IDEA*IDEA で紹介されていた、ブラウザでチップチューサウンドが手軽に演奏できる JavaScript のライブラリ 8bit.js です。
オシレーターの音源は Web Audio API が使われているので、Chrome もしくは Mac の場合は最新の Safari に対応しています。
(Web Audio API 非対応の Firefox、IE では残念ながら動きません)
ライブラリは演奏全体の操作を受け持つメインの EightBit クラスと、ノートの発音を受け持つ Instrument クラスで構成されています。
API の構成はシンプルで、簡単に言ってしまえば MML(Music Macro Language) のマクロを関数単位で呼び出すような仕様になっています。
発音を行う Instrument のインスタンスは EightBit クラスの createInstrument() で波形を指定して生成します。
複数生成してメロディとベースなど複数パートを同時演奏させることが可能です。
note() で音程と音長、休符の場合は rest() で音長を指定、また note() は複数の音程をカンマで区切って複数並べれば和音を発音できます。
メソッドチェーンにも対応しているので、note()、rest() をつなげて続けて書くこともできます。
デモの3曲はオンライン上でそのままソースの編集や実行テストができる Plunker で公開されているので、いろいろ改造して試してみるとよいかも。
そういえば、Firefox は次期メジャーバージョンの Ver.24 から Web Audio API が正式サポートされるようですね。
すでに Nightly Build と pre-beta (Aurora) には実装されているようです。
» Web Audio API comes to Firefox - Mozilla Hacks
[関連サイト]
8bit.js
Plunker
Mozilla Hacks - the Web developer blog
IDEA*IDEA
オシレーターの音源は Web Audio API が使われているので、Chrome もしくは Mac の場合は最新の Safari に対応しています。
(Web Audio API 非対応の Firefox、IE では残念ながら動きません)
ライブラリは演奏全体の操作を受け持つメインの EightBit クラスと、ノートの発音を受け持つ Instrument クラスで構成されています。
API の構成はシンプルで、簡単に言ってしまえば MML(Music Macro Language) のマクロを関数単位で呼び出すような仕様になっています。
発音を行う Instrument のインスタンスは EightBit クラスの createInstrument() で波形を指定して生成します。
複数生成してメロディとベースなど複数パートを同時演奏させることが可能です。
note() で音程と音長、休符の場合は rest() で音長を指定、また note() は複数の音程をカンマで区切って複数並べれば和音を発音できます。
メソッドチェーンにも対応しているので、note()、rest() をつなげて続けて書くこともできます。
デモの3曲はオンライン上でそのままソースの編集や実行テストができる Plunker で公開されているので、いろいろ改造して試してみるとよいかも。
- Super Mario Bros Theme - Created by meenie
- Tetris Theme - Created by rooktakesqueen
- Zelda Main Theme (short version) - Created by meenie
そういえば、Firefox は次期メジャーバージョンの Ver.24 から Web Audio API が正式サポートされるようですね。
すでに Nightly Build と pre-beta (Aurora) には実装されているようです。
» Web Audio API comes to Firefox - Mozilla Hacks
[関連サイト]
8bit.js
Plunker
Mozilla Hacks - the Web developer blog
IDEA*IDEA