Filter improvement: LP and HP filters, added test function

The -3 dB level at cut-off frequency is now maintained for multiple
iterations.
This commit is contained in:
Andreas Eversberg
2017-01-15 11:08:42 +01:00
parent 799b96c801
commit ac0da3f76e
10 changed files with 186 additions and 32 deletions

View File

@@ -48,7 +48,7 @@ void scrambler_init(void)
void scrambler_setup(scrambler_t *scrambler, int samplerate)
{
filter_lowpass_init(&scrambler->lp, CARRIER_HZ - FILTER_BELOW, samplerate);
filter_lowpass_init(&scrambler->lp, CARRIER_HZ - FILTER_BELOW, samplerate, FILTER_TURNS);
scrambler->carrier_phaseshift256 = 256.0 / ((double)samplerate / CARRIER_HZ);
}
@@ -77,7 +77,7 @@ void scrambler(scrambler_t *scrambler, int16_t *samples, int length)
scrambler->carrier_phase256 = phase;
/* cut off carrier frequency and modulation above carrier frequency */
filter_lowpass_process(&scrambler->lp, spl, length, FILTER_TURNS);
filter_process(&scrambler->lp, spl, length);
for (i = 0; i < length; i++) {
/* store result */

View File

@@ -1,9 +1,9 @@
#include "../common/filter.h"
typedef struct scrambler {
double carrier_phaseshift256; /* carrier phase shift per sample */
double carrier_phase256; /* current phase of carrier frequency */
filter_lowpass_t lp; /* filter to remove carrier frequency */
double carrier_phaseshift256; /* carrier phase shift per sample */
double carrier_phase256; /* current phase of carrier frequency */
filter_t lp; /* filter to remove carrier frequency */
} scrambler_t;
void scrambler_init(void);