diff --git a/include/boo/audiodev/IAudioVoice.hpp b/include/boo/audiodev/IAudioVoice.hpp index ded59b8..f0e5b5e 100644 --- a/include/boo/audiodev/IAudioVoice.hpp +++ b/include/boo/audiodev/IAudioVoice.hpp @@ -63,10 +63,10 @@ struct IAudioVoice virtual void setDefaultMatrixCoefficients()=0; /** Set channel-gains for mono audio source (AudioChannel enum for array index) */ - virtual void setMonoMatrixCoefficients(const float coefs[8])=0; + virtual void setMonoMatrixCoefficients(const float coefs[8], bool slew)=0; /** Set channel-gains for stereo audio source (AudioChannel enum for array index) */ - virtual void setStereoMatrixCoefficients(const float coefs[8][2])=0; + virtual void setStereoMatrixCoefficients(const float coefs[8][2], bool slew)=0; /** Called by client to dynamically adjust the pitch of voices with dynamic pitch enabled */ virtual void setPitchRatio(double ratio, bool slew)=0; diff --git a/lib/audiodev/AudioMatrix.cpp b/lib/audiodev/AudioMatrix.cpp index 995ae49..e5a1598 100644 --- a/lib/audiodev/AudioMatrix.cpp +++ b/lib/audiodev/AudioMatrix.cpp @@ -7,6 +7,8 @@ namespace boo void AudioMatrixMono::setDefaultMatrixCoefficients(AudioChannelSet acSet) { + m_curSlewFrame = 0; + m_slewFrames = 0; memset(m_coefs, 0, sizeof(m_coefs)); switch (acSet) { @@ -24,58 +26,126 @@ void AudioMatrixMono::setDefaultMatrixCoefficients(AudioChannelSet acSet) } int16_t* AudioMatrixMono::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) { const ChannelMap& chmap = info.m_channelMap; for (size_t s=0 ; s