将数据从一个 AudioSampleBuffer 复制到另一个 class

Copying data from one AudioSampleBuffer to another in a different class

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

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

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

这里是 class 部分的私有部分,称为 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 的轨道。然后我想要一个 "master" 播放按钮,播放所有这些数据。因此我需要做的是将数据从 audioSampleBuffer 复制到 masterBuffer。有办法吗?

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

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

  • 使其成为 public(或者如果您处于派生类型中,则受保护)
  • 创建一个 getter 函数
  • 将另一个 class 加为朋友
  • 使用相同的另一个实例class访问成员

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