// // AudioEffectOptions.cpp // libraries/audio/src // // Copyright 2013 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // #include "AudioEffectOptions.h" static const QString BANDWIDTH_HANDLE = "bandwidth"; static const QString PRE_DELAY_HANDLE = "preDelay"; static const QString LATE_DELAY_HANDLE = "lateDelay"; static const QString REVERB_TIME_HANDLE = "reverbTime"; static const QString EARLY_DIFFUSION_HANDLE = "earlyDiffusion"; static const QString LATE_DIFFUSION_HANDLE = "lateDiffusion"; static const QString ROOM_SIZE_HANDLE = "roomSize"; static const QString DENSITY_HANDLE = "density"; static const QString BASS_MULT_HANDLE = "bassMult"; static const QString BASS_FREQ_HANDLE = "bassFreq"; static const QString HIGH_GAIN_HANDLE = "highGain"; static const QString HIGH_FREQ_HANDLE = "highFreq"; static const QString MOD_RATE_HANDLE = "modRate"; static const QString MOD_DEPTH_HANDLE = "modDepth"; static const QString EARLY_GAIN_HANDLE = "earlyGain"; static const QString LATE_GAIN_HANDLE = "lateGain"; static const QString EARLY_MIX_LEFT_HANDLE = "earlyMixLeft"; static const QString EARLY_MIX_RIGHT_HANDLE = "earlyMixRight"; static const QString LATE_MIX_LEFT_HANDLE = "lateMixLeft"; static const QString LATE_MIX_RIGHT_HANDLE = "lateMixRight"; static const QString WET_DRY_MIX_HANDLE = "wetDryMix"; static const float BANDWIDTH_DEFAULT = 10000.0f; static const float PRE_DELAY_DEFAULT = 20.0f; static const float LATE_DELAY_DEFAULT = 0.0f; static const float REVERB_TIME_DEFAULT = 2.0f; static const float EARLY_DIFFUSION_DEFAULT = 100.0f; static const float LATE_DIFFUSION_DEFAULT = 100.0f; static const float ROOM_SIZE_DEFAULT = 50.0f; static const float DENSITY_DEFAULT = 100.0f; static const float BASS_MULT_DEFAULT = 1.5f; static const float BASS_FREQ_DEFAULT = 250.0f; static const float HIGH_GAIN_DEFAULT = -6.0f; static const float HIGH_FREQ_DEFAULT = 3000.0f; static const float MOD_RATE_DEFAULT = 2.3f; static const float MOD_DEPTH_DEFAULT = 50.0f; static const float EARLY_GAIN_DEFAULT = 0.0f; static const float LATE_GAIN_DEFAULT = 0.0f; static const float EARLY_MIX_LEFT_DEFAULT = 20.0f; static const float EARLY_MIX_RIGHT_DEFAULT = 20.0f; static const float LATE_MIX_LEFT_DEFAULT = 90.0f; static const float LATE_MIX_RIGHT_DEFAULT = 90.0f; static const float WET_DRY_MIX_DEFAULT = 50.0f; static void setOption(QScriptValue arguments, const QString name, float defaultValue, float& variable) { variable = arguments.property(name).isNumber() ? (float)arguments.property(name).toNumber() : defaultValue; } AudioEffectOptions::AudioEffectOptions(QScriptValue arguments) { setOption(arguments, BANDWIDTH_HANDLE, BANDWIDTH_DEFAULT, _bandwidth); setOption(arguments, PRE_DELAY_HANDLE, PRE_DELAY_DEFAULT, _preDelay); setOption(arguments, LATE_DELAY_HANDLE, LATE_DELAY_DEFAULT, _lateDelay); setOption(arguments, REVERB_TIME_HANDLE, REVERB_TIME_DEFAULT, _reverbTime); setOption(arguments, EARLY_DIFFUSION_HANDLE, EARLY_DIFFUSION_DEFAULT, _earlyDiffusion); setOption(arguments, LATE_DIFFUSION_HANDLE, LATE_DIFFUSION_DEFAULT, _lateDiffusion); setOption(arguments, ROOM_SIZE_HANDLE, ROOM_SIZE_DEFAULT, _roomSize); setOption(arguments, DENSITY_HANDLE, DENSITY_DEFAULT, _density); setOption(arguments, BASS_MULT_HANDLE, BASS_MULT_DEFAULT, _bassMult); setOption(arguments, BASS_FREQ_HANDLE, BASS_FREQ_DEFAULT, _bassFreq); setOption(arguments, HIGH_GAIN_HANDLE, HIGH_GAIN_DEFAULT, _highGain); setOption(arguments, HIGH_FREQ_HANDLE, HIGH_FREQ_DEFAULT, _highFreq); setOption(arguments, MOD_RATE_HANDLE, MOD_RATE_DEFAULT, _modRate); setOption(arguments, MOD_DEPTH_HANDLE, MOD_DEPTH_DEFAULT, _modDepth); setOption(arguments, EARLY_GAIN_HANDLE, EARLY_GAIN_DEFAULT, _earlyGain); setOption(arguments, LATE_GAIN_HANDLE, LATE_GAIN_DEFAULT, _lateGain); setOption(arguments, EARLY_MIX_LEFT_HANDLE, EARLY_MIX_LEFT_DEFAULT, _earlyMixLeft); setOption(arguments, EARLY_MIX_RIGHT_HANDLE, EARLY_MIX_RIGHT_DEFAULT, _earlyMixRight); setOption(arguments, LATE_MIX_LEFT_HANDLE, LATE_MIX_LEFT_DEFAULT, _lateMixLeft); setOption(arguments, LATE_MIX_RIGHT_HANDLE, LATE_MIX_RIGHT_DEFAULT, _lateMixRight); setOption(arguments, WET_DRY_MIX_HANDLE, WET_DRY_MIX_DEFAULT, _wetDryMix); } AudioEffectOptions::AudioEffectOptions(const AudioEffectOptions &other) : QObject() { *this = other; } AudioEffectOptions& AudioEffectOptions::operator=(const AudioEffectOptions &other) { _bandwidth = other._bandwidth; _preDelay = other._preDelay; _lateDelay = other._lateDelay; _reverbTime = other._reverbTime; _earlyDiffusion = other._earlyDiffusion; _lateDiffusion = other._lateDiffusion; _roomSize = other._roomSize; _density = other._density; _bassMult = other._bassMult; _bassFreq = other._bassFreq; _highGain = other._highGain; _highFreq = other._highFreq; _modRate = other._modRate; _modDepth = other._modDepth; _earlyGain = other._earlyGain; _lateGain = other._lateGain; _earlyMixLeft = other._earlyMixLeft; _earlyMixRight = other._earlyMixRight; _lateMixLeft = other._lateMixLeft; _lateMixRight = other._lateMixRight; _wetDryMix = other._wetDryMix; return *this; } QScriptValue AudioEffectOptions::constructor(QScriptContext* context, QScriptEngine* engine) { return engine->newQObject(new AudioEffectOptions(context->argument(0))); }