digibox/digibox/dsp_audio.h

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
//======================================================================