summaryrefslogtreecommitdiff
path: root/Runtime/Audio/AudioHighPassFilter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Audio/AudioHighPassFilter.cpp')
-rw-r--r--Runtime/Audio/AudioHighPassFilter.cpp61
1 files changed, 61 insertions, 0 deletions
diff --git a/Runtime/Audio/AudioHighPassFilter.cpp b/Runtime/Audio/AudioHighPassFilter.cpp
new file mode 100644
index 0000000..8e37717
--- /dev/null
+++ b/Runtime/Audio/AudioHighPassFilter.cpp
@@ -0,0 +1,61 @@
+#include "UnityPrefix.h"
+#if ENABLE_AUDIO_FMOD
+#include "AudioHighPassFilter.h"
+#include "Runtime/Utilities/Utility.h"
+
+
+AudioHighPassFilter::AudioHighPassFilter (MemLabelId label, ObjectCreationMode mode) :
+Super(label, mode),
+m_CutoffFrequency(5000.0f),
+m_HighpassResonanceQ(1.0f)
+{
+ m_Type = FMOD_DSP_TYPE_HIGHPASS;
+}
+
+AudioHighPassFilter::~AudioHighPassFilter()
+{}
+
+void AudioHighPassFilter::AddToManager()
+{
+ Super::AddToManager();
+}
+
+void AudioHighPassFilter::Reset()
+{
+ Super::Reset();
+
+ m_CutoffFrequency = 5000.0f;
+ m_HighpassResonanceQ = 1.0f;
+}
+
+void AudioHighPassFilter::CheckConsistency()
+{
+ Super::CheckConsistency();
+ // @TODO get output freq from audiomanager
+ m_CutoffFrequency = clamp(m_CutoffFrequency, 10.0f, 22000.0f);
+ m_HighpassResonanceQ = clamp(m_HighpassResonanceQ, 1.0f, 10.0f);
+}
+
+void AudioHighPassFilter::Update()
+{
+ if (m_DSP)
+ {
+ m_DSP->setParameter(FMOD_DSP_HIGHPASS_CUTOFF, m_CutoffFrequency);
+ m_DSP->setParameter(FMOD_DSP_HIGHPASS_RESONANCE, m_HighpassResonanceQ);
+ }
+}
+
+
+template<class TransferFunc>
+void AudioHighPassFilter::Transfer (TransferFunc& transfer)
+{
+ Super::Transfer (transfer);
+ TRANSFER(m_CutoffFrequency);
+ TRANSFER(m_HighpassResonanceQ);
+}
+
+
+IMPLEMENT_CLASS (AudioHighPassFilter)
+IMPLEMENT_OBJECT_SERIALIZE (AudioHighPassFilter)
+
+#endif //ENABLE_AUDIO \ No newline at end of file