From 15740faf9fe9fe4be08965098bbf2947e096aeeb Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 14 Aug 2019 22:50:43 +0800 Subject: +Unity Runtime code --- Runtime/Audio/AudioHighPassFilter.cpp | 61 +++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 Runtime/Audio/AudioHighPassFilter.cpp (limited to 'Runtime/Audio/AudioHighPassFilter.cpp') 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 +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 -- cgit v1.1-26-g67d0