ボタンのタップ時や、画面遷移時にちょっとした効果音を再生したいときには AVFoundation の AudioPlayer を使用します。
今回はこの AudioPlayer の使い方をメモしておきます。
サウンドを再生する
AudioPlayer を使用し効果音を再生する手順は以下のようになります。
- サウンドデータを準備する
- AVFoundation のインポート
- サウンドデータの読み込み
- AudioPlayer インスタンスを生成
- AudioPlayer からサウンドデータを再生
ここでは sample.mp3 という音源を準備し、このサウンドを ViewController の viewDidLoad 時に再生する方法を説明したいと思います。
サウンドデータを準備する
sample.mp3 ファイルをプロジェクトにドラッグアンドドロップし、コピーします。
AVFoundation のインポート
ViewController の先頭に以下を追加します。
[code]import AVFoundation[/code]
サウンドデータの読み込み
override func viewDidLoad() に以下を記述し sample.mp3 を読み込みます。
[code]let sound_data = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(“sample”, ofType: “mp3”)!)[/code]
AudioPlayer インスタンスを生成
上記 sound_data の次の行に以下を追記します。
[code]var audioPlayer: AVAudioPlayer = AVAudioPlayer(contentsOfURL: sound_data, error: nil)[/code]
AudioPlayer からサウンドデータを再生
続いて play() メソッドでサウンド再生を行います。
[code]audioPlayer.play()[/code]
上記の ViewController の全体のソースコードは以下の通りとなります。
[code]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()
}
}[/code]
複数のサウンドファイルを切り替えて再生したい場合は ViewController 内で関数化すると便利です。
[code]
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)
}
}
[/code]
まとめ
今回紹介した方法は効果音以外の BGM も再生が可能ですが、プログラミングにより再生を動的にコントロールしたい場合は CoreAudio や AVFoundation の API を使用しなければいけません。もう少し高度なサウンドプログラミングに関しては、別の機会にでも記事にしたいと思います。
この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。