c++ - 将数据从一个 AudioSampleBuffer 复制到不同类中的另一个

标签 c++ class audio buffer juce

我在两个单独的类中有两个单独的 AudioSampleBuffer 对象。这是第一类的私有(private)部分,称为 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)部分:

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只是一个typedef对于 AudioBuffer<float> ,可以找到其文档 here .在里面你会看到 copyFrom成员函数。这个函数有几个重载,其中一个需要一个 AudioBuffer<T>。作为它的源缓冲区。

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

  • 将其公开(如果您在派生类型中,则将其保护)
  • 创建一个 getter 函数
  • 让其他类(class)成为 friend
  • 使用同一个类的另一个实例来访问成员

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

关于c++ - 将数据从一个 AudioSampleBuffer 复制到不同类中的另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34274881/

相关文章:

android - 新的音频HAL无法与Nexus播放器一起使用

c++ - 将 vector 创建的 Matlab 代码翻译为 C++

c++ - 创建从外部范围重新声明模板参数的 typedef 的负面影响?

c++ - 使用 QXmlStreamReader 读取 XML 文件

c++ - 推广结构访问的有效且实用的方法?

c++ - 指针深拷贝的 vector

android - 如何根据Android中的媒体播放器禁用和启用布局

ios - 视频播放后录制音频

c++ - if (intVar) 和 if (intVar != 0) 之间有区别吗?

ruby-on-rails - 这行代码似乎适用于 Rails 2.x.x 但不适用于 3.x.x?有人可以帮忙解决 "translate"吗?