我有一个具有两个功能的应用程序。一个扮演一个AKMetronome
并允许当应用程序不在前台时进行后台播放。另一个是调谐器功能,它使用AKMicrophone
,仅当应用程序位于前台时才需要处于活动状态。这些功能可以同时使用(调谐器处于活动状态时节拍器指示灯闪烁)。
当我按下主页按钮时,节拍器会继续播放(如预期)。但调谐器的有源麦克风也会导致鲜红色的“录音”式酒吧 https://i.stack.imgur.com/BhRBU.jpg在所有其他应用程序中位于设备顶部。不过,当应用程序未打开时,我不需要调谐器来运行。
我如何禁用AKMicrophone
节点,以便该栏不会显示,同时还保留AKMetronome
节点播放不间断?
我尝试了以下方法,但都没有成功:
- Calling
AudioKit.stop()
在应用程序委托中applicationWillResignActive()
方法。这会消除录音栏,但会停止节拍器。
- Calling
stop()
on the AKMicrophone
期间的节点applicationWillResignActive()
。这不会删除录音栏。
- Calling
stop()
and disconnectOutput()
on the AKMicrophone
期间的节点applicationWillResignActive()
。这也不会删除录音栏。
我怀疑我可能需要关闭整个引擎(即AudioKit.stop()
),从链中删除麦克风节点,并重建并重新启动引擎,所有这些都在applicationWillResignActive
方法。但这样会打乱节奏AKMetronome
,所以我希望事情不会发展到这样的地步。
我认为你应该使用 AudioKit 作为节拍器,并使用 AudioKit 中名为 AKMicrophoneTracker 的部分作为调音器。
http://audiokit.io/docs/Classes/AKMicrophoneTracker.html http://audiokit.io/docs/Classes/AKMicrophoneTracker.html
https://github.com/AudioKit/AudioKit/blob/master/AudioKit/Common/Internals/Microphone%20Tracker/AKMicrophoneTracker.swift https://github.com/AudioKit/AudioKit/blob/master/AudioKit/Common/Internals/Microphone%20Tracker/AKMicrophoneTracker.swift
AudioKit 使用 AVAudioEngine 作为其信号流,而跟踪器实际上是基于 EZAudio 的完全独立的信号流。我相信两者可以独立使用。
您当前跟踪麦克风的方式可能类似于以下内容:http://audiokit.io/playgrounds/Analysis/Tracking%20Microphone%20Input/ http://audiokit.io/playgrounds/Analysis/Tracking%20Microphone%20Input/
你会想让它更像这样:
let tracker = AKMicrophoneTracker()
tracker.start()
//: User Interface
import AudioKitUI
class LiveView: AKLiveViewController {
var trackedAmplitudeSlider: AKSlider?
var trackedFrequencySlider: AKSlider?
override func viewDidLoad() {
AKPlaygroundLoop(every: 0.1) {
self.trackedAmplitudeSlider?.value = tracker.amplitude
self.trackedFrequencySlider?.value = tracker.frequency
}
addTitle("Tracking With Microphone Tracker")
trackedAmplitudeSlider = AKSlider(property: "Tracked Amplitude", range: 0 ... 0.8) { _ in
// Do nothing, just for display
}
addView(trackedAmplitudeSlider)
trackedFrequencySlider = AKSlider(property: "Tracked Frequency",
range: 0 ... 2_400,
format: "%0.3f Hz"
) { _ in
// Do nothing, just for display
}
addView(trackedFrequencySlider)
}
}
HTH.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)