【问题标题】:Copying data from one AudioSampleBuffer to another in a different class将数据从一个 AudioSampleBuffer 复制到另一个类中的另一个
【发布时间】:2015-12-14 19:17:03
【问题描述】:

我在两个单独的类中有两个单独的 AudioSampleBuffer 对象。这是第一类的私有部分,称为 TransportBar.h:

private:
Atomic<int> playState;
Atomic<int> soloState;
Atomic<int> muteState;

unsigned int bufferPosition;
AudioSampleBuffer masterBuffer;
static const int bufferSize = 352800; //constant

这里是节类的私有节,称为 Looper.h:

private:  
//Shared data
Atomic<int> recordState;
Atomic<int> playState;

//Audio data
static const int bufferSize = 352800; //constant
unsigned int bufferPosition;
AudioSampleBuffer audioSampleBuffer;

我正在创建的应用程序有 4 个记录到 audioSampleBuffer 的轨道。然后我想要一个“主”播放按钮,它可以播放所有这些数据。因此,我需要做的是将数据从 audioSampleBuffer 复制到 masterBuffer。有没有办法做到这一点?

【问题讨论】:

    标签: c++ class audio buffer juce


    【解决方案1】:

    AudioSampleBuffer 只是typedefAudioBuffer&lt;float&gt;,其文档可以在here 中找到。在里面你会看到copyFrom 成员函数。此函数有几个重载,其中一个将AudioBuffer&lt;T&gt; 作为其源缓冲区。

    要访问 AudioSampleBuffer 以便复制它,您必须执行以下操作之一:

    • 将其公开(或在派生类型中受保护)
    • 创建一个getter函数
    • 让其他班级成为朋友
    • 使用同一类的另一个实例来访问成员

    值得问问自己这是否也是架构问题;是否可以通过更好的设计完全避免这个问题?

    【讨论】:

    • 干杯,还有 makeCopyOf 成员函数,看起来它可能有用。但是我遇到的问题是这两个缓冲区位于单独的 .h 文件中,因此我无法访问要从中复制的缓冲区。有什么建议吗?
    • 这就是方法!但是,当我尝试使用 masterBuffer 作为输出时,它似乎不起作用。这是另一个问题。干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    相关资源
    最近更新 更多