首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS AudioKit AKAmplitudeTracker

iOS AudioKit AKAmplitudeTracker
EN

Stack Overflow用户
提问于 2017-09-27 04:07:12
回答 1查看 413关注 0票数 3

我正在尝试让类似这样的游乐场在iOS上运行:http://audiokit.io/playgrounds/Analysis/Tracking%20Amplitude/

这是我的视图控制器,我在其中使用mandolin物理模型创建注释,然后运行快速傅立叶变换和amplitudeTracker。但我从他们那里得不到任何价值。您可以看到以下输出:

代码语言:javascript
复制
var fft: AKFFTTap!
var amplitudeTracker: AKAmplitudeTracker!


override func viewDidLoad() {
    super.viewDidLoad()

    let mandolin = AKMandolin()
    mandolin.detune = 1
    mandolin.bodySize = 1
    let pluckPosition = 0.2

    let scale: [MIDINoteNumber] = [72, 74, 76, 77, 79, 81, 83, 84]
    let delay = AKDelay(mandolin)
    let mix = AKMixer()
    mix.connect(delay)

    let reverb = AKReverb(mix)
    amplitudeTracker = AKAmplitudeTracker(mix)
    fft = AKFFTTap(mix)

    AudioKit.output = reverb
    AudioKit.start()

  for note in scale {

        let note1: MIDINoteNumber = note
        let octave1: MIDINoteNumber = 4
        let course1 = 2
        let count = 25

        mandolin.fret(noteNumber: note1 + octave1, course: course1 - 1)
        mandolin.pluck(course: course1 - 1, position: pluckPosition, velocity: 127)

        print("plying note")

        let fftData = self.fft.fftData
        let lowMax = fftData[0 ... (count / 2) - 1].max() ?? 0
        let hiMax = fftData[count / 2 ... count - 1].max() ?? 0
        let hiMin = fftData[count / 2 ... count - 1].min() ?? 0
        let amplitude = Float(self.amplitudeTracker.amplitude * 65)
        print("amplitude \(amplitude)")
        print("lowMax \(lowMax)")
        print("hiMax \(hiMax)")
        print("hiMin \(hiMin)")

        sleep(1)
    }

}

这是我运行它时得到的输出:

代码语言:javascript
复制
2017-09-26 12:43:27.724706-0700 AK[9467:1161171] 957: AUParameterSet 2 (1/8): err -10867
2017-09-26 12:43:28.177699-0700 AK[9467:1161171] 957: AUParameterSet 2 (1/8): err -10867
playing note
amplitude 0.0
lowMax 0.0
hiMax 0.0
hiMin 0.0
playing note
amplitude 0.0
lowMax 0.0
hiMax 0.0
hiMin 0.0
...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-02 11:32:12

这里的主要问题是频率跟踪器节点不是信号链的一部分。AudioKit (和苹果的底层AVAudioEngine)工作在拉取模型上,因为音频不会通过节点拉取,除非下游节点请求。这基本上意味着从AudioKit.output节点开始的所有内容都将通过它们获取字节。

然而,在这里,混响被设置为输出,因此跟踪器本身不会通过它获得任何数据。将其更改为AudioKit.output = amplitudeTracker将使数据通过该节点。

amplitudeTracker起到了穿透的作用,所以音频也能穿透。如果你不想要音频,那么你可以把跟踪器的输出通过一个加速器来降低音量到零。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46434933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档