1

我在两个单独的类中有两个单独的 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。有没有办法做到这一点?

4

1 回答 1

2

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

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

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

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

于 2015-12-15T11:23:09.607 回答