Swift:サウンド(効果音)を再生するサンプルコード

ボタンのタップ時や、画面遷移時にちょっとした効果音を再生したいときには AVFoundation の AudioPlayer を使用します。
今回はこの AudioPlayer の使い方をメモしておきます。

サウンドを再生する

AudioPlayer を使用し効果音を再生する手順は以下のようになります。

  1. サウンドデータを準備する
  2. AVFoundation のインポート
  3. サウンドデータの読み込み
  4. AudioPlayer インスタンスを生成
  5. AudioPlayer からサウンドデータを再生
  6. ここでは sample.mp3 という音源を準備し、このサウンドを ViewController の viewDidLoad 時に再生する方法を説明したいと思います。

    サウンドデータを準備する

    sample.mp3 ファイルをプロジェクトにドラッグアンドドロップし、コピーします。

    AVFoundation のインポート

    ViewController の先頭に以下を追加します。

    import AVFoundation

    サウンドデータの読み込み

    override func viewDidLoad() に以下を記述し sample.mp3 を読み込みます。

    let sound_data = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("sample", ofType: "mp3")!)

    AudioPlayer インスタンスを生成

    上記 sound_data の次の行に以下を追記します。

    var audioPlayer: AVAudioPlayer = AVAudioPlayer(contentsOfURL: sound_data, error: nil)

    AudioPlayer からサウンドデータを再生

    続いて play() メソッドでサウンド再生を行います。

    audioPlayer.play()

    上記の ViewController の全体のソースコードは以下の通りとなります。

    import UIKit
    import AVFoundation
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            
            let sound_data = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("sample", ofType: "mp3")!)
            var audioPlayer: AVAudioPlayer = AVAudioPlayer(contentsOfURL: sound_data, error: nil)
            audioPlayer.play()
        }
    }

    複数のサウンドファイルを切り替えて再生したい場合は ViewController 内で関数化すると便利です。

    import UIKit
    import AVFoundation
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            
            soundPlay("sample", type: "mp3")
        }
        
        func soundPlay(fileName: String, type: String) {
            let sound_data = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(fileName, ofType: type)!)
            var audioPlayer: AVAudioPlayer = AVAudioPlayer(contentsOfURL: sound_data, error: nil)
        }
    }

    まとめ

    今回紹介した方法は効果音以外の BGM も再生が可能ですが、プログラミングにより再生を動的にコントロールしたい場合は CoreAudio や AVFoundation の API を使用しなければいけません。もう少し高度なサウンドプログラミングに関しては、別の機会にでも記事にしたいと思います。

    この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

siro:chro 無料ゲーム SQN をリリースしました

img_sqn_00

sirochro 初の無料ゲームアプリ SQN をリリースしました。
記事:SQN: iOS 無料ゲームアプリ SQN - Sequential Numbers をリリース
ちょっとした時間に楽しめる完全無料のゲームなっていますので、是非ダウンロードして遊んでみてください。

↓SQN のダウンロードはこちらから

Related Contents

Pickup Contents