View on GitHub

cat-oscillator-sync

cat-oscillator-sync

Rust版 実装計画書

概要

Python版のcat-oscillator-syncをRustで実装する計画書です。 Windows環境でのローカル実行を前提とし、PortAudio系のライブラリを使用します。

目標

ライブラリ選定

1. オーディオ出力ライブラリ

選択肢: cpal (Cross-Platform Audio Library)

代替案: portaudio-rs

2. マウス位置取得ライブラリ

選択: rdev

代替案: winapi / windows-rs

3. 数値計算

選択: 標準ライブラリ + シンプルな配列操作

プロジェクト構成

src/rust/
├── Cargo.toml              # プロジェクト設定・依存関係
├── IMPLEMENTATION_PLAN.md  # 本ドキュメント
├── README.md              # 実装後のREADME
└── src/
    ├── main.rs            # エントリポイント
    ├── synth_simple.rs    # シンプル版実装
    └── synth_smooth.rs    # スムーズ版実装

依存関係 (Cargo.toml)

[package]
name = "cat-oscillator-sync"
version = "0.1.0"
edition = "2021"

[dependencies]
cpal = "0.15"           # オーディオ出力
rdev = "0.5"            # マウス位置取得

実装計画

Phase 1: 基本構造の実装

  1. Cargoプロジェクトの初期化
  2. cpalとrdevの統合テスト
  3. オーディオストリームの基本動作確認

Phase 2: シンプル版の実装 (sync_simple.rs)

  1. マウス位置取得の実装
  2. 周波数マッピングの実装
  3. ハードシンク・オシレータの実装
    • マスターオシレータ(位相管理)
    • スレーブオシレータ(位相リセット)
  4. オーディオコールバックの実装
  5. 動作確認とデバッグ

Phase 3: スムーズ版の実装 (sync_smooth.rs)

  1. 指数平滑化アルゴリズムの実装
  2. サンプルごとの周波数補間
  3. 時定数パラメータの調整機能
  4. 動作確認とデバッグ

Phase 4: ドキュメント整備

  1. README.mdの更新
  2. コードコメントの追加
  3. ビルド・実行手順の文書化

インストール手順(想定)

前提条件

ビルドと実行

# リポジトリのクローン
git clone https://github.com/cat2151/cat-oscillator-sync.git
cd cat-oscillator-sync/src/rust

# ビルド
cargo build --release

# 実行 - シンプル版
cargo run --release --bin sync_simple

# 実行 - スムーズ版
cargo run --release --bin sync_smooth

開発環境構築の複雑度評価

⭐ 非常に簡単 (優先度: 高)

理由:

  1. Rustのインストールのみ: rustupによる一発インストール
  2. 外部DLL不要: cpalはWindowsの標準API (WASAPI) を直接使用
  3. cargoによる自動管理: 依存関係はcargo buildで自動取得
  4. 手作業でのDLL配置不要: すべてがRustのエコシステム内で完結

必要な手順:

  1. Rustのインストール(rustup実行のみ)
  2. cargo build の実行

Python版との比較:

技術的課題と対策

1. リアルタイムオーディオ処理

課題: Rustでの低レイテンシ実装 対策:

2. マウス位置のポーリング

課題: バックグラウンドでのマウス位置取得 対策:

3. エラーハンドリング

課題: Rustの厳格な型システムでのエラー処理 対策:

パフォーマンス期待値

メリット

Python版との比較

リスクと軽減策

リスク1: cpalのバグや制限

軽減策:

リスク2: Rust学習コスト

軽減策:

成功基準

  1. ✅ Windows環境で動作すること
  2. ✅ Python版と同等の音質・レスポンスを実現
  3. ✅ インストール手順が3ステップ以内
  4. ✅ 外部DLLの手動インストールが不要
  5. ✅ ビルド時間が5分以内

参考資料

公式ドキュメント

参考プロジェクト

タイムライン(想定)

まとめ

Rust版の実装は技術的に実現可能であり、開発環境構築も非常にシンプルです。 cpalライブラリを使用することで、PortAudioと同等の低レイテンシを実現しつつ、 外部DLLの手動インストールを完全に回避できます。

優先度評価: ⭐⭐⭐⭐⭐ (最高)

Python版と比較しても遜色なく、むしろビルド後のパフォーマンスとメモリ効率の面で優位性があります。