Tetorica FM2612 (hello_ymfm_wasm)

Tetoricaは、JavaScriptでメガドライブやゲームボーイなどのレトロゲームサウンドをライブコーディングするツールです。

プロジェクトの目標

このリポジトリーには4つの目標があります。

このリポジトリーでは、ブラウザーで使うYM2612のWebAssemblyモジュールとJavaScriptインターフェースも提供しています。

リポジトリー: https://github.com/kyorohiro/hello_ymfm_wasm

これらのデモは ymfm (Aaron Giles、BSD 3-Clause License)を使っています。

npmパッケージ

自分のプロジェクトでもTetoricaを使えます。tetorica-vgmでVGM音楽を解析し、tetorica-fm2612で音源チップの音声を生成できます。Node.jsでの利用にはNode.js 22以降が必要です。

VGM解析 · Node.js CLI / API

tetorica-vgm

VGM / VGZファイルの解析、楽譜・FM音色のエクスポート、WAV生成を行います。コマンドラインから使うほか、解析・エクスポートAPIをNode.jsアプリに組み込めます。

npm install tetorica-vgm
npx tetorica-vgm analyze song.vgz --json

音源チップ · ブラウザー / Node.js

tetorica-fm2612

ビルド済みWASMとともに、音源コア・Synth APIをESモジュールとして読み込めます。Node.jsでPCMを生成したり、同梱のWeb AudioランタイムでブラウザーアプリにFM・PSG・PCMの音声を組み込めます。

npm install tetorica-fm2612

YM2612や関連するYamaha音源、Sega PSG、RF5C164などを収録しています。createSoundChip、YM2612Synth、MegaSynthから試せます。

Tetoricaのツール(実験的)

YM2612 Playground play()、beat()、liveLoop()と低レベルのfm操作を使い、JavaScriptで音楽を作れます。 Nuked-OPN2で試す → PC-98 YM2608で試す → PC-98 YM2203で試す → Neo Geo YM2610で試す →
YM2612 Synth Demo ギター風に配置したPCキーボードとプリセット切り替えで、YM2612の音色を演奏・試聴できます。 Nuked-OPN2で試す →
FM2612 VGM Analyzer 解析したコマンドとYM2612の6チャンネルを確認し、スナップショットやTFI音色をエクスポートできます。 音源チップの対応状況 → Nuked-OPN2で試す →
Tetorica MIDI Playground JavaScriptでMIDIのメロディーやループをライブコーディング。macOSアプリからGarageBand、DAW、MIDI楽器へ接続できます。 macOS版をダウンロード → itch.ioで見る →

入門

Webアプリやゲームに音源チップを組み込む

小さな実行例を通じて、tetorica-fm2612 npmパッケージの使い方を学べます。チップの直接操作、AudioWorklet出力、FX付きMegaSynth、イベントの記録とループ、Playgroundの組み込み、VGM再生、TFI / VGI音色を試せます。

参考資料

ymfm, libymfm.wasm, MAME, retropc.net, YM2612のピン情報, VGMPF YM2612, SpritesMindの議論, chipmusic YM2612, DefleMask, GENajam, megatoy, Maple's Gardenの記事, Aidan LawrenceのSega Genesis音楽プレーヤー, Zophar's Domain Genesis Music, SMS Power