#ifndef ALC_FRONT_STABLIZER_H #define ALC_FRONT_STABLIZER_H #include #include #include "almalloc.h" #include "core/bufferline.h" #include "filters/splitter.h" struct FrontStablizer { static constexpr size_t DelayLength{256u}; FrontStablizer(size_t numchans) : DelayBuf{numchans} { } alignas(16) std::array Side{}; alignas(16) std::array MidDirect{}; alignas(16) std::array MidDelay{}; alignas(16) std::array TempBuf{}; BandSplitter MidFilter; alignas(16) FloatBufferLine MidLF{}; alignas(16) FloatBufferLine MidHF{}; using DelayLine = std::array; al::FlexArray DelayBuf; static std::unique_ptr Create(size_t numchans) { return std::unique_ptr{new(FamCount(numchans)) FrontStablizer{numchans}}; } DEF_FAM_NEWDEL(FrontStablizer, DelayBuf) }; #endif /* ALC_FRONT_STABLIZER_H */