Comments (4)
It has been a long time since I've worked on this project but I pulled up the function where I averaged the filter output. Hopefully this helps.
void calculate_iir_filter_bank() {
float avg, x;
for (int i = 0; i < NUM_AUDIO_ANALYSIS_BANDS; i++) { // NUM_AUDIO_ANALYSIS_BANDS was 7 in my case to match MSGEQ7
avg = 0.0f;
dsps_biquad_f32(buffer, filter_output, N_SAMPLES, filter_coefficients[i], filter_delay_lines[i]);
for (int t = 0; t < N_SAMPLES; t++)
{
x = fabs(filter_output[t]) * 4.0f;
avg += x;
}
avg /= (float)N_SAMPLES;
avg *= filters_amp_adjustments[i];
if (avg > 1) {
avg = 1;
}
averages[i] = (SMOOTHING_FACTOR * averages[i]) + ((1 - SMOOTHING_FACTOR) * avg);
}
}
from esp-dsp.
Hi @drewandre
For this purpose better if you will use IIR filter bank.
You can look to the esp-dsp/examples/iir.
There you will find how to generate a single IIR filter:
ret = dsps_biquad_gen_lpf_f32(coeffs_lpf, freq, qFactor);
The frequency is just: your_frequency/sample_frequency. In your case it will be 163/44100, and so on. You will have 7 filters.
The Q factor you have to play with this parameter.
In this example you can tune your filters.
At the output of your filters you make:
average[i] = K*average[i] + (1 - K)*absf(output[i]);
Where:
i - bank number from 0 to 6
K - smoothing coefficient 0.9..0.9999, 0.9999 - very smooth.
output[i] - output of i'th filter.
average[i] - result of your equalizer for i'th bank
absf - module operation.
Regards,
Dmitry
from esp-dsp.
@dmitry1945 thanks, this was very helpful!
from esp-dsp.
Hello sir. I applaud the effort behind this wonderful project!
I'd like some clarification please -- assuming the following for a single filter instance:
dsps_biquad_f32(x, y, N, coeffs_lpf, w_lpf);
How did the output y
(array of floats) compute to output[i]
(single float value)? I'm I missing something?
Regards.
from esp-dsp.
Related Issues (20)
- Notable speed improvement of floating point FIR on ESP32-S3 HOT 1
- dsps_fft2r_sc16_aes3 different result from dsps_fft2r_sc16_ansi, incorrect FFT (DSP-102) HOT 7
- SOLVED: A 1½cycle/tap fp32 FIR filter of arbitrary length and decimation (DSP-101) HOT 6
- Extended Kalman Filter 计算速度 (DSP-105) HOT 4
- Wrong output when running dsps_mulc_s16_ functions (DSP-108) HOT 3
- Feature Request: Python wrapper (DSP-109)
- ESP-IDF 5.1 Support? (DSP-110) HOT 8
- Using LyraT to sample input, IIR functions to process, then output. The dsps_biquad_gen_xxx_f32 function creates garbage coefficients, I can't validate dsps_biquad_f32 as working. (DSP-111) HOT 3
- Two environments with different actions were specified for the same target (DSP-115) HOT 4
- esp32s3 fft4real hangs if fft4r related codes are removed. (DSP-117) HOT 4
- SOLVED: TRIAC delayed-trigger compensation routine for ESP32(-S3) (DSP-119) HOT 2
- FIR Convolution algorithm error (DSP-120) HOT 4
- dsps_dotprod_f32 is slow on first call (examples/dotprod) (DSP-121) HOT 1
- Mismatch between latest repository tag and latest component manager tag (DSP-122) HOT 4
- IIR inconsistencies and documentation problems (DSP-123)
- FFT is wrong by factor 2. Violation of the Parseval–Plancherel identity (DSP-130) HOT 2
- 是否会支持esp-p4的芯片的指令 (DSP-132) HOT 2
- esp-dsp支持idf的最新master分支吗 (DSP-134) HOT 1
- 作为一个信号处理的库,是否应该包括IFFT (DSP-135)
- Compile `esp-dsp` for `IDF_TARGET=linux` (DSP-136)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from esp-dsp.