首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AudioKit的AKNodeOutputPlot是如何获取数据的?

AudioKit的AKNodeOutputPlot是如何获取数据的?
EN

Stack Overflow用户
提问于 2017-11-17 15:58:29
回答 1查看 491关注 0票数 4

我对AudioKit框架非常陌生,我一直在尝试更多地了解它的DSP端。在翻看源代码时,我意识到AKNodeOutputPlot并不像其他人那样从节点拉取数据。

在AKAmplitudeTracker的DSP代码中,为每个通道计算RMS值,并将结果简短地写入输出缓冲区,但在for循环结束时,通过将输出设置为原始输入,实质上绕过了节点:

代码语言:javascript
复制
void process(AUAudioFrameCount frameCount, AUAudioFrameCount bufferOffset) override {

    for (int frameIndex = 0; frameIndex < frameCount; ++frameIndex) {

        int frameOffset = int(frameIndex + bufferOffset);

        for (int channel = 0; channel < channels; ++channel) {
            float *in  = (float *)inBufferListPtr->mBuffers[channel].mData  + frameOffset;
            float temp = *in;
            float *out = (float *)outBufferListPtr->mBuffers[channel].mData + frameOffset;
            if (channel == 0) {
                if (started) {
                    sp_rms_compute(sp, leftRMS, in, out);
                    leftAmplitude = *out;
                } else {
                    leftAmplitude = 0;
                }
            } else {
                if (started) {
                    sp_rms_compute(sp, rightRMS, in, out);
                    rightAmplitude = *out;
                } else {
                    rightAmplitude = 0;
                }
            }
            *out = temp;
        }
    }
}

这是有意义的,因为将RMS值输出到设备扬声器听起来很糟糕,但是当此节点用作AKNodeOutputPlot对象的输入时,将绘制RMS值。

我假设在某个地方引用了leftAmplitude和rightAmplitude变量,但即使将它们置零,绘图也能正常工作。我感兴趣的是在不影响输出的情况下对信号做一些工作,所以我希望有人能帮我弄清楚AKPlot是如何获取这些数据的。

干杯

EN

回答 1

Stack Overflow用户

发布于 2017-11-18 02:09:36

AKNodeOutputPlot使用的是一种叫做“点击”的东西:

https://github.com/AudioKit/AudioKit/blob/master/AudioKit/Common/User%20Interface/AKNodeOutputPlot.swift

还有一些不一定仅用于用户界面的其他点击:

https://github.com/AudioKit/AudioKit/tree/master/AudioKit/Common/Taps

Tap允许您检查通过另一个节点拉取的数据,而无需插入信号链本身。

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

https://stackoverflow.com/questions/47345831

复制
相关文章

相似问题

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