summaryrefslogtreecommitdiff
path: root/Runtime/Audio/AudioChorusFilter.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-08-14 22:50:43 +0800
committerchai <chaifix@163.com>2019-08-14 22:50:43 +0800
commit15740faf9fe9fe4be08965098bbf2947e096aeeb (patch)
treea730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Audio/AudioChorusFilter.cpp
+Unity Runtime codeHEADmaster
Diffstat (limited to 'Runtime/Audio/AudioChorusFilter.cpp')
-rw-r--r--Runtime/Audio/AudioChorusFilter.cpp86
1 files changed, 86 insertions, 0 deletions
diff --git a/Runtime/Audio/AudioChorusFilter.cpp b/Runtime/Audio/AudioChorusFilter.cpp
new file mode 100644
index 0000000..ef1294c
--- /dev/null
+++ b/Runtime/Audio/AudioChorusFilter.cpp
@@ -0,0 +1,86 @@
+#include "UnityPrefix.h"
+#include "AudioChorusFilter.h"
+#include "Runtime/Utilities/Utility.h"
+
+#if ENABLE_AUDIO_FMOD
+
+AudioChorusFilter::AudioChorusFilter (MemLabelId label, ObjectCreationMode mode) :
+Super(label, mode),
+m_DryMix(0.5f),
+m_WetMix1(0.5f),
+m_WetMix2(0.5f),
+m_WetMix3(0.5f),
+m_Delay(40.0f),
+m_Rate(0.8f),
+m_Depth(0.03f)
+{
+ m_Type = FMOD_DSP_TYPE_CHORUS;
+}
+
+AudioChorusFilter::~AudioChorusFilter()
+{}
+
+
+void AudioChorusFilter::AddToManager()
+{
+ Super::AddToManager();
+}
+
+void AudioChorusFilter::Reset()
+{
+ Super::Reset();
+
+ m_DryMix = 0.5f;
+ m_WetMix1 = 0.5f;
+ m_WetMix2 = 0.5f;
+ m_WetMix3 = 0.5f;
+ m_Delay = 40.0f;
+ m_Rate = 0.8f;
+ m_Depth = 0.03f;
+}
+
+void AudioChorusFilter::CheckConsistency()
+{
+ Super::CheckConsistency();
+ m_DryMix = clamp(m_DryMix,0.0f,1.0f);
+ m_WetMix1 = clamp(m_WetMix1,0.0f,1.0f);
+ m_WetMix2 = clamp(m_WetMix2, 0.0f, 1.0f);
+ m_WetMix3 = clamp(m_WetMix3, 0.0f, 1.0f);
+ m_Delay = clamp(m_Delay, 0.1f, 100.0f);
+ m_Rate = clamp(m_Rate,0.0f,20.0f);
+ m_Depth = clamp(m_Depth,0.0f,1.0f);
+}
+
+void AudioChorusFilter::Update()
+{
+ if (m_DSP)
+ {
+ m_DSP->setParameter(FMOD_DSP_CHORUS_DRYMIX, m_DryMix);
+ m_DSP->setParameter(FMOD_DSP_CHORUS_WETMIX1, m_WetMix1);
+ m_DSP->setParameter(FMOD_DSP_CHORUS_WETMIX2, m_WetMix2);
+ m_DSP->setParameter(FMOD_DSP_CHORUS_WETMIX3, m_WetMix3);
+ m_DSP->setParameter(FMOD_DSP_CHORUS_DELAY, m_Delay);
+ m_DSP->setParameter(FMOD_DSP_CHORUS_RATE, m_Rate);
+ m_DSP->setParameter(FMOD_DSP_CHORUS_DEPTH, m_Depth);
+ }
+}
+
+
+template<class TransferFunc>
+void AudioChorusFilter::Transfer (TransferFunc& transfer)
+{
+ Super::Transfer (transfer);
+ TRANSFER(m_DryMix);
+ TRANSFER(m_WetMix1);
+ TRANSFER(m_WetMix2);
+ TRANSFER(m_WetMix3);
+ TRANSFER(m_Delay);
+ TRANSFER(m_Rate);
+ TRANSFER(m_Depth);
+}
+
+
+IMPLEMENT_CLASS (AudioChorusFilter)
+IMPLEMENT_OBJECT_SERIALIZE (AudioChorusFilter)
+
+#endif //ENABLE_AUDIO