【iOS】System Sound Wheel Picker

ひとつの View だけで

その端末の組み込みのシステム音を

確認できたらいいかも、

ということで。

GIF って音声出ませんでした ?



以下、音が出てます。



確認の範囲として、

SystemSoundID は 1 から 4000 まで。

実際に音を並列で鳴らして 0.0025 秒以下の音は無視してます。

非同期の処理はここでも難しい印象を受けます。

👉 【Swift】SystemSoundID 一覧がないのですが hatena-bookmark


iOS シュミレータは、聴きながら録画 + 録音できないのですか ?

Audio MIDI 複数出力装置と仮想デバイス BlackHole を使って、QuickTime で聴きながらの音声付き録画。

なぜできないのか。

聴きながらができないんです。

シュミレータにも、Audio Output の設定があるので、

そこで、個別に BlackHole に向けてもダメ。

複数音声出力 から BlackHole 向きを外してもダメ。

シュミレータを音声付き録画するなら聴きながらはできない。

そういうものなの?

できても良さそうなのに。

Loopback など有料アプリならできるのですか ?

👉 SoundFlowerからBlackHoleに移行してOBS接続おさらい hatena-bookmark


【Swift】SystemSoundID 一覧がないのですが

ちょっとしたときに、

あらかじめ用意されているシステム音を使いたい。


AudioServicesPlaySystemSound(1000)

👉 AudioServicesPlaySystemSound(_:) | Apple Developer Documentation hatena-bookmark

これだけで音が鳴る。

「1000」 は SystemSoundID というもののようなので、

「どんな音が鳴るのかリスト」を探すが、

公式で見つけられなかった。

以下にそれらしきもの。


👉 AudioServices - iPhone Development Wiki hatena-bookmark

結構、古そうなので今どきの状態を確認したい。

OSやバージョンなど環境によっても違うっぽい。

なので、コードからのぞいてみる。

 

🔊 欠番ID

ID は 2000 ぐらいまでの整数なのですが、

非公式のリストを見る限り、番号が歯抜け状態。

音声データの長さで「欠番らしき」を見分ける。

実際に再生してその時間を取得しました。


let start = Date()
AudioServicesPlaySystemSoundWithCompletion(1000) {
   let elapsed = Date().timeIntervalSince(start)
   print(elapsed)
}

// 1.566209077835083

👉 AudioServicesPlaySystemSoundWithCompletion(_:_:) | Apple Developer Documentation hatena-bookmark

おおまかに 再生時間 50ミリ秒 以下が欠番っぽい。

 

🔊 グリッドでボタン

ボタンを並べて Preview や Simulator や 実機 でどんな音があるのか確かめます 。



 

極力、deprecated な関数は避けていきたいです。

 

🔊 まとめ

実際に音声ファイルを作成する前に、雰囲気を確認したいときに使いたくなります。

しかし、ID が分からない。

そんな人用。

ファイルで探すなら、各環境内でディレクトリ名で走査するといいのですね !


Library/Audio/UISounds
❯ tree .
.
├── 3rd_party_critical.caf
├── AuthenticationMatch_Full.caf
├── AuthenticationMatch_Short.caf
...
├── ussd.caf
├── warsaw.caf
└── wheels_of_time.caf

4 directories, 321 files

あと、アプリとかショートカットもありました。

👉 「Play System Sounds」をApp Storeで hatena-bookmark
👉 System Sounds - Shortcuts hatena-bookmark