Skip to content

katsuyoshi/fmatelier

Repository files navigation

FMAtelier

FMAtelier screenshot

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 dev

Chrome で http://localhost:5173 を開いてください。

キーボードショートカット

ショートカット 動作
Ctrl/Cmd + Z 元に戻す
Ctrl/Cmd + Shift + Z やり直し
Ctrl/Cmd + S .syx ファイル保存
Ctrl/Cmd + C ボイスをコピー
Ctrl/Cmd + V ボイスを貼り付け

MIDI接続

必要なもの

  • ブラウザ: Chrome または Edge が必要です(Web MIDI API の SysEx サポートが必要)
  • ハードウェア: USB-MIDI インターフェースが必要です

ツールバーの MIDI ボタンをクリックしてMIDIパネルを開き、Input/Output ポートとMIDIチャンネルを選択してください。

DX7実機との接続手順

  1. USB-MIDI インターフェースで PC と DX7 の MIDI IN/OUT を接続します
  2. DX7側の設定を行います(すべて FUNCTION ボタン → ボタン 8):
    • MIDI CH: 使用するチャンネルに設定(1-16)
    • SYS INFO: AVAIL に設定(ボイス切替時に自動でデータ送信)
    • MIDI TRANSMIT?: YES を選択すると32ボイス全体がバルクダンプで送信されます。最初に FMAtelier で受信しておくと、同じバンクデータで作業を開始できます
  3. FMAtelier の MIDI パネルで USB-MIDI インターフェースを選択し、チャンネルを DX7 に合わせます
  4. Input と Output の両方を選択するとインジケータが緑色に点灯します
  5. DX7 から32ボイスを受信するには、DX7 側で FUNCTION → ボタン 8 → MIDI TRANSMIT? で YES を選択します。FMAtelier が自動的にバンクデータを受信して表示します

MIDI機能

Send Voice

現在選択中のボイスを DX7 のエディットバッファに送信します。送信後すぐに DX7 で音色が切り替わります。

Send Bank

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

About

Browser-based voice editor for YAMAHA DX7 with Web MIDI support

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages