Tetorica FM2612 Playground を作成しました。
pages
https://kyorohiro.github.io/hello_ymfm_wasm/playground/index.html
itch.io
https://kyorohiro.itch.io/tetorica-fm2612-playground
JavaScript から YM2612 を鳴らして、
FM音源の仕組みを試したり、ゲーム用の音や短い音楽を作ったりできる
ブラウザ上の Playground です。
元々は、
「YM2612 を理解したい」
「ブラウザやゲームから簡単に使えるようにしたい」
という目的で作り始めました。
YM2612 のエミュレーションには ymfm を使用し、
WebAssembly (wasm) 経由でブラウザから動かしています。
最初は単純に、
- YM2612 のレジスタを書き込む
- 音色を設定する
- 音を鳴らす
程度の実験環境でしたが、
作り続けるうちに、
- JavaScript Live Coding
- FM Preset
- PSG
- Sample Playback
- Stream Playback
- Audio Effects
- Parallel FX
- Noise Generator
- liveLoop
- scale / chord
- random / cycle
- control
など、少しずつ機能が増えてきました。
例えば、
[以下より試せます]
https://kyorohiro.github.io/hello_ymfm_wasm/playground/index.html?ex=fx-loop-major
のようなコードを書いて、その場で音を鳴らすことができます。
また、YM2612 だけでは作りにくかった
波、風、雨などの環境音についても、
Noise Generator を追加して試せるようにしました。
[以下より試せます]
https://kyorohiro.github.io/hello_ymfm_wasm/playground/index.html?ex=noise-ocean
ノイズ、フィルター、音量、パンなどを組み合わせて音を作れます。
開発を始めた当初は、
YM2612 そのものを再現して理解することを強く意識していました。
しかし実際に色々な音を作ってみると、
「YM2612 を正確に扱うこと」
と
「ゲームや作品の中で使いやすい音を作ること」
は必ずしも同じではないと感じるようになりました。
現在は YM2612 を中心にしつつ、
FM
PSG
Noise
Sample
FX
などを組み合わせて、
ブラウザ上で音を作って試せる環境として育てています。
Sonic Pi や Gibber、Wavepot など、
コードから音を作る環境を参考にしながら、
普通の JavaScript の書き方をできるだけ残しているのも特徴です。
まだ実験中の部分も多いですが、
FM音源の学習や、ゲーム用サウンドの実験、
短い音楽や環境音の作成などに使えるようにしていきたいと思っています。
[Playground]
https://kyorohiro.github.io/hello_ymfm_wasm/playground/index.html
[Itch.io]
https://kyorohiro.itch.io/tetorica-fm2612-playground
[Code]
https://github.com/kyorohiro/hello_ymfm_wasm/

