121 lines
2.5 KiB
C++
121 lines
2.5 KiB
C++
//======================================================================
|
|
// dsp_audio.h
|
|
//======================================================================
|
|
|
|
#ifndef __dsp_audio_h__
|
|
#define __dsp_audio_h__
|
|
|
|
#include <Audio.h>
|
|
#include <dynamicFilters.h>
|
|
#include <effect_compressor_fb.h>
|
|
#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
|
|
//======================================================================
|