我用下面的代码设置了一个“AudioKit”
AudioEngine
。
它可以用
MIDISampler
来演奏音符。然而,PitchTap
似乎没有获得任何样本数据。它总是打印 Frequency 100.0 – Amplitude 2.4266092e-05
。
final class AudioGraph {
let engine = AudioEngine()
let sampler = MIDISampler(name: "sampler")
let pitchTracker: PitchTap
init(file: SamplerFile? = nil) throws {
let mic = engine.input!
engine.output = Mixer(
sampler,
Fader(mic, gain: 0.000)
)
/// Hooking ``PitchTap`` to ``sampler`` works. Yay. Why not the ``mic`` input?
pitchTracker = PitchTap(mic) { f, a in
guard let f = f.first, let a = a.first else { return }
print("Frequency \(f) – Amplitude \(a)")
}
if let file {
try setFile(file)
}
}
func setFile(_ file: SamplerFile) throws {
try sampler.loadInstrument(url: file.url)
}
}
// MARK: -
extension AudioGraph: NotePlayer {
func startAudioEngine() throws {
print("### Start engine")
try engine.start()
pitchTracker.start()
}
}
这里有一些需要检查的事情。
对我来说,这就是解决问题的原因。
无论如何,我在日志中没有看到任何关于此的内容。不“哇,孩子 - 你正在尝试使用麦克风,但你并没有要求这样做!我只是要为你在缓冲区中呈现静音,但你绝对应该请求访问权限,你知道?”。
我在随机查找其他一些包依赖项设置时碰巧注意到了 Cookbook Demo App 项目中的这个复选框。也许这就是上帝的恩典。我基本上是不可知论者,但现在就是这样的时候,你知道吗?
耶——编程真是太棒了。这是我的职业真是太快乐了。