最終更新日:2018‐02-17
こんにちは。しばらくライブラリを勉強していたのですが、一番やりたかったのがこれです。音声ファイルの波形を表示してみるということ。早速やっていきます。
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』の波形を表示してみます。とりあえず、ファイルをドラッグ&ドロップでプロジェクトに突っ込みます。


できましたー!
技術の進化についていけていないシステムエンジニア。浅く広く、何でも大体はこなせるエンジニアで重宝されてる(つもり)。でもやっぱり特化した武器欲しい。
 備忘録として記事を投稿していますが、少しでも誰かの助けになればと思います。
 最近はプロジェクトでReact(TypeScript )を触っています。
趣味でギター弾きます。
