@ -6,66 +6,8 @@
* Chip Audette ( OpenAudio ) Feb 2017
* Chip Audette ( OpenAudio ) Feb 2017
* and of course , to PJRC for the Teensy and Teensy Audio Library
* and of course , to PJRC for the Teensy and Teensy Audio Library
*
*
* The development of the Controlled Envelope Single Side Band ( CESSB )
* was done by Dave Hershberger , W9GR . Many thanks to Dave .
* The following description is mostly taken
* from Frank , DD4WH and is on line at the GNU Radio site , ref :
* https : //github-wiki-see.page/m/df8oe/UHSDR/wiki/Controlled-Envelope-Single-Sideband-CESSB
*
* Controlled Envelope Single Sideband is an invention by Dave Hershberger
* W9GR with the aim to " allow your rig to output more average power while
* keeping peak envelope power PEP the same " . The increase in perceived
* loudness can be up to 4 dB without any audible increase in distortion
* and without making you sound " processed " ( Hershberger 2014 , 2016 b ) .
*
* The principle to achieve this is relatively simple . The process
* involves only audio baseband processing which can be done digitally in
* software without the need for modifications in the hardware or messing
* with the RF output of your rig .
*
* Controlled Envelope Single Sideband can be produced using three
* processing blocks making up a complete CESSB system :
* 1. An SSB modulator . This is implemented as a Weaver system to allow
* minimum ( 12 kHz ) decimated sample rate with the output of I & Q
* signals ( a complex SSB signal ) .
* 2. A baseband envelope clipper . This takes the modulus of the I & Q
* signals ( also called the magnitude ) , which is sqrt ( I * I + Q * Q )
* and divides the I & Q signals by the modulus , IF the signal is
* larger than 1.0 . If not , the signal remains untouched . After
* clipping , the signal is lowpass filtered with a linear phase FIR
* low pass filter with a stopband frequency of 3.0 kHz
* 3. An overshoot controller . This does something similar as the
* envelope clipper : Again , the modulus is calculated ( but now on
* the basis of the current and two preceding and two subsequent
* samples ) . If the signals modulus is larger than 1 ( clipping ) ,
* the signals I and Q are divided by the maximum of 1 or of
* ( 1.9 * signal ) . That means the clipping is overcompensated by 1.9
* which leads to a much better suppression of the overshoots from
* the first two stages . Finally , the resulting signal is again
* lowpass - filtered with a linear phase FIR filter with stopband
* frequency of 3.0 khz
*
* It is important that the sample rate is high enough so that the higher
* frequency components of the output of the modulator , clipper and
* overshoot controller do not alias back into the desired signal . Also
* all the filters should be linear phase filters ( FIR , not IIR ) .
*
* This CESSB system can reduce the overshoot of the SSB modulator from
* 61 % to 1.3 % , meaning about 2.5 times higher perceived SSB output power
* ( Hershberger 2014 ) .
*
* References :
* 1 - Hershberger , D . L . ( 2014 ) : Controlled Envelope Single Sideband . QEX
* November / December 2014 pp3 - 13.
* http : //www.arrl.org/files/file/QEX_Next_Issue/2014/Nov-Dec_2014/Hershberger_QEX_11_14.pdf
* 2 - Hershberger , D . L . ( 2016 a ) : External Processing for Controlled
* Envelope Single Sideband . - QEX January / February 2016 pp9 - 12.
* http : //www.arrl.org/files/file/QEX_Next_Issue/2016/January_February_2016/Hershberger_QEX_1_16.pdf
* 3 - Hershberger , D . L . ( 2016 b ) : Understanding Controlled Envelope Single
* Sideband . - QST February 2016 pp30 - 36.
* 4 - Forum discussion on CESSB on the Flex - Radio forum ,
* https : //community.flexradio.com/discussion/6432965/cessb-questions
*
* Weaver Method of SSB : Note that this class includes a good umplementation
* Weaver Method of SSB : Note that this class includes a good umplementation
* of the Weaver method . To use this without invoking the CESSB corrections ,
* of the Weaver method . To use this without invoking the CESSB corrections ,
* just keep the input peak level below 1.0 . One could disable CESSB by
* just keep the input peak level below 1.0 . One could disable CESSB by