YAMAHA DX7 シンセサイザーの音色をブラウザ上で編集する Web アプリケーションです。 .syx ファイルの読み書きに加え、Web MIDI API を使って DX7 実機と直接通信できます。
Lit + Vite + TypeScript で構築しています。追加の実行時依存はありません。
- .syx バンクファイル(32ボイス)を読み込み・保存できます
- 全ボイスパラメータを編集できます(6オペレータ、ピッチEG、LFO、アルゴリズム、フィードバック)
- 全32アルゴリズムを図解表示します
- エンベロープ・キーボードレベルスケーリングを可視化します
- ボイス・オペレータのコピー/ペーストができます
- Undo/Redo に対応しています(最大100ステップ)
- .syx ファイルのドラッグ&ドロップ読み込みに対応しています
- Web MIDI でDX7実機と送受信できます
- リアルタイムでパラメータを編集できます
- DX7とのボイス選択同期に対応しています
npm install
npm run devChrome で http://localhost:5173 を開いてください。
| ショートカット | 動作 |
|---|---|
| Ctrl/Cmd + Z | 元に戻す |
| Ctrl/Cmd + Shift + Z | やり直し |
| Ctrl/Cmd + S | .syx ファイル保存 |
| Ctrl/Cmd + C | ボイスをコピー |
| Ctrl/Cmd + V | ボイスを貼り付け |
- ブラウザ: Chrome または Edge が必要です(Web MIDI API の SysEx サポートが必要)
- ハードウェア: USB-MIDI インターフェースが必要です
ツールバーの MIDI ボタンをクリックしてMIDIパネルを開き、Input/Output ポートとMIDIチャンネルを選択してください。
- USB-MIDI インターフェースで PC と DX7 の MIDI IN/OUT を接続します
- DX7側の設定を行います(すべて FUNCTION ボタン → ボタン 8):
- MIDI CH: 使用するチャンネルに設定(1-16)
- SYS INFO: AVAIL に設定(ボイス切替時に自動でデータ送信)
- MIDI TRANSMIT?: YES を選択すると32ボイス全体がバルクダンプで送信されます。最初に FMAtelier で受信しておくと、同じバンクデータで作業を開始できます
- FMAtelier の MIDI パネルで USB-MIDI インターフェースを選択し、チャンネルを DX7 に合わせます
- Input と Output の両方を選択するとインジケータが緑色に点灯します
- DX7 から32ボイスを受信するには、DX7 側で FUNCTION → ボタン 8 → MIDI TRANSMIT? で YES を選択します。FMAtelier が自動的にバンクデータを受信して表示します
現在選択中のボイスを DX7 のエディットバッファに送信します。送信後すぐに DX7 で音色が切り替わります。
32ボイス全体をバルクダンプで送信します(4104バイト)。DX7 実機への送信に関する制限事項は後述の「既知の制限事項」を参照してください。
MIDI 接続中は、FMAtelier でスライダーやパラメータを変更すると、自動的に Parameter Change SysEx メッセージとして DX7 に送信されます。操作が即座に DX7 のエディットバッファに反映されます。
DX7 でボイスを切り替えると(SYS INFO = AVAIL 設定時)、FMAtelier のバンク選択がボイス名の一致により自動的に追従します。
- Rcv Voice: DX7 のエディットバッファからボイスデータを要求します
- Rcv Bank: 32ボイス全体のバンクダンプを要求します
注意: 初代 DX7(1983年)はダンプリクエストに応答しません。DX7II や TX7 などの後継機で対応していますが、実機での動作は未確認です。
DX7 の SYS INFO = AVAIL 設定時は、DX7 側でボイスを切り替えると自動的にボイスデータが送信されます。
32ボイスのバルクダンプ(4104バイト)を DX7 実機に送信すると、6番目以降のボイスでデータが化けることがあります。これは DX7 の UART 受信バッファがオーバーフローするためです(1983年のハードウェア制約)。
Web MIDI API にはバイトレベルのフロー制御がないため、ブラウザからの送信速度を調整できません。
対処法:
- Send Voice で1ボイスずつエディットバッファに送信し、DX7 本体で保存します
- バイト間ディレイを挿入できる専用ツールで .syx ファイルを転送します
FMAtelier が生成する .syx ファイルは DX7 ROM カートリッジのダンプとバイト単位で完全一致することを確認済みです。問題は DX7 のハードウェア制約によるものです。
| ブラウザ | SysEx 対応 |
|---|---|
| Chrome | 対応(macOS で動作確認済み) |
| Edge | 対応(Chromium ベース、未確認) |
| Firefox | サイト許可アドオンのインストールが必要(未確認) |
| Safari | 非対応 |
Lit 3 / Vite / TypeScript (strict) / Vitest
