aboutsummaryrefslogtreecommitdiffstats
path: root/al/effects/vmorpher.cpp
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2023-11-28 12:51:46 +0100
committerSven Gothel <[email protected]>2023-11-28 12:51:46 +0100
commit1aaf4f070011490bcece50394b9b32dfa593fd9e (patch)
tree17d68284e401a35eea3d3a574d986d446a60763a /al/effects/vmorpher.cpp
parent6e7cee4fa9a8af03f28ca26cd89f8357390dfc90 (diff)
parent571b546f35eead77ce109f8d4dd6c3de3199d573 (diff)
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'al/effects/vmorpher.cpp')
-rw-r--r--al/effects/vmorpher.cpp84
1 files changed, 43 insertions, 41 deletions
diff --git a/al/effects/vmorpher.cpp b/al/effects/vmorpher.cpp
index 21ea3680..f2551229 100644
--- a/al/effects/vmorpher.cpp
+++ b/al/effects/vmorpher.cpp
@@ -1,13 +1,13 @@
#include "config.h"
+#include <optional>
#include <stdexcept>
#include "AL/al.h"
#include "AL/efx.h"
#include "alc/effects/base.h"
-#include "aloptional.h"
#include "effects.h"
#ifdef ALSOFT_EAX
@@ -20,7 +20,7 @@
namespace {
-al::optional<VMorpherPhenome> PhenomeFromEnum(ALenum val)
+std::optional<VMorpherPhenome> PhenomeFromEnum(ALenum val)
{
#define HANDLE_PHENOME(x) case AL_VOCAL_MORPHER_PHONEME_ ## x: \
return VMorpherPhenome::x
@@ -57,7 +57,7 @@ al::optional<VMorpherPhenome> PhenomeFromEnum(ALenum val)
HANDLE_PHENOME(V);
HANDLE_PHENOME(Z);
}
- return al::nullopt;
+ return std::nullopt;
#undef HANDLE_PHENOME
}
ALenum EnumFromPhenome(VMorpherPhenome phenome)
@@ -100,7 +100,7 @@ ALenum EnumFromPhenome(VMorpherPhenome phenome)
#undef HANDLE_PHENOME
}
-al::optional<VMorpherWaveform> WaveformFromEmum(ALenum value)
+std::optional<VMorpherWaveform> WaveformFromEmum(ALenum value)
{
switch(value)
{
@@ -108,7 +108,7 @@ al::optional<VMorpherWaveform> WaveformFromEmum(ALenum value)
case AL_VOCAL_MORPHER_WAVEFORM_TRIANGLE: return VMorpherWaveform::Triangle;
case AL_VOCAL_MORPHER_WAVEFORM_SAWTOOTH: return VMorpherWaveform::Sawtooth;
}
- return al::nullopt;
+ return std::nullopt;
}
ALenum EnumFromWaveform(VMorpherWaveform type)
{
@@ -355,13 +355,7 @@ template<>
template<>
bool VocalMorpherCommitter::commit(const EaxEffectProps &props)
{
- if(props.mType == mEaxProps.mType
- && mEaxProps.mVocalMorpher.ulPhonemeA == props.mVocalMorpher.ulPhonemeA
- && mEaxProps.mVocalMorpher.lPhonemeACoarseTuning == props.mVocalMorpher.lPhonemeACoarseTuning
- && mEaxProps.mVocalMorpher.ulPhonemeB == props.mVocalMorpher.ulPhonemeB
- && mEaxProps.mVocalMorpher.lPhonemeBCoarseTuning == props.mVocalMorpher.lPhonemeBCoarseTuning
- && mEaxProps.mVocalMorpher.ulWaveform == props.mVocalMorpher.ulWaveform
- && mEaxProps.mVocalMorpher.flRate == props.mVocalMorpher.flRate)
+ if(props == mEaxProps)
return false;
mEaxProps = props;
@@ -413,12 +407,13 @@ bool VocalMorpherCommitter::commit(const EaxEffectProps &props)
return VMorpherWaveform::Sinusoid;
};
- mAlProps.Vmorpher.PhonemeA = get_phoneme(props.mVocalMorpher.ulPhonemeA);
- mAlProps.Vmorpher.PhonemeACoarseTuning = static_cast<int>(props.mVocalMorpher.lPhonemeACoarseTuning);
- mAlProps.Vmorpher.PhonemeB = get_phoneme(props.mVocalMorpher.ulPhonemeB);
- mAlProps.Vmorpher.PhonemeBCoarseTuning = static_cast<int>(props.mVocalMorpher.lPhonemeBCoarseTuning);
- mAlProps.Vmorpher.Waveform = get_waveform(props.mVocalMorpher.ulWaveform);
- mAlProps.Vmorpher.Rate = props.mVocalMorpher.flRate;
+ auto &eaxprops = std::get<EAXVOCALMORPHERPROPERTIES>(props);
+ mAlProps.Vmorpher.PhonemeA = get_phoneme(eaxprops.ulPhonemeA);
+ mAlProps.Vmorpher.PhonemeACoarseTuning = static_cast<int>(eaxprops.lPhonemeACoarseTuning);
+ mAlProps.Vmorpher.PhonemeB = get_phoneme(eaxprops.ulPhonemeB);
+ mAlProps.Vmorpher.PhonemeBCoarseTuning = static_cast<int>(eaxprops.lPhonemeBCoarseTuning);
+ mAlProps.Vmorpher.Waveform = get_waveform(eaxprops.ulWaveform);
+ mAlProps.Vmorpher.Rate = eaxprops.flRate;
return true;
}
@@ -426,49 +421,55 @@ bool VocalMorpherCommitter::commit(const EaxEffectProps &props)
template<>
void VocalMorpherCommitter::SetDefaults(EaxEffectProps &props)
{
- props.mType = EaxEffectType::VocalMorpher;
- props.mVocalMorpher.ulPhonemeA = EAXVOCALMORPHER_DEFAULTPHONEMEA;
- props.mVocalMorpher.lPhonemeACoarseTuning = EAXVOCALMORPHER_DEFAULTPHONEMEACOARSETUNING;
- props.mVocalMorpher.ulPhonemeB = EAXVOCALMORPHER_DEFAULTPHONEMEB;
- props.mVocalMorpher.lPhonemeBCoarseTuning = EAXVOCALMORPHER_DEFAULTPHONEMEBCOARSETUNING;
- props.mVocalMorpher.ulWaveform = EAXVOCALMORPHER_DEFAULTWAVEFORM;
- props.mVocalMorpher.flRate = EAXVOCALMORPHER_DEFAULTRATE;
+ static constexpr EAXVOCALMORPHERPROPERTIES defprops{[]
+ {
+ EAXVOCALMORPHERPROPERTIES ret{};
+ ret.ulPhonemeA = EAXVOCALMORPHER_DEFAULTPHONEMEA;
+ ret.lPhonemeACoarseTuning = EAXVOCALMORPHER_DEFAULTPHONEMEACOARSETUNING;
+ ret.ulPhonemeB = EAXVOCALMORPHER_DEFAULTPHONEMEB;
+ ret.lPhonemeBCoarseTuning = EAXVOCALMORPHER_DEFAULTPHONEMEBCOARSETUNING;
+ ret.ulWaveform = EAXVOCALMORPHER_DEFAULTWAVEFORM;
+ ret.flRate = EAXVOCALMORPHER_DEFAULTRATE;
+ return ret;
+ }()};
+ props = defprops;
}
template<>
-void VocalMorpherCommitter::Get(const EaxCall &call, const EaxEffectProps &props)
+void VocalMorpherCommitter::Get(const EaxCall &call, const EaxEffectProps &props_)
{
+ auto &props = std::get<EAXVOCALMORPHERPROPERTIES>(props_);
switch(call.get_property_id())
{
case EAXVOCALMORPHER_NONE:
break;
case EAXVOCALMORPHER_ALLPARAMETERS:
- call.set_value<Exception>(props.mVocalMorpher);
+ call.set_value<Exception>(props);
break;
case EAXVOCALMORPHER_PHONEMEA:
- call.set_value<Exception>(props.mVocalMorpher.ulPhonemeA);
+ call.set_value<Exception>(props.ulPhonemeA);
break;
case EAXVOCALMORPHER_PHONEMEACOARSETUNING:
- call.set_value<Exception>(props.mVocalMorpher.lPhonemeACoarseTuning);
+ call.set_value<Exception>(props.lPhonemeACoarseTuning);
break;
case EAXVOCALMORPHER_PHONEMEB:
- call.set_value<Exception>(props.mVocalMorpher.ulPhonemeB);
+ call.set_value<Exception>(props.ulPhonemeB);
break;
case EAXVOCALMORPHER_PHONEMEBCOARSETUNING:
- call.set_value<Exception>(props.mVocalMorpher.lPhonemeBCoarseTuning);
+ call.set_value<Exception>(props.lPhonemeBCoarseTuning);
break;
case EAXVOCALMORPHER_WAVEFORM:
- call.set_value<Exception>(props.mVocalMorpher.ulWaveform);
+ call.set_value<Exception>(props.ulWaveform);
break;
case EAXVOCALMORPHER_RATE:
- call.set_value<Exception>(props.mVocalMorpher.flRate);
+ call.set_value<Exception>(props.flRate);
break;
default:
@@ -477,39 +478,40 @@ void VocalMorpherCommitter::Get(const EaxCall &call, const EaxEffectProps &props
}
template<>
-void VocalMorpherCommitter::Set(const EaxCall &call, EaxEffectProps &props)
+void VocalMorpherCommitter::Set(const EaxCall &call, EaxEffectProps &props_)
{
+ auto &props = std::get<EAXVOCALMORPHERPROPERTIES>(props_);
switch(call.get_property_id())
{
case EAXVOCALMORPHER_NONE:
break;
case EAXVOCALMORPHER_ALLPARAMETERS:
- defer<AllValidator>(call, props.mVocalMorpher);
+ defer<AllValidator>(call, props);
break;
case EAXVOCALMORPHER_PHONEMEA:
- defer<PhonemeAValidator>(call, props.mVocalMorpher.ulPhonemeA);
+ defer<PhonemeAValidator>(call, props.ulPhonemeA);
break;
case EAXVOCALMORPHER_PHONEMEACOARSETUNING:
- defer<PhonemeACoarseTuningValidator>(call, props.mVocalMorpher.lPhonemeACoarseTuning);
+ defer<PhonemeACoarseTuningValidator>(call, props.lPhonemeACoarseTuning);
break;
case EAXVOCALMORPHER_PHONEMEB:
- defer<PhonemeBValidator>(call, props.mVocalMorpher.ulPhonemeB);
+ defer<PhonemeBValidator>(call, props.ulPhonemeB);
break;
case EAXVOCALMORPHER_PHONEMEBCOARSETUNING:
- defer<PhonemeBCoarseTuningValidator>(call, props.mVocalMorpher.lPhonemeBCoarseTuning);
+ defer<PhonemeBCoarseTuningValidator>(call, props.lPhonemeBCoarseTuning);
break;
case EAXVOCALMORPHER_WAVEFORM:
- defer<WaveformValidator>(call, props.mVocalMorpher.ulWaveform);
+ defer<WaveformValidator>(call, props.ulWaveform);
break;
case EAXVOCALMORPHER_RATE:
- defer<RateValidator>(call, props.mVocalMorpher.flRate);
+ defer<RateValidator>(call, props.flRate);
break;
default: