caudio/include/IEffectParameters.h

368 lines
8.7 KiB
C++

// Copyright (c) 2008-2010 Raynaldo (Wildicv) Rivera, Joshua (Dark_Kilauea) Jones
// This file is part of the "cAudio Engine"
// For conditions of distribution and use, see copyright notice in cAudio.h
#ifndef IEFFECTPARAMETERS_H
#define IEFFECTPARAMETERS_H
#include "cVector3.h"
namespace cAudio
{
struct sEAXReverbParameters
{
sEAXReverbParameters(
float density = 1.0f,
float diffusion = 1.0f,
float gain = 0.32f,
float gainHF = 0.89f,
float gainLF = 0.0f,
float decayTime = 1.49f,
float decayHFRatio = 0.83f,
float decayLFRatio = 1.0f,
float reflectionsGain = 0.05f,
float reflectionsDelay = 0.007f,
cVector3 reflectionsPan = cVector3(0.0f, 0.0f, 0.0f),
float lateReverbGain = 1.26f,
float lateReverbDelay = 0.011f,
cVector3 lateReverbPan = cVector3(0.0f, 0.0f, 0.0f),
float echoTime = 0.25f,
float echoDepth = 0.0f,
float modulationTime = 0.25f,
float modulationDepth = 0.0f,
float airAbsorptionGainHF = 0.994f,
float hFReference = 5000.0f,
float lFReference = 250.0f,
float roomRolloffFactor = 0.0f,
bool decayHFLimit = true) :
Density(density), Diffusion(diffusion), Gain(gain), GainHF(gainHF), GainLF(gainLF),
DecayTime(decayTime), DecayHFRatio(decayHFRatio), DecayLFRatio(decayLFRatio),
ReflectionsGain(reflectionsGain), ReflectionsDelay(reflectionsDelay),
ReflectionsPan(reflectionsPan), LateReverbGain(lateReverbGain),
LateReverbDelay(lateReverbDelay), LateReverbPan(lateReverbPan),
EchoTime(echoTime), EchoDepth(echoDepth),ModulationTime(modulationTime),
ModulationDepth(modulationDepth), AirAbsorptionGainHF(airAbsorptionGainHF),
HFReference(hFReference), LFReference(lFReference),
RoomRolloffFactor(roomRolloffFactor), DecayHFLimit(decayHFLimit) { }
float Density;
float Diffusion;
float Gain;
float GainHF;
float GainLF;
float DecayTime;
float DecayHFRatio;
float DecayLFRatio;
float ReflectionsGain;
float ReflectionsDelay;
cVector3 ReflectionsPan;
float LateReverbGain;
float LateReverbDelay;
cVector3 LateReverbPan;
float EchoTime;
float EchoDepth;
float ModulationTime;
float ModulationDepth;
float AirAbsorptionGainHF;
float HFReference;
float LFReference;
float RoomRolloffFactor;
bool DecayHFLimit;
};
struct sReverbParameters
{
sReverbParameters(
float density = 1.0f,
float diffusion = 1.0f,
float gain = 0.32f,
float gainHF = 0.89f,
float decayTime = 1.49f,
float decayHFRatio = 0.83f,
float reflectionsGain = 0.05f,
float reflectionsDelay = 0.007f,
float lateReverbGain = 1.26f,
float lateReverbDelay = 0.011f,
float airAbsorptionGainHF = 0.994f,
float roomRolloffFactor = 0.0f,
bool decayHFLimit = true) :
Density(density), Diffusion(diffusion), Gain(gain), GainHF(gainHF),
DecayTime(decayTime), DecayHFRatio(decayHFRatio),
ReflectionsGain(reflectionsGain), ReflectionsDelay(reflectionsDelay),
LateReverbGain(lateReverbGain), LateReverbDelay(lateReverbDelay),
AirAbsorptionGainHF(airAbsorptionGainHF), RoomRolloffFactor(roomRolloffFactor),
DecayHFLimit(decayHFLimit) { }
float Density;
float Diffusion;
float Gain;
float GainHF;
float DecayTime;
float DecayHFRatio;
float ReflectionsGain;
float ReflectionsDelay;
float LateReverbGain;
float LateReverbDelay;
float AirAbsorptionGainHF;
float RoomRolloffFactor;
bool DecayHFLimit;
};
struct sChorusParameters
{
enum ChorusWaveform
{
ECW_SINUSOID,
ECW_TRIANGLE,
ECW_COUNT
};
sChorusParameters(
ChorusWaveform waveform = ECW_TRIANGLE,
int phase = 90,
float rate = 1.1f,
float depth = 0.1f,
float feedback = 0.25f,
float delay = 0.016f) :
Waveform(waveform), Phase(phase), Rate(rate), Depth(depth), Feedback(feedback),
Delay(delay) { }
ChorusWaveform Waveform;
int Phase;
float Rate;
float Depth;
float Feedback;
float Delay;
};
struct sDistortionParameters
{
sDistortionParameters(
float edge = 0.2f,
float gain = 0.05f,
float lowpassCutoff = 8000.0f,
float eqCenter = 3600.0f,
float eqBandwidth = 3600.0f) :
Edge(edge), Gain(gain), LowpassCutoff(lowpassCutoff), EqCenter(eqCenter),
EqBandwidth(eqBandwidth) { }
float Edge;
float Gain;
float LowpassCutoff;
float EqCenter;
float EqBandwidth;
};
struct sEchoParameters
{
sEchoParameters(
float delay = 0.1f,
float lRDelay = 0.1f,
float damping = 0.5f,
float feedback = 0.5f,
float spread = -1.0f) :
Delay(delay), LRDelay(lRDelay), Damping(damping), Feedback(feedback),
Spread(spread) { }
float Delay;
float LRDelay;
float Damping;
float Feedback;
float Spread;
};
struct sFlangerParameters
{
enum FlangerWaveform
{
EFW_SINUSOID,
EFW_TRIANGLE,
EFW_COUNT
};
sFlangerParameters(
FlangerWaveform waveform = EFW_TRIANGLE,
int phase = 0,
float rate = 0.27f,
float depth = 1.0f,
float feedback = -0.5f,
float delay = 0.002f) :
Waveform(waveform), Phase(phase), Rate(rate), Depth(depth), Feedback(feedback),
Delay(delay) { }
FlangerWaveform Waveform;
int Phase;
float Rate;
float Depth;
float Feedback;
float Delay;
};
struct sFrequencyShiftParameters
{
enum ShiftDirection
{
ESD_DOWN,
ESD_UP,
ESD_OFF,
ESD_COUNT
};
sFrequencyShiftParameters(
float frequency = 0.0f,
ShiftDirection left = ESD_DOWN,
ShiftDirection right = ESD_DOWN) :
Frequency(frequency), Left(left), Right(right) { }
float Frequency;
ShiftDirection Left;
ShiftDirection Right;
};
struct sVocalMorpherParameters
{
enum MorpherPhoneme
{
EMP_A,
EMP_E,
EMP_I,
EMP_O,
EMP_U,
EMP_AA,
EMP_AE,
EMP_AH,
EMP_AO,
EMP_EH,
EMP_ER,
EMP_IH,
EMP_IY,
EMP_UH,
EMP_UW,
EMP_B,
EMP_D,
EMP_F,
EMP_G,
EMP_J,
EMP_K,
EMP_L,
EMP_M,
EMP_N,
EMP_P,
EMP_R,
EMP_S,
EMP_T,
EMP_V,
EMP_Z,
ESD_COUNT
};
enum MorpherWaveform
{
EMW_SINUSOID,
EMW_TRIANGLE,
EMW_SAW,
EMW_COUNT
};
sVocalMorpherParameters(
MorpherPhoneme phonemeA = EMP_A,
MorpherPhoneme phonemeB = EMP_ER,
int phonemeACoarseTune = 0,
int phonemeBCoarseTune = 0,
MorpherWaveform waveform = EMW_SINUSOID,
float rate = 1.41f) :
PhonemeA(phonemeA), PhonemeB(phonemeB), PhonemeACoarseTune(phonemeACoarseTune),
PhonemeBCoarseTune(phonemeBCoarseTune), Waveform(waveform), Rate(rate) { }
MorpherPhoneme PhonemeA;
MorpherPhoneme PhonemeB;
int PhonemeACoarseTune;
int PhonemeBCoarseTune;
MorpherWaveform Waveform;
float Rate;
};
struct sPitchShifterParameters
{
sPitchShifterParameters(
int coarseTune = 12,
int fineTune = 0) :
CoarseTune(coarseTune), FineTune(fineTune) { }
int CoarseTune;
int FineTune;
};
struct sRingModulatorParameters
{
enum ModulatorWaveform
{
EMW_SINUSOID,
EMW_SAW,
EMW_SQUARE,
EMW_COUNT
};
sRingModulatorParameters(
float frequency = 440.0f,
float highPassCutoff = 800.0f,
ModulatorWaveform waveform = EMW_SINUSOID) :
Frequency(frequency), HighPassCutoff(highPassCutoff), Waveform(waveform) { }
float Frequency;
float HighPassCutoff;
ModulatorWaveform Waveform;
};
struct sAutowahParameters
{
sAutowahParameters(
float attackTime = 0.06f,
float releaseTime = 0.06f,
float resonance = 1000.0f,
float peakGain = 11.22f) :
AttackTime(attackTime), ReleaseTime(releaseTime), Resonance(resonance),
PeakGain(peakGain) { }
float AttackTime;
float ReleaseTime;
float Resonance;
float PeakGain;
};
struct sCompressorParameters
{
sCompressorParameters(
bool active = true) :
Active(active) { }
bool Active;
};
struct sEqualizerParameters
{
sEqualizerParameters(
float lowGain = 1.0f,
float lowCutoff = 200.0f,
float mid1Gain = 1.0f,
float mid1Center = 500.0f,
float mid1Width = 1.0f,
float mid2Gain = 1.0f,
float mid2Center = 3000.0f,
float mid2Width = 1.0f,
float highGain = 1.0f,
float highCutoff = 6000.0f) :
LowGain(lowGain), LowCutoff(lowCutoff), Mid1Gain(mid1Gain),
Mid1Center(mid1Center), Mid1Width(mid1Width), Mid2Gain(mid2Gain),
Mid2Center(mid2Center), Mid2Width(mid2Width), HighGain(highGain),
HighCutoff(highCutoff) { }
float LowGain;
float LowCutoff;
float Mid1Gain;
float Mid1Center;
float Mid1Width;
float Mid2Gain;
float Mid2Center;
float Mid2Width;
float HighGain;
float HighCutoff;
};
};
#endif //! IEFFECTPARAMETERS_H