将数据从一个AudioSampleBuffer复制到另一个类中的另一个

时间:2015-12-14 19:17:04

标签: c++ class audio buffer juce

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

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

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

这里是section类的私有部分,名为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。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

AudioSampleBuffer只是typedef的{​​{1}},其文档可以找到here。在那里你会看到AudioBuffer<float>成员函数。此函数有几个重载,其中一个以copyFrom作为源缓冲区。

要访问AudioBuffer<T>以便您可以复制它,您必须执行以下操作之一:

  • 将其公开(如果您处于派生类型,则受到保护)
  • 创建一个getter函数
  • 让另一个班级成为朋友
  • 使用同一类的另一个实例来访问该成员

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