2015-12-14 83 views
1

我在兩個單獨的類中有兩個獨立的AudioSampleBuffer對象。這裏是被稱爲TransportBar.h第一類的私有部分:將數據從一個AudioSampleBuffer複製到另一個類中的另一個

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; 

應用程序I我正在創建4個音軌,錄製到audioSampleBuffer。然後我想要一個「主」播放按鈕,播放所有這些數據。因此,我需要做的是將數據從audioSampleBuffer複製到masterBuffer。有沒有辦法做到這一點?

回答

2

AudioSampleBuffer只是typedef對於AudioBuffer<float>,其文檔可以找到here。在那裏你會看到copyFrom成員函數。這個函數有幾個過載,其中一個以AudioBuffer<T>作爲源緩衝區。

要訪問的AudioSampleBuffer這樣你就可以把它複製,必須執行下列操作之一:

  • 設爲公開(或如果您在派生類是受保護)
  • 創建getter函數
  • 讓其他類的朋友
  • 使用同一類的其他實例訪問成員

值得問問自己,這是否也是一個架構問題;這個問題是否可以通過更好的設計完全避免?

+0

乾杯,還有makeCopyOf成員函數,看起來可能有用。然而我遇到的問題是兩個緩衝區都在單獨的.h文件中,所以我無法訪問我想從中複製的緩衝區。有什麼建議麼? – willfo

+0

@willfo我已經更新了答案,這有幫助嗎? :) – OMGtechy

+0

這是做到這一點的方法!但是,當我嘗試使用masterBuffer輸出時,它似乎不起作用。但這是另一個問題。乾杯! – willfo

相關問題