【Swift】AudioToolboxについて


はじめに

今回は、録音、再生、音声を扱うときに使われるフレームワークであるAudioToolboxについて書きたいと思います。

AVFoundationとの違い

サウンドを再生するときのフレームワークとしてAVFoundationがあります。この二つの違いを簡単に明記します。

AVFoundation: BGMなどの動画を再生する(AVAudioPlayer)
AudioToolbox: 効果音などの音源を再生する

AudioToolbox

まずはドキュメントを読みましょう。
AudioToolbox

ドキュメントにはRecord or play audio, convert formats, parse audio streams, and configure your audio session.と書かれています。
訳すとオーディオの録音または再生、フォーマットの変換、オーディオストリームの解析、およびオーディオセッションの構成です。

つまり、サウンド再生やバイブレーションをユーザーに通知するためのフレームワークということですね。

せっかくなので、簡単に音を鳴らして遊んでみましょう。

今回使うもの以外にもこちらから様々な音源を選べます!

このように、適当な数だけボタンを用意してください。(ボタンの番号はSystemSoundIDにしました)

ViewControllerに以下のように記述します。

    @IBAction func button1DidTapped(_ sender: Any) {
        sound(id: 1000)
    }

    @IBAction func button2DidTapped(_ sender: Any) {
        sound(id: 1010)
    }

    @IBAction func button3DidTapped(_ sender: Any) {
        sound(id: 1050)
    }

    @IBAction func button4DidTapped(_ sender: Any) {
        sound(id: 1201)
    }

    @IBAction func button5DidTapped(_ sender: Any) {
        sound(id: 1310)
    }

    @IBAction func button6DidTapped(_ sender: Any) {
        sound(id: 1336)
    }

    @IBAction func button7DidTapped(_ sender: Any) {
        sound(id: 4095)
    }

    private func sound(id: SystemSoundID) {
        var id = id
        if let soundUrl = CFBundleCopyResourceURL(CFBundleGetMainBundle(), nil, nil, nil) {
            AudioServicesCreateSystemSoundID(soundUrl, &id)
            AudioServicesPlaySystemSound(id)
        }
    }

色々な音源を鳴らしてみてください!

おわりに

今回はAudioToolboxについて書きました。音を扱えると開発の幅も広がりそうですね!