#pragma once #include "util/memory.h" #include "engine/channelhandle.h" #include #include enum class EffectEnableState { Disabled, Enabled, Disabling, Enabling }; enum class EffectBackendType { BuiltIn, LV2, Unknown }; enum class SignalProcessingStage { Prefader, Postfader }; inline uint qHash(SignalProcessingStage stage) { return static_cast(stage); }; enum class EffectChainMixMode { DrySlashWet = 0, // Crossfade between dry and wet DryPlusWet, // Add wet to dry NumMixModes // The number of mix modes. Also used to represent "unknown". }; constexpr int kNumEffectsPerUnit = 4; // NOTE: Setting this to true will enable string manipulation and calls to // qDebug() in the audio engine thread. That may cause audio dropouts, so only // enable this when debugging the effects system. constexpr bool kEffectDebugOutput = false; class EffectState; // For sending EffectStates along the MessagePipe typedef ChannelHandleMap EffectStatesMap; typedef std::array EffectStatesMapArray; class EffectRack; typedef QSharedPointer EffectRackPointer; class StandardEffectRack; typedef QSharedPointer StandardEffectRackPointer; class EqualizerRack; typedef QSharedPointer EqualizerRackPointer; class QuickEffectRack; typedef QSharedPointer QuickEffectRackPointer; class OutputEffectRack; typedef QSharedPointer OutputEffectRackPointer; class EffectSlot; typedef QSharedPointer EffectSlotPointer; class EffectParameterSlot; typedef QSharedPointer EffectParameterSlotPointer; class EffectButtonParameterSlot; typedef QSharedPointer EffectButtonParameterSlotPointer; class EffectManifest; typedef QSharedPointer EffectManifestPointer; class Effect; typedef QSharedPointer EffectPointer; class EffectParameterSlotBase; typedef QSharedPointer EffectParameterSlotBasePointer; class EffectChainSlot; typedef QSharedPointer EffectChainSlotPointer;