2016-07-26 9 views
3

シンプルなチューナーやシンプルなアプリケーションを構築してサウンドを録音してから、そのサウンドの周波数を返すようにしています。これは、ギターのチューナーのように音がどのような音であるかを調べるために使用できますが、私は主に音を録音して、その音の周波数を返すようにしています。誰かがこれについて正しい方向で私を指摘できますか?私はFFTやその他のことについていくつかのことを読んだことがありますが、私はちょっとしたノブです。私はgoogleを見てきましたが、これについて多くを見つけることができませんでしたが、誰かが作ったアプリについて話していて、何を作るべきかわからないコードがありました。シンプルなチューナーを構築しようとしています

さて、今私は助けるかもしれない何かを探していた:http://audiokit.io/。これは単純な解決策かもしれませんが、これがほとんどの人がやることであるかどうか再度は分かりません。

私はaudiokitをインポートすることができました。問題は、サウンドが作成されたときに周波数を表示するようにコードを働かせるようには思えないということです。ここにコードがあります

import UIKit 
import AudioKit 

class ViewController: UIViewController { 

    @IBOutlet weak var frequencyLabel: UILabel! 

    let mic = AKMicrophone() 


    override func viewDidAppear(animated: Bool) { 



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

     let tracker = AKFrequencyTracker.init(mic, minimumFrequency: 200, maximumFrequency: 2000) 
     var silence = AKBooster(tracker, gain: 0) 
     AudioKit.output = silence 
     AudioKit.start() 


     if tracker.amplitude > 0.1 { 
      frequencyLabel.text = String(format: "%0.1f", tracker.frequency) 
     } 


    } 




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


} 
+0

ショートバージョン:サンプルのfftの実数部を取り、最大振幅ビンを見つけます。これは支配的な周波数に対応します。コメントのために – Feldur

+0

感謝します。 audiokit.ioを使用したソリューションで私を助けてくれますか?それはかなりシンプルなようですが、私のコードは何らかの理由で動作していません。 – bearsworth

+0

誰かに修正を促すためには、動作していないコードを投稿してください。 – FredericP

答えて

1

私はそれを理解しました...私はキットの一部として多くのものを逃していました。その理由は、audio.ioのウェブサイトから私はそれらの指示に従っていますが、実際のオーディオキットをダウンロードすると、この例に含まれる他にもたくさんのことがあります。ここで私のコードは、単純な周波数を作ることです。できます!!!!

import UIKit 
import AudioKit 

class ViewController: UIViewController { 

    @IBOutlet weak var frequencyLabel: UILabel! 

    var mic: AKMicrophone! 
    var tracker: AKFrequencyTracker! 
    var silence: AKBooster! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     AKSettings.audioInputEnabled = true 
     mic = AKMicrophone() 
     tracker = AKFrequencyTracker.init(mic, minimumFrequency: 200, maximumFrequency: 2000) 
     silence = AKBooster(tracker, gain: 0) 


    } 

    override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 

     AudioKit.output = silence 
     AudioKit.start() 
     NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: #selector(ViewController.updateUI), userInfo: nil, repeats: true) 
    } 

    func updateUI() { 
     if tracker.amplitude > 0.1 { 
      frequencyLabel.text = String(format: "%0.1f", tracker.frequency) 
     } 
    } 


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


} 
関連する問題