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