如何在 MacOS 上使用麦克风输入?

问题描述 投票:0回答:1

我用下面的代码设置了一个“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()
    }
}
macos audiokit
1个回答
1
投票

这里有一些需要检查的事情。

  • 转到 Xcode 中的项目目标。
  • 转到“签名和功能”选项卡。
  • 向下滚动到“强化运行时”,然后在“资源访问”中。
  • 选中“音频输入”复选框。

Checkbox allowing audio input

对我来说,这就是解决问题的原因。

无论如何,我在日志中没有看到任何关于此的内容。不“哇,孩子 - 你正在尝试使用麦克风,但你并没有要求这样做!我只是要为你在缓冲区中呈现静音,但你绝对应该请求访问权限,你知道?”。

我在随机查找其他一些包依赖项设置时碰巧注意到了 Cookbook Demo App 项目中的这个复选框。也许这就是上帝的恩典。我基本上是不可知论者,但现在就是这样的时候,你知道吗?

耶——编程真是太棒了。这是我的职业真是太快乐了。

© www.soinside.com 2019 - 2024. All rights reserved.