音色仕様

イベント波形周波数
赤パネルsin329.63 Hz (E4)
緑パネルsin415.30 Hz (G#4)
青パネルsin523.25 Hz (C5)
黄パネルsin659.25 Hz (E5)
ゲームオーバーsawtooth120.0 Hz

SoundManager API

final class SoundManager {
    static let shared: SoundManager
    private var activePlayers: [AVAudioPlayer] = []  // ★強参照保持

    func playPanelSound(colorIndex: Int)
    func playGameOverSound()
}

初期化(事前生成)

  1. init で全サウンドデータを WAV データとして動的生成
  2. sin / sawtooth 波形を 25ms / 50cs 長で生成
  3. AVAudioPlayer をプリロードして再生時の遅延を排除

EXC_BAD_ACCESS 対策

activePlayers 配列で再生中プレイヤーを強参照保持。再生終了で配列から除去。

AudioSession

lazy 初期化(ensureSessionReady)で接続状態を確認してから再生。

変更履歴

バージョン日付変更内容
1.02026-05-09初版作成