Comments (2)
Hello and thank you for your interest in this project!
Small disclaimer at the beginning, I have not worked on ANC nor digital signal processing since finishing this project ~3-4 years ago, so I may be missing something :)
I know this is not clear from the code, but I believe that in the end I used Mains/offline_sec_path_modelling.cpp
, Mains/record_noise.cpp
or Mains/record_test_data.cpp
only to record the white noise, without outputting any correction signal (as you can see in Mains/offline_sec_path_modelling.cpp
, the processing buffer is never copied to the playback buffer, as it is done in the Mains/feedforward_anc.cpp). Then I did offline secondary path modelling in octave, using Scripts/OctaveCode/lms_offlince_sec_path_modelling.m
or Scripts/OctaveCode/rls_offline_sec_path_modelling.m
), where the adaptive filter is supplied with the error signal calculated as you've described.
In a typical setup where an adaptive filter is used for unknown system identification, yes it is true that you have to use something like e(n) = d(n) - y(n);
and provide that to the adaptive filter, as shown in the diagram below.
In the case of the active noise control system, the e(n) = d(n) - y(n);
part does not happen during digital signals processing, but the acoustic waves that carry the noise signal (reference_generated_for_processing
noise in that case) and the output from the filter (emitted by the speaker) interfere and the error microphone captures the resulting e(n)
signal.
Maybe it is worth trying to modify this code to actually output the correction signal from the adaptive filter (noise would have to be played by a separate speaker though, as the playback device used here would have to emit only the correction signal) and this way the estimate of the secondary path would be more accurate.
I hope that helps!
from rpianc.
Thanks for your help. I am now start to debug the anc system.
from rpianc.
Related Issues (10)
- raspberry pi xrun issue HOT 13
- Link error inquire HOT 1
- installation HOT 5
- Using the project in a room instead of in the headphone HOT 3
- Hello, how can I connect Pi HOT 2
- Excuse me, how to adjust my parameters HOT 1
- Playback underruns and capture overruns HOT 2
- How to understand the previous_reference_samples variable in the processing_feedforward_anc function? HOT 2
- performance issue on Raspberry 3A+ or 4B, "capture overrun occurred" and "playback underrun occurred" printed HOT 1
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 rpianc.