View on GitHub

cat-oscillator-sync

cat-oscillator-sync

Go Oto版 - Cat Oscillator Sync (Pure Go実装)

📍 このドキュメントは移動しました

最新のドキュメントはこちら:


🎵 Pure Go版 マウスで鳴らせるオシレータ・ハードシンク・シンセサイザー

⭐ 主な特徴

このOto版は、C言語コンパイラやMinGWが不要です!

📋 必要な環境

🚀 ビルド方法

Windows上でビルド

cd src\go

REM シンプル版をビルド
go build -o bin\sync_simple_oto.exe .\cmd\sync_simple_oto

REM スムーズ版をビルド
go build -o bin\sync_smooth_oto.exe .\cmd\sync_smooth_oto

Linux/macOS上でWindows版をクロスコンパイル

cd src/go

# シンプル版をビルド
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -o bin/sync_simple_oto.exe ./cmd/sync_simple_oto

# スムーズ版をビルド
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -o bin/sync_smooth_oto.exe ./cmd/sync_smooth_oto

🎮 実行方法

cd src\go\bin

REM シンプル版を実行
sync_simple_oto.exe

REM スムーズ版を実行
sync_smooth_oto.exe

使い方

  1. プログラムを実行するとオーディオストリームが開始されます
  2. マウスを画面上で動かして音を制御してください
    • X軸 (横方向): マスター周波数 (40Hz - 600Hz)
    • Y軸 (縦方向): スレーブ周波数 (100Hz - 2000Hz)
  3. Ctrl+C で終了

バージョンの違い

Simple版 (sync_simple_oto.exe)

Smooth版 (sync_smooth_oto.exe)

技術詳細

使用ライブラリ

PortAudio版との違い

Oto版 (このREADME)

PortAudio版 (cmd/sync_simple, cmd/sync_smooth)

なぜOto版を推奨するのか?

このプロジェクトのoscsyncはモノフォニックシンセであり、処理負荷が非常に小さいため、 Oto版でも十分に目的を達成できます

ユーザーにとって:

これらの利点は、わずかなレイテンシの差よりも重要です。

オーディオ設定

マウス位置取得

プロジェクト構成

src/go/
├── cmd/
│   ├── sync_simple_oto/       # Oto版シンプル
│   │   └── main.go
│   ├── sync_smooth_oto/       # Oto版スムーズ
│   │   └── main.go
│   ├── sync_simple/           # PortAudio版シンプル
│   │   └── main.go
│   └── sync_smooth/           # PortAudio版スムーズ
│       └── main.go
├── internal/
│   ├── mouse/                 # マウス位置取得
│   └── synth/                 # シンセサイザーロジック
└── bin/                       # ビルド出力
    ├── sync_simple_oto.exe
    └── sync_smooth_oto.exe

トラブルシューティング

ビルドエラーが出る

最新のGoバージョンを使用していることを確認してください:

go version

Go 1.24以上が必要です。古いバージョンの場合は公式サイトからダウンロードしてください。

音が出ない

  1. Windowsのサウンド設定を確認してください
  2. 他のオーディオアプリケーションを閉じてください
  3. プログラムを管理者権限で実行してみてください

音が途切れる(グリッチ)

バッファサイズを大きくすることで改善する可能性があります。 main.gobufferSizeMs定数を変更してください(デフォルト: 20ms)

const (
    bufferSizeMs = 40 // 20ms から 40ms に変更
)

関連ドキュメント

ライセンス

このプロジェクトは MIT License の下で公開されています。