#ifndef AUDIOEFFECTCHORUS_H #define AUDIOEFFECTCHORUS_H #include "servers/audio/audio_effect.h" class AudioEffectChorus; class AudioEffectChorusInstance : public AudioEffectInstance { GDCLASS(AudioEffectChorusInstance,AudioEffectInstance) friend class AudioEffectChorus; Ref base; Vector audio_buffer; unsigned int buffer_pos; unsigned int buffer_mask; AudioFrame filter_h[4]; uint64_t cycles[4]; void _process_chunk(const AudioFrame *p_src_frames,AudioFrame *p_dst_frames,int p_frame_count); public: virtual void process(const AudioFrame *p_src_frames,AudioFrame *p_dst_frames,int p_frame_count); }; class AudioEffectChorus : public AudioEffect { GDCLASS(AudioEffectChorus,AudioEffect) friend class AudioEffectChorusInstance; public: enum { MAX_DELAY_MS=50, MAX_DEPTH_MS=20, MAX_WIDTH_MS=50, MAX_VOICES=4, CYCLES_FRAC=16, CYCLES_MASK=(1< instance(); AudioEffectChorus(); }; #endif // AUDIOEFFECTCHORUS_H