【swift】ライブラリEZAudioを使って音声ファイルの波形を表示してみる

こんにちは。しばらくライブラリを勉強していたのですが、一番やりたかったのがこれです。音声ファイルの波形を表示してみるということ。早速やっていきます。

 

CocoaPodのバージョンを確認

$ pod --version
1.2.1

新規プロジェクト「DemoEZAudio」という名前で適当に作成したらターミナルから、

pod init

して、Podfileを以下のように編集します。

Podfileを編集します

# Uncomment the next line to define a global platform for your project
# platform :ios, '8.0'

target 'DemoEzAudio' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for DemoEzAudio
  pod 'EZAudio', '~> 1.0'

end

そしてターミナルから

pod install

します。

ブリッジングヘッダーを追加

ブリッジングヘッダーを追加します。

ブリッジングヘッダーは、SwiftからObjective-Cのライブラリを利用可能にする橋渡しをしてくれるヘッダーファイルです。
メニューバーから[File]→[New]→[File…]を選択して、「Objective-C File]を選択し、[Next]ボタンを押下します。

https://github.com/syedhali/EZAudio/issues/267

何度か試してみましたが、どうもPodfileに
pod ‘EZAudio’, ‘~> 1.0’
と書かないと駄目なようです。
pod ‘EZAudio’だけでは駄目です。

Podfileは以下のように修正します。

platform :ios, '8.0'

target 'DemoEZAudio' do
pod 'EZAudio', '~> 1.0'
end

ブリッジングヘッダーはこんな感じが正解のようです。

//
//  Use this file to import your target's public headers that you would like to expose to Swift.
//

#ifndef EZAudio_Swift_EZAudio_Swift_Bridging_Header_h
#define EZAudio_Swift_EZAudio_Swift_Bridging_Header_h

#import <EZAudio.h>

#endif
//
//  ViewController.swift
//  DemoEZAudio
//

// see:http://qiita.com/Ma-tsu-ne/items/ef5f5360c97219d99d6f
// see:http://cocoadocs.org/docsets/EZAudio/1.0.0/index.html

import UIKit

class ViewController: UIViewController ,EZAudioFileDelegate{

    var audioFile:EZAudioFile!
    var audioPlot:EZAudioPlot!
    var audioPlayer:EZAudioPlayer!
    var audioCoreGrph:EZAudioPlotGL!
    
    override func viewDidLoad() {
        super.viewDidLoad()

        //波形
        self.audioPlot = EZAudioPlot(frame: self.view.frame)
        self.audioPlot.backgroundColor = UIColor.cyan
        self.audioPlot.color = UIColor.purple
        self.audioPlot.plotType = EZPlotType.buffer
        self.audioPlot.shouldFill = true
        self.audioPlot.shouldMirror = true
        self.audioPlot.shouldOptimizeForRealtimePlot = true

        //ファイルのパスを指定して読み込み
        self.openFileWithFilePathURL(filePathURL: NSURL(fileURLWithPath: Bundle.main.path(forResource: "Jump", ofType: "mp3")!))
        self.view.addSubview(self.audioPlot)
        
        //再生
        self.audioPlayer.pan = 0
        self.audioPlayer.volume = 50.0
        self.audioPlayer.play()
        
    
    }
    
    //ファイルの読み込みと波形の読み込み
    func openFileWithFilePathURL(filePathURL:NSURL){
        self.audioFile = EZAudioFile(url: filePathURL as URL!)
        self.audioFile.delegate = self
        
        let buffer = self.audioFile.getWaveformData().buffer(forChannel: 0)
        let bufferSize = self.audioFile.getWaveformData().bufferSize
        self.audioPlot.updateBuffer(buffer, withBufferSize: bufferSize)

        //読み込んだオーディオファイルをプレイヤーに設定して初期化
        self.audioPlayer = EZAudioPlayer(audioFile: self.audioFile)

    }

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


}

今回はVan Halenの名曲『Jump』の波形を表示してみます。とりあえず、ファイルをドラッグ&ドロップでプロジェクトに突っ込みます。

できましたー!

コメントする

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