View on GitHub

cat-oscillator-sync

cat-oscillator-sync

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

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

⭐ 主な特徴

Pure Go実装 - C言語コンパイラ不要!

📋 必要な環境

🚀 ビルド方法

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版との比較

このプロジェクトには2つのGo実装があります:

go版(このディレクトリ)- Oto使用

go-portaudio版 (../go-portaudio/)

一般ユーザーにはこのgo版(Oto)を推奨します。

プロジェクト構成

src/go/
├── go.mod                           # Go モジュール定義
├── go.sum                           # 依存関係のチェックサム
├── .gitignore                       # Git除外設定
├── README.md                        # このファイル
├── cmd/
│   ├── sync_simple_oto/            # Oto版シンプル
│   │   └── main.go
│   └── sync_smooth_oto/            # Oto版スムーズ
│       └── main.go
├── internal/
│   ├── mouse/                      # マウス位置取得
│   │   ├── position.go             # 共通インターフェース
│   │   ├── position_stub.go        # スタブ実装
│   │   └── position_windows.go     # Windows実装
│   └── synth/                      # シンセサイザーロジック
│       ├── simple.go               # Simple版
│       └── smooth.go               # Smooth版
└── bin/                            # ビルド出力 (gitignore)
    ├── sync_simple_oto.exe
    └── sync_smooth_oto.exe

トラブルシューティング

ビルドエラーが出る

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

go version

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

音が出ない

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

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

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

const (
    bufferSizeMs = 32 // 16ms から 32ms に変更
)

注意: バッファサイズを大きくすると、レイテンシ(遅延)も増加します。 音が途切れないギリギリの値を見つけることが理想的です。

ライセンス

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