私はユーザーの入力振幅を追跡する必要があるアプリケーションを構築しています。 AudioKitには、私のニーズに合った便利なオブジェクトがたくさんあります:AKAmplitudeTrackerなど。どのようにAudioKitを起動し、トラッキングを開始するのか、実行可能な情報が見つかりませんでした。AudioKitのライフサイクルを管理する正しい方法は何ですか?
今のところ、AudioKit初期化に関連するすべてのコードは、オーディオレコーダモジュールのmyVCのviewDidLoadメソッドにあります。ランダムなエラーが発生し、何が間違っているかを追跡することができないため、正しくありません。下のコードは、AudioKitの使用方法を示しています。
var silence: AKBooster!
var tracker: AKAmplitudeTracker!
var mic: AKMicrophone!
...
override func viewDidLoad() {
super.viewDidLoad()
switch AVAudioSession.sharedInstance().recordPermission() {
case AVAudioSessionRecordPermission.granted:
self.mic = AKMicrophone()
self.tracker = AKAmplitudeTracker(self.mic)
AKSettings.audioInputEnabled = true
AudioKit.output = self.tracker
AudioKit.start()
self.mic.start()
self.tracker.start()
break
case AVAudioSessionRecordPermission.undetermined:
AVAudioSession.sharedInstance().requestRecordPermission {
(granted) in
if granted {
self.mic = AKMicrophone()
self.tracker = AKAmplitudeTracker(self.mic)
AKSettings.audioInputEnabled = true
AudioKit.output = self.tracker
AudioKit.start()
self.mic.start()
self.tracker.start()
}
}
case AVAudioSessionRecordPermission.denied:
AVAudioSession.sharedInstance().requestRecordPermission {
(granted) in
if granted {
self.mic = AKMicrophone()
self.tracker = AKAmplitudeTracker(self.mic)
AKSettings.audioInputEnabled = true
AudioKit.output = self.tracker
AudioKit.start()
self.mic.start()
self.tracker.start()
}
}
default:
print("")
}
...
}
AudioKitを正しく管理する方法を理解してください。
を注意してください、私のコードの作品。しかし時にはトラッカーが起動できないこともあります。さまざまな値ではなく、0.0066 ..などの一定値を出力します。または、AudioKit.start()のコンソールで致命的なエラーが発生すると、 'hwFormat'や他のCoreAudioの部分に何か問題があります。だから私は間違った方法でAudioKitを扱うと思う。 –
奇妙なオーディオバグでは、それはOSバグかもしれません。デバイスを再起動してみてください。 – dave234
間隔が0.1秒未満のタイマーが必要な場合はどうすればよいですか?私はaddPeriodicTimeObserverのようなものを考えていました... AudioKitに似た何か? – Ibdakine