+// the output all reflections are painted on
+ double **dsp_in;
+// may have to expand it for fft windows larger than the reflected time
+ int dsp_in_allocated;
+// total samples read into dsp_in by the FFT
+ int dsp_in_length;
+// new value calculated by the FFT readers
+ int new_dsp_length;
+// total spectrogram frames generated by the FFT. Each channel overwrites the same
+// spectrograms
+ int new_spectrogram_frames;
+
+// source channels of reflections
+ int **ref_channels;
+// destination offsets of reflections
+ int **ref_offsets;
+// levels of reflections
+ double **ref_levels;
+// detect seeking
+ int64_t last_position;
+// start_position / sample_rate
+ double start_pos;
+// get_direction fwd=1, rev=-1, stop=0
+ int dir;
+ DB db;
+
+ ReverbEngine *engine;
+ ReverbFFT **fft;
+ double *envelope;
+ int need_reconfigure;
+};
+
+class ReverbClientFrame : public CompressorFreqFrame
+{
+public:
+ ReverbClientFrame(int size);
+ ~ReverbClientFrame();
+};
+
+
+class ReverbFFT :public CrossfadeFFT
+{
+public:
+ ReverbFFT(Reverb *plugin, int channel);
+ ~ReverbFFT();
+
+ int signal_process();
+ int post_process();
+ int read_samples(int64_t output_sample, int samples, Samples *buffer);
+
+ Reverb *plugin;
+ ReverbClientFrame *frame;
+ int channel;
+};
+
+
+class ReverbPackage : public LoadPackage
+{
+public:
+ ReverbPackage();
+ int channel;
+};
+
+
+class ReverbUnit : public LoadClient
+{
+public:
+ ReverbUnit(ReverbEngine *engine, Reverb *plugin);
+ ~ReverbUnit();
+ void process_package(LoadPackage *package);
+ ReverbEngine *engine;
+ Reverb *plugin;