如何更改输入总线上的抽头频率?

How do I change the tap frequency on the input bus?

我有这段代码,我想从 iPhone 的麦克风输入。给定 44100 Hz 的采样率,我希望每秒输入十次。点击必须发生 "every 4410 samples"。但无论我怎么做,敲击每 ~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 {...}

我从这个问题中解脱出来,今天又回到了 XCode 8.1 上面的代码现在可以正常工作,我不知道为什么。早期版本的 AVAudioSession 有错误吗?