LoginSignup
3
3

More than 1 year has passed since last update.

はじめに

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

AVFoundationとの違い

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

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

AudioToolbox

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

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

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

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

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

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

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について書きました。音を扱えると開発の幅も広がりそうですね!

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3