View on GitHub

ym2151-tone-editor

ym2151-tone-editor

ym2151-tone-editor

Japanese English

YM2151(OPM)FM音源音色エディタ。Windows用。TUI。Rustで書かれています。

状況

開発中です。現在の進捗率は80%。残り20%はkeybinds追加と音色管理。

特徴・機能

クイックスタートガイド

今後書く予定です WindowsにRustがインストールされていれば、GitHubから楽にインストールできます

コツ

YM2151音色データ形式

Parameters

Parameter Name Range Description
DT Detune 0-7 Fine frequency detuning (3 bits)
MUL Multiplier 0-15 Frequency multiplier (4 bits)
TL Total Level 0-99 Operator output level (7 bits, limited to 99)
KS Key Scale 0-3 Key scaling (2 bits)
AR Attack Rate 0-31 Envelope attack rate (5 bits)
D1R Decay 1 Rate 0-31 First decay rate (5 bits)
D1L Decay 1 Level 0-15 Sustain level (4 bits)
D2R Decay 2 Rate 0-15 Second decay/sustain rate (4 bits)
RR Release Rate 0-15 Envelope release rate (4 bits)
DT2 Detune 2 0-3 Coarse frequency detuning (2 bits)
AMS AM Sensitivity 0-3 Amplitude modulation sensitivity (2 bits)

動作要件

ビルド

cargo build --release

実行

cargo run

または、コンパイルされたバイナリを直接実行:

./target/release/ym2151-tone-editor

リアルタイム音声フィードバック(Windows限定)

エディタは、ym2151-log-play-serverライブラリのensure_server_ready()関数を使用して、サーバーの準備を自動的に確保します。これにより、サーバーのインストール、起動、準備状況チェックが自動的に処理されます。

# 音色エディタを実行するだけ - サーバーは自動的にセットアップ・起動されます
cargo run

動作モード

エディタは2つのモードで動作します:

インタラクティブモード(デフォルト)

インタラクティブモードでは、サーバーが継続的にオーディオをストリーミングし、パラメータ変更時にレジスタ書き込みコマンドのみを送信します。これにより、より効率的でスムーズな音声フィードバックが提供されます。

レガシーモード

デフォルトでは、エディタはsend_jsonを使用して名前付きパイプ経由で完全な音色データをJSON形式で送信します。パラメータが変更されるたびに、新しいJSON全体が送信されます。

比較

特徴 レガシーモード インタラクティブモード
データ送信 完全なJSON レジスタ書き込みのみ
効率性 低い(毎回全データ送信) 高い(変更箇所のみ送信)
音声連続性 パラメータ変更時に再起動 継続的なストリーミング
用途 比較検証用 通常の編集作業

操作方法

※今後、破壊的変更されます。検証のためです

キー 動作
カーソル移動  
矢印キー(←↓↑→) それぞれの方向にカーソルを移動
値の変更  
PageUp / e カーソル位置の値を増加
PageDown / q カーソル位置の値を減少
+ / . 値を1増やす
- / , 値を1減らす
Shift + . (>) 値を10増やす
Shift + , (<) 値を10減らす
Home 現在のパラメータの最大値に設定
End 最小値(0)に設定
r / R ランダム値に設定(有効範囲内)
マウス  
マウスホイール上 マウスポインタ位置にカーソルを移動して値を増加
マウスホイール下 マウスポインタ位置にカーソルを移動して値を減少
その他  
ESC 保存してアプリケーション終了

コマンドラインオプション

オプション 説明
--value-by-mouse-move レガシーマウス動作を有効化(マウスの左右移動でカーソル位置の値を変更)

依存関係

コンセプト

スコープ外、目指さないこと

音色保存用のフォーマットを検討する

keybindsを検討する