[Swift]AVAudioEngineを使って曲の再生をする


Swiftで、AVAudioEngineを使って曲の再生をしてみましょう。

AVAudioEngineはiOS8で新しく追加された機能だそうで、オーディオ信号を加工(リバーブかけたりピッチや速度変えたり)できます。以前のものよりも比較的簡単にできるのがメリットみたいですよ。

今回は、とりあえず曲を再生するだけ。エフェクトかけたりなどは、以後おいおいやっていければと思います。

なお、AVAudioEngineについて詳しく知りたい方は、ググるといっぱい出てきますので、そちらで。

(続き:[Swift]AVAudioEngineを使ってReverbをかける

できること

AVAudioEngineを使って曲を再生します。

ソフトのバージョン

OS: OSX Yosemite 10.10.1
Xcode: 6.1

つくりかた

動画でご確認ください。

コード


import UIKit
import AVFoundation

class ViewController: UIViewController {

@IBOutlet weak var buttonPlay: UIButton!

var audioEngine: AVAudioEngine!
var audioFilePlayer: AVAudioPlayerNode!
var audioFile: AVAudioFile!

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

// AVAudioEngineの生成
audioEngine = AVAudioEngine()

// AVPlayerNodeの生成
audioFilePlayer = AVAudioPlayerNode()

// AVAudioFileの生成
audioFile = AVAudioFile(forReading: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("test", ofType: "mp3")!), error: nil)

// AVPlayerNodeをAVAudioEngineへ追加
audioEngine.attachNode(audioFilePlayer)

// AVPlayerNodeをAVAudioEngineへ
audioEngine.connect(audioFilePlayer, to: audioEngine.mainMixerNode, format: audioFile.processingFormat)

// AVAudioEngineの開始
audioEngine.startAndReturnError(nil)
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

@IBAction func buttonPlayPressed(sender: UIButton) {
if (audioFilePlayer.playing) {
audioFilePlayer.pause()
buttonPlay.setTitle("PLAY", forState: .Normal)
} else {
audioFilePlayer.scheduleFile(audioFile, atTime: nil, completionHandler: nil)
audioFilePlayer.play()
buttonPlay.setTitle("PAUSE", forState: .Normal)
}
}
}

(続き:[Swift]AVAudioEngineを使ってReverbをかける


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です