2016-06-29 5 views
2

私はこのコードをiPhoneのマイクから入力したいと思っています。私は44100 Hzのサンプリングレートを仮定して、1秒間に10回入力します。タップは「4410サンプルごとに」発生する必要があります。しかし、私はそれをどうしても、タッピングは毎回〜400ミリ秒ごとに発生し、毎回16384サンプルを与えます。入力バスのタップ周波数を変更するにはどうすればよいですか?

タップ周波数を制御する正しい方法は何ですか?

self.audioSession = AVAudioSession.sharedInstance() 
    do { 
     try audioSession.setPreferredSampleRate(44100.0) 
     try audioSession.setPreferredIOBufferDuration(4410.0/44100.0) 
     try audioSession.setCategory(AVAudioSessionCategoryRecord) 
     try audioSession.setActive(true) 
     audioSession.requestRecordPermission() { 
     [unowned self] (allowed: Bool) -> Void in 
     if allowed { 
      self.audioEngine = AVAudioEngine() 
      self.audioInputNode = self.audioEngine.inputNode! 
      let format: AVAudioFormat = self.audioInputNode.outputFormatForBus(0) 
      self.audioInputNode.installTapOnBus(0, bufferSize: UInt32(4410), format: format, block: { 
      (buffer: AVAudioPCMBuffer!, time: AVAudioTime!) in 
      // buffer length is 16384 
      }) 
      do { 
      try self.audioEngine.start() 
      } catch {} 
     } else {...} 
     } 
    } catch {...} 
+0

この回答を見ると、iOSのバッファサイズに関する興味深い点があります。http://stackoverflow.com/a/35423008/2227743しかし、それがあなたの特定のケースに当てはまるかどうかはわかりません。 – Moritz

答えて

0

私はこの問題から休憩を取って、上記のコードは、ちょうど今動作し、私はその理由は分からないXCodeの8.1 で、今日それに戻りました。 AVAudioSessionの以前のバージョンのバグ?

関連する問題