ym2151-log-editor

YM2151イベントログエディタ(TUIインターフェース)。Rust製。

Japanese English

概要

YM2151シンセサイザーのイベントログ用ターミナルベースのJSONエディタです。YM2151イベントデータの可視化と編集を支援し、特にタイミング調整とイベント検査に焦点を当てています。

機能

クイックスタート

インストール

Rust 1.70以降が必要です。

# リポジトリのクローン
git clone https://github.com/cat2151/ym2151-log-editor.git
cd ym2151-log-editor

# ビルド
cargo build --release

# JSONファイルを指定して実行
cargo run -- path/to/your/file.json

使用方法

# ファイルを指定してエディタを起動
./target/release/ym2151-log-editor your_log.json

キーボード操作

キー 動作
↑/↓ イベント間を移動
/ または ENTER 現在行の前に新しいイベントを挿入
DELETE 現在のイベントを削除
0-9 待機時間を設定(0-9ミリ秒、累積モードのみ)
P プレビュー再生(JSON全体を再生)
T 時刻表示モードの切り替え(累積 ↔ タイムスタンプ)
S ファイル保存
Q または ESC アプリケーション終了

JSON形式

エディタはJSON形式のYM2151イベントログを扱います:

{
  "events": [
    {
      "time": 0.0,
      "addr": "20",
      "data": "4F"
    },
    {
      "time": 0.01,
      "addr": "08",
      "data": "78"
    }
  ]
}

時刻表示モード

累積モード(デフォルト)

前のイベントからの待ち時間(デルタ)を表示します。タイミングを編集する際に便利で、イベント間の遅延を確認および調整できます。

例:

0.000000  20  4F    ← 最初のイベント(時刻0)
0.010000  40  16    ← 前から10ms後
0.010000  KeyON  78 ← 前から10ms後

タイムスタンプモード

開始からの絶対時間を表示します。これはファイル保存時に使用される内部形式です。

例:

0.000000  20  4F    ← 開始から0ms
0.010000  40  16    ← 開始から10ms
0.020000  KeyON  78 ← 開始から20ms

Tキーを押してこれらのモードを切り替えます。

KeyON表示

レジスタ0x08(KeyON/KeyOFFレジスタ)のイベントは、読みやすさを向上させるため「08」の代わりに「KeyON」として表示されます:

0.010000  KeyON  78  ← キーオン/オフイベントを簡単に識別
0.500000  KeyON  00

開発

プロジェクト構造

src/
├── main.rs       - エントリーポイントとイベントループ
├── app.rs        - アプリケーション状態とロジック
├── models.rs     - データ構造(Ym2151Event、Ym2151Log)
└── ui.rs         - UI描画

ビルド

cargo build          # 開発用ビルド
cargo build --release # 最適化ビルド

テスト

test_data/sample.jsonにサンプルテストデータが用意されています:

cargo run -- test_data/sample.json

ドキュメント

詳細な実装計画と今後のロードマップについてはIMPLEMENTATION_PLAN.mdを参照してください。

依存関係

関連プロジェクト

ライセンス

詳細はLICENSEファイルを参照してください。

今後の拡張機能

完全なロードマップについてはIMPLEMENTATION_PLAN.mdを参照してください。

projectが目指すもの

projectが目指さないもの(スコープ外)