私はezaudioを使用して迅速にfft分析に取り組んでいます。
私の問題は、ezaudio からすべての fft データを取得する方法です。
はい、どのくらい強いときに存在する周波数であるかを調べるアルゴリズムを作成します。
例:
FFT データを見ると、現在の周波数は 2000Hz です。この周波数は、どれだけのエネルギーを持っているかを示しています。
ここに私のコード:
import UIKit
import Accelerate
class ViewController: UIViewController, EZMicrophoneDelegate, EZAudioFFTDelegate{
private let ViewControllerFFTWindowSize: vDSP_Length = 4096
var microphone: EZMicrophone!
var fft: EZAudioFFTRolling!
override func loadView() {
super.loadView()
//setup audio session
let session = AVAudioSession.sharedInstance()
do{
try session.setCategory(AVAudioSessionCategoryPlayAndRecord)
try session.setActive(true)
}catch{
print("Audio Session setup Fails")
}
microphone = EZMicrophone(delegate: self, startsImmediately: true)
fft = EZAudioFFTRolling(windowSize: ViewControllerFFTWindowSize, sampleRate: Float(microphone.audioStreamBasicDescription().mSampleRate), delegate: self)
microphone.startFetchingAudio()
}
func microphone(microphone: EZMicrophone!, hasAudioReceived buffer: UnsafeMutablePointer<UnsafeMutablePointer<Float>>, withBufferSize bufferSize: UInt32, withNumberOfChannels numberOfChannels: UInt32) {
fft.computeFFTWithBuffer(buffer[0], withBufferSize: bufferSize)
}
func fft(fft: EZAudioFFT!, updatedWithFFTData fftData: UnsafeMutablePointer<Float>, bufferSize: vDSP_Length) {
var maxF = fft.fftData
print(maxF)
var data = fft.fftData
print(data)
//here coming my algorithm
}
}
このコードを使用すると、コンソールに奇妙な出力が表示されます。
var data = fft.fftData
print(data)
出力: 0x00000001119be000
多くの多くの助けに感謝します