//====================================================================== // tx_audio_proc.ino // // Classes/functions for processing transmit audio. //====================================================================== #include "tx_audio_proc.h" SpeechCompressor::SpeechCompressor(AudioEffectCompressor& comp, AudioAmplifier& amp, AudioAnalyzeRMS& rms): _compress(comp), _amp(amp), _rms(rms) { } //void SpeechCompressor::config(AudioEffectCompressor* comp, AudioAnalyzeRMS* rms) //{ // _compress = comp; // _rms = rms; //} bool SpeechCompressor::isEnabled() const { return _enabled; } void SpeechCompressor::enable() { _enabled = true; _compress.begin(1, 0.1, 20); // Need to make configurable _amp.gain(2.0); } void SpeechCompressor::disable() { _enabled = false; _compress.disable(); _amp.gain(1.0); } // Speech compressor code based on post by 'hyperdyne': https://forum.pjrc.com/threads/36245-Changing-Pitch-of-Voice void SpeechCompressor::update() { float rms_cur; if (_enabled && _rms.available()) { rms_cur = _rms.read(); _env = rms_cur + (_alpha * (_env - rms_cur)); _compress.update_pwr(_env); } } //====================================================================== // EOF //======================================================================