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

Copying data from one AudioSampleBuffer to another in a different class

本文关键字:其他 复制 另一个 AudioSampleBuffer 一个 数据      更新时间:2023-10-16

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

AudioSampleBuffer只是AudioBuffer<float>typedef,其文档可在此处找到。在那里,您将看到copyFrom成员功能。此函数有几个重载,其中一个重载将AudioBuffer<T>作为其源缓冲区。

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

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

值得问问自己,这是否也是一个架构问题;如果有更好的设计,这个问题能完全避免吗?