diff --git a/app/src/main/rs/cic.rsh b/app/src/main/rs/cic.rsh index 5c8ab79..455dea5 100644 --- a/app/src/main/rs/cic.rsh +++ b/app/src/main/rs/cic.rsh @@ -21,11 +21,6 @@ typedef struct { int prev_comb, prev_int; } cic_t; -static const int cic_cascade_order = 5; -typedef struct { - cic_t cic[cic_cascade_order]; -} cic_cascade_t; - static int cic_comb(cic_t *cic, int input) { int output = input - cic->prev_comb; @@ -38,17 +33,17 @@ static int cic_int(cic_t *cic, int input) return cic->prev_int = input + cic->prev_int; } -static int cic_comb_cascade(cic_cascade_t *cascade, int input) +static int cic_comb_cascade(cic_t *cascade, int input, int order) { - for (int i = 0; i < cic_cascade_order; ++i) - input = cic_comb(cascade->cic + i, input); + for (int i = 0; i < order; ++i) + input = cic_comb(cascade + i, input); return input; } -static int cic_int_cascade(cic_cascade_t *cascade, int input) +static int cic_int_cascade(cic_t *cascade, int input, int order) { - for (int i = 0; i < cic_cascade_order; ++i) - input = cic_int(cascade->cic + i, input); + for (int i = 0; i < order; ++i) + input = cic_int(cascade + i, input); return input; } diff --git a/app/src/main/rs/stft.rsh b/app/src/main/rs/stft.rsh index a71f1b0..e5aec60 100644 --- a/app/src/main/rs/stft.rsh +++ b/app/src/main/rs/stft.rsh @@ -57,12 +57,14 @@ static void spectrum_analyzer(int amplitude) static complex_t output[radix2_N]; #if 1 - static cic_cascade_t cascade; - int tmp = cic_int_cascade(&cascade, amplitude); + const int order = 5; + const int gain = pown(M, order); + static cic_t cascade[order]; + int tmp = cic_int_cascade(&cascade, amplitude, order); if (++m < M) return; m = 0; - amplitude = cic_comb_cascade(&cascade, tmp); + amplitude = cic_comb_cascade(&cascade, tmp, order) / gain; #else static int sum; sum += amplitude;