#pragma once #include #include #include #include namespace audio { struct Effect { struct Property { using Value = std::variant; int id; Value def; Value min; Value max; }; std::map properties; }; class EffectControl { public: EffectControl(const Effect* effect) : effect(effect) {}; virtual ~EffectControl() = default; virtual void set(const std::string& name, Effect::Property::Value value) = 0; protected: const Effect* effect = nullptr; }; struct Acoustics { float reverbGain; float reverbReflectionsDelay; float reverbLateReflectionsDelay; float reverbDecayTime; float reverbRoomRolloff; float reverbAbsorption; }; }