Kodi Community Forum
WIP adsp.biquad.filters - Printable Version

+- Kodi Community Forum (https://forum.kodi.tv)
+-- Forum: Development (https://forum.kodi.tv/forumdisplay.php?fid=32)
+--- Forum: Add-ons (https://forum.kodi.tv/forumdisplay.php?fid=26)
+---- Forum: Audio DSP (https://forum.kodi.tv/forumdisplay.php?fid=235)
+---- Thread: WIP adsp.biquad.filters (/showthread.php?tid=218756)

Pages: 1 2 3 4 5 6 7 8 9 10


adsp.biquad.filters - AchimTuran - 2015-02-23

Hi community, today I will introduce my work on adsp.biquad.filters addon. With this addon we will finally have the so long awaited audio equalizer in Kodi, which is based on my signal processing library asplib. The addon and the library isn't finish, but I want to show some results and open a new thread for discussion.

The filter is implemented in C/C++ and embedded in a DLL. This allows me to load the DLL with Matlab and then analyze the output signal. Really great work flow. Big Grin
So it was possible to measure the frequency response of a constant-Q 10 band equalizer:
Image

Matlab screenshot:
Image

Next steps are:
  • improve asplib error detection to make it more stable
  • create first version of the addon with adsp.template
  • post some gui screenshots
  • release first version for testing
  • run some benchmarks

Short overview about technical details:
  • EQ consists of digital Biquad filters with constant-Q design equations
  • at the moment there is only a native [C/C++-Code] implementation
  • variable amount of Biquads, e.g. it will be possible to have 10 Band- (beginner) or 31 Band-EQ (experts)

The first version of this addon will be really simple and you can only set the parameters for all channels. But in future versions I will add:
  • presets (like vlc or other players)
  • separate settings for all output channels of the configurated audio channel layout
  • custom mode creation (create a custom eq for pre- or post mode of our new adsp-addon-handling feature)
  • variable band configuration
  • implement optimizations for SSE3, AVX, NEON,...
  • integrate my LibXConvolver library to run an FIR-Filter as EQ with linear phase response

EDIT: Because a Biquad filter is very flexible (you can use it as low-, high-, bandpass filter or as notch filter), I renamed the addon to adsp.biquad.filters. I hope you guys like the new name. Some more news will follow.


RE: adsp.parametric.eq - prubio - 2015-02-23

superb!
I'll follow he threat to see the outcome. Looks promising.


RE: adsp.parametric.eq - leonpierresusan - 2015-03-02

Awesome work! Thank you for this.


RE: adsp.parametric.eq - jackyNIX - 2015-03-02

Nice! I've got an amp, but no eq.

A mixer would be nice too. Downmixing 5.1 content to 2.0, well it's like a lot of explosions and no speech. More control over the channels would be nice.


RE: adsp.parametric.eq - pike - 2015-03-02

nice Wisler!


RE: adsp.parametric.eq - GEEMac - 2015-03-12

Excellent work Wisler,

I subbed this thread with email notifications so I can watch your work as you go along.
I have quite a few programs for my antenna and radio design work except Matlab. I tried the demo, but that was a bit limited. I'll have to start saving my pennies for a full copy of it since there is quite a few scripts written for it for antenna design and communications in general.

As I mentioned in the other thread, that I am an Amateur Radio Operator. I have a major project going on now for EME work (Earth Moon Earth) work. There was even EVE communications (Earth Venus Earth) from a group in Germany back around 2009. I'll stick with the Moon for now.
Just in the process of Parabolic dish feed design and your ideas of the audio filtering may come in handy once I get things up and running. I will be operating a 10 foot BUD with a set of designed feeds for communications ranging from 23cm to 3cm bands to bounce my signal off the Moon to other amateurs via voice or JT-65, WSPT and WSPR digital modes.

There is a growing market for folks like yourself that can code for communications audio software. You may want to look into that.

http://en.wikipedia.org/wiki/Earth%E2%80%93Moon%E2%80%93Earth_communication

http://www.arrl.org/news/german-amsat-team-transmits-receives-signals-from-venus



But I digressed...

Getting back on track with the subject of DRS
I'm looking forward to when you are able to have the add-on set for Kodi, Linux. Here are some other links and Papers written On DRS for you.
You may already been to these links already, but I'll post for others that may have an interest.
System Admins, if these below links are not acceptable, please excuse my ignorance in posting them and feel free to remove them without any hard feelings on my part.

General information explaining DRS
http://en.wikipedia.org/wiki/Dynamic_range_compression

Showing some information using Linkwitz-Riley Crossover Filters and Simulink Version of the Multiband Dynamic Range Compression.
http://www.mathworks.com/help/dsp/examples/multiband-dynamic-range-compression.html

Tutorials/Dynamic Range Compression
http://www.sciencemedianetwork.org/wiki/Tutorials/Dynamic_Range_Compression

For the folks that really want your head to explode with information, this is Hardware and Software related.
Digital Dynamic Range Compressor Design—A Tutorial and Analysis
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.260.1340&rep=rep1&type=pdf

A category that I don't normally fall into. Huh
Effects of dynamic-range compression on the spatial attributes of sounds in normal-hearing listeners.
http://www.ncbi.nlm.nih.gov/pubmed/22246139

And lastly...
I found this for the video buffs which would be quite interesting if this type of video equalization could be added to Kodi.
Gradient Domain High Dynamic Range Compression
http://www.cs.huji.ac.il/~danix/hdr/hdrc.pdf


RE: adsp.biquad.filters - AchimTuran - 2015-03-15

(2015-03-12, 23:25)GEEMac Wrote: Here are some other links and Papers written On DRS for you.
You may already been to these links already, but I'll post for others that may have an interest.

Thanks for sharing this links. I really like the ones from mathwork. Quite a nice idea to do dynamic range compression on several frequency bands. I think this is a very good starting point for a new addon: adsp.dynamic.range.compression. Wink
But first let me finish the adsp.biquad.filters addon.


RE: adsp.biquad.filters - AchimTuran - 2015-03-15

Thank you I'm glad to hear that you like my work.Blush

In this post I will share some of my ideas. I think this post will be more for audiophiles and developers.

Here is the addon structure I try to implement:
Image

The new name and it's new structure will allow use to set up more than a equalizer with several frequency bands. Tongue
Features that could be implemented as processing modes are:
  • Of course a equalizer with custom channel and frequency band configuration
  • Low pass filter for subwoofer equalization (e.g. linkwitz transform)
  • High pass filter to setup a crossover frequency for each audio channel
  • Loading filter coefficients from other tools (e.g. room equalizer wizard)
  • ...

Short introduction of each block:
  • AddonHandler: this module is from adsp.template and has the job to create and destroy audio streams inside adsp.biquad.filters
  • Postprocess Parametric EQ: is one of the possible processing modes that can be implemented. With this mode we will have an equalizer 10 band for each audio channel
  • BiQuad Manager: is module which will allow us to store and load settings from processing modes and configuration of filters to xml files. The manager also handles to communication between the audio streams and user inputs with some simple message system.
  • Dialog Parametric EQ: is the dialog you can use to configure the 10 band equalizer (sorry the first version will be very simple)


A screenshot of the parametric EQ dialog follows in the next days.


RE: adsp.biquad.filters - AchimTuran - 2015-03-21

Hi Guys,

here is the promised screenshot:
Image

At the moment the dialog is very simple and you can control each frequency band with one slider for all audio channels. The final Version will contain more functionality. Wink


RE: adsp.biquad.filters - leonpierresusan - 2015-03-22

Thank you wisler! That looks fantastic.


RE: adsp.biquad.filters - Lappskij - 2015-04-02

Finally!!!
Nice work and kudos for taking the time to make this addon.
This is a really great idea. Have been looking around for an EQ solution for a long time.
Can't wait to try it out.

1 Q: Any chance you can implement an Automatic EQ scanner for old music files that needs to be adjusted up to todays standards ?

- Lappskij


RE: adsp.biquad.filters - AchimTuran - 2015-04-02

(2015-04-02, 15:06)Lappskij Wrote: Can't wait to try it out.
If I have something stable, I will post this here Blush

(2015-04-02, 15:06)Lappskij Wrote: 1 Q: Any chance you can implement an Automatic EQ scanner for old music files that needs to be adjusted up to todays standards ?
Nice idea. If we find a paper or an algorithm that can do this then this is possible. With AudioDSP and some work, everything is possible. Big Grin


RE: adsp.biquad.filters - Lappskij - 2015-04-04

(2015-04-02, 18:00)wisler Wrote:
(2015-04-02, 15:06)Lappskij Wrote: Can't wait to try it out.
If I have something stable, I will post this here Blush

(2015-04-02, 15:06)Lappskij Wrote: 1 Q: Any chance you can implement an Automatic EQ scanner for old music files that needs to be adjusted up to todays standards ?
Nice idea. If we find a paper or an algorithm that can do this then this is possible. With AudioDSP and some work, everything is possible. Big Grin


Amazing !!!! Excellent!! Will be waiting in suspence for a solution Big Grin
It is People like you that make Kodi the best Entertainment center in the World!!!!


RE: adsp.biquad.filters - AchimTuran - 2015-04-29

Hi community,

I have some great news about adsp.biquad.filters. After many commits I have here a running parametric EQ with 10 frequency bands. Really cool to listen to it with my Bose headphones and boost up the low frequencies to get more bass in my music. Big Grin
Here is the current feature list:
  • The addon has a post processing mode called parametric EQ, that you can use as an graphical EQ
  • At the moment the mode process all speaker channels except LFE (subwoofer), which should be processed by another mode
  • Each gain setting goes through all speaker channels
  • Your current gain settings will be saved to an XML file in your user folder, which allows you to restore your old settings if you restart Kodi

I will freeze the work on adsp.biquad.filters through two reasons:
I know the features from adsp.biquad.filters are very basic and the GUI isn't very nice, but the underlying source code and software architecture is very flexible. This allows me to add features which aren't available in commercial products. Here is a short list about my ideas:
  • Processing mode for the LFE channel (Low pass filter with variable cross over frequency)
  • Crossover Filters (high pass filter) for speakers
  • Custom mode creation, which allows you to create custom filters and processing modes
  • Add Python support, which allows any one who is familiar with Python, SciPy and NumPy to create custom filters through a Matlab like environment
  • Add a spin control, which allows to set individual gain settings for any speaker channel
  • Write a good documentation

When I fixed my issues with CMake I will upload my pre-alpha version with Kodi and AudioDSP support for Windows.


RE: adsp.biquad.filters - jerry3300 - 2015-05-01

Hello wisler, thank you very much for your great piece of work!
I am running OSMC Kodi RC2 on RPi2. I would like to test your adsp.biquad.filters, just downloaded the adsp.biquad.filters-master.zip from GitHub.

What is the correct way to install this addon, please?
If I try to include this addon from this zip archive I just get the error message that the addon does not have a correct structure.
Thank you a lot.