mirror of
https://github.com/AxioDL/boo.git
synced 2025-12-13 23:26:16 +00:00
Add channel-matrix slewing
This commit is contained in:
@@ -39,47 +39,66 @@ static inline float ClampFlt(float in)
|
||||
|
||||
class AudioMatrixMono
|
||||
{
|
||||
float m_coefs[8];
|
||||
float m_coefs[8] = {};
|
||||
float m_oldCoefs[8] = {};
|
||||
size_t m_slewFrames = 0;
|
||||
size_t m_curSlewFrame = 0;
|
||||
public:
|
||||
AudioMatrixMono() {setDefaultMatrixCoefficients(AudioChannelSet::Stereo);}
|
||||
|
||||
void setDefaultMatrixCoefficients(AudioChannelSet acSet);
|
||||
void setMatrixCoefficients(const float coefs[8])
|
||||
void setMatrixCoefficients(const float coefs[8], size_t slewFrames=0)
|
||||
{
|
||||
m_slewFrames = slewFrames;
|
||||
m_curSlewFrame = 0;
|
||||
for (int i=0 ; i<8 ; ++i)
|
||||
{
|
||||
if (m_curSlewFrame == m_slewFrames)
|
||||
m_oldCoefs[i] = m_coefs[i];
|
||||
m_coefs[i] = coefs[i];
|
||||
}
|
||||
}
|
||||
|
||||
int16_t* mixMonoSampleData(const AudioVoiceEngineMixInfo& info,
|
||||
const int16_t* dataIn, int16_t* dataOut, size_t samples) const;
|
||||
const int16_t* dataIn, int16_t* dataOut, size_t samples);
|
||||
int32_t* mixMonoSampleData(const AudioVoiceEngineMixInfo& info,
|
||||
const int32_t* dataIn, int32_t* dataOut, size_t samples) const;
|
||||
const int32_t* dataIn, int32_t* dataOut, size_t samples);
|
||||
float* mixMonoSampleData(const AudioVoiceEngineMixInfo& info,
|
||||
const float* dataIn, float* dataOut, size_t samples) const;
|
||||
const float* dataIn, float* dataOut, size_t samples);
|
||||
};
|
||||
|
||||
class AudioMatrixStereo
|
||||
{
|
||||
float m_coefs[8][2];
|
||||
float m_coefs[8][2] = {};
|
||||
float m_oldCoefs[8][2] = {};
|
||||
size_t m_slewFrames = 0;
|
||||
size_t m_curSlewFrame = 0;
|
||||
public:
|
||||
AudioMatrixStereo() {setDefaultMatrixCoefficients(AudioChannelSet::Stereo);}
|
||||
|
||||
void setDefaultMatrixCoefficients(AudioChannelSet acSet);
|
||||
void setMatrixCoefficients(const float coefs[8][2])
|
||||
void setMatrixCoefficients(const float coefs[8][2], size_t slewFrames=0)
|
||||
{
|
||||
m_slewFrames = slewFrames;
|
||||
m_curSlewFrame = 0;
|
||||
for (int i=0 ; i<8 ; ++i)
|
||||
{
|
||||
if (m_curSlewFrame == m_slewFrames)
|
||||
{
|
||||
m_oldCoefs[i][0] = m_coefs[i][0];
|
||||
m_oldCoefs[i][1] = m_coefs[i][1];
|
||||
}
|
||||
m_coefs[i][0] = coefs[i][0];
|
||||
m_coefs[i][1] = coefs[i][1];
|
||||
}
|
||||
}
|
||||
|
||||
int16_t* mixStereoSampleData(const AudioVoiceEngineMixInfo& info,
|
||||
const int16_t* dataIn, int16_t* dataOut, size_t frames) const;
|
||||
const int16_t* dataIn, int16_t* dataOut, size_t frames);
|
||||
int32_t* mixStereoSampleData(const AudioVoiceEngineMixInfo& info,
|
||||
const int32_t* dataIn, int32_t* dataOut, size_t frames) const;
|
||||
const int32_t* dataIn, int32_t* dataOut, size_t frames);
|
||||
float* mixStereoSampleData(const AudioVoiceEngineMixInfo& info,
|
||||
const float* dataIn, float* dataOut, size_t frames) const;
|
||||
const float* dataIn, float* dataOut, size_t frames);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user