//====================================================================== // dsp_audio.h //====================================================================== #ifndef __dsp_audio_h__ #define __dsp_audio_h__ #include #include #include #include "config.h" namespace dsp_audio { void init(dsp_audio_cfg& c); void update(int msec); void mute_rx(); void unmute_rx(); void mute_all_tx(); void mute_mic_in(); void unmute_mic_in(); void mute_line_in(); void unmute_line_in(); void mute_usb_in(); void unmute_usb_in(); void mute_twotone_in(); void unmute_twotone_in(); void mute_spkr_out(); void unmute_spkr_out(); void mute_line_out(); void unmute_line_out(); void mute_usb_out(); void unmute_usb_out(); //====================================================================== class bp_filter { public: bp_filter(); bp_filter(AudioFilterFIR& f, AudioAmplifier& a); void init(const bpf_config& cfg); void set_band(double f1, double f2); void set_freq_lo(double f); void set_freq_hi(double f); void set_center_and_width(double c, double w); void set_center(double c); void set_width(double w); void set_gain(double g); void enable(); void disable(); private: double freq_lo; double freq_hi; short int window; short int coeff; float recovery; // recovery amplifier value AudioFilterFIR& filter; // = &filterRX; AudioAmplifier& amp; short coefficients[NUM_COEFFICIENTS]; bool setup_complete; }; //====================================================================== class notch_filter { public: notch_filter(notch_config& cfg); void enable(); void disable(); inline bool is_enabled() const { return config_.enabled; } private: notch_config& config_; double freq_; double q_; }; //====================================================================== class speech_comp { public: speech_comp(comp_config& cfg); void update(); void enable(); void disable(); inline bool is_enabled() const { return config_.enabled; } private: comp_config& config_; AudioEffectCompressor& comp_; AudioAmplifier& amp_; AudioAnalyzeRMS& rms_; float env_ = 1.0; float alpha_ = 0.8; }; }; #endif //====================================================================== // EOF //======================================================================