ACCEPTED: Creating cross-platform room correction for Kodi

  Thread Rating:
  • 3 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Post Reply
AchimTuran Offline
Team-Kodi Member
Posts: 545
Joined: Jan 2014
Reputation: 13
Location: Germany
Post: #1
Summary:
Today Kodi is a great piece of open source software for playing almost all kinds of media files. There are so many features we can use e.g. PVR for watching TV, BluRay support with MakeMKV or AnyDVD, watching online streams and so on. The list seems to be endless, but there is some feature I miss.
Today Kodi can't replace an complete AV-Receiver. Sure we can use a computer and it's sound card with a connected surround system, but we can't do Audio Digital Signal Processing (ADSP) with Kodi. If you follow Alwinus and mine thread about Adding ADSP to AddonManager, than you know that there is some development for ADSP. Sure it's far away to be finished and every week we improve its features.
For my Addon adsp.xconvolver I need some module, that allows to measure room impulse responses. With that module we can improve our room impulse responses and push ActiveAE to the next level of listening experience. That modul will allow us to use Digital Room Correction (DRC) insdide Kodi without external software.
Thats only one case for our ADSP-System with adsp.xconvolver, but more are possible such as:
  • FIR-Equalizer
  • Room Simulator
  • Head Related Transfer Functions (HRTF)
  • ...
But thats not the focus of this proposal.

How will I achieve this / What will the project focus on
Through we already have a running ADSP-System in Kodi, my project will focus on implementing AESource in ActiveAE, Digital Room Correction functions into adsp.xconvolver and improving adsp.template.
Here is some signal flow graph, where you can see the AESource module:
[Image: 63e59ukn.png]

Benefits / Goals
Measure impulse responses from our listening rooms and improve listening experience through Digital Room Correction.
For me the big picture is to replace my AV-Receiver with an HTPC and Kodi.

What does it touch in Kodi
  • ActiveAE
  • OS AudioAPI
  • new ADSP-System

Requirements
I have to learn:
  • Knowledge of ActiveAE codebase
  • Knowledge of OS AudioAPI to implement AESource
My experience:
  • C/C++, C#, Python and a little bit of Java programming
  • Knowledge in Digital Signal Processing
  • Knowledge of our ADSP-System and its Addon structure

Mentors
fernetMenta, fritsch


I'm not sure if the schematic is correct, so please tell me the errors.
What do you think about my proposal?


GSoC Results
Status: Student Passed

Here is the link to my GSoC documentation.
Here you can find the current source code for adsp.xconvolver repository.



EDIT:
- replaced "DRC" by "Digital Room Correction" to prevent confusion
- added link from wikipedia for Digital Room Correction
- added links for adsp.template and adsp.xconvolver
- 25.03.2014: changed title of this proposal , to make it clearer
- 29.09.2015: Add GSoC documentation, Updated Mentors

Latest news about AudioDSP and my libraries are available on Twitter.

Developers can follow me on Github.
(This post was last modified: 2015-09-29 09:57 by AchimTuran.)
find quote
natethomas Offline
XBMC Chief and Kodi Project Manager
Posts: 6,232
Joined: Apr 2008
Reputation: 128
Location: Kansas
Post: #2
I didn't even know DRC was on the possibility horizon inside Kodi. Very cool!
find quote
AchimTuran Offline
Team-Kodi Member
Posts: 545
Joined: Jan 2014
Reputation: 13
Location: Germany
Post: #3
(2015-03-07 18:26)natethomas Wrote:  I didn't even know DRC was on the possibility horizon inside Kodi. Very cool!

I thought why not. I really like devices with much flexibility and I avoid to having devices for several tasks. Why not integrate the functions e.g. from MiniDSP into Kodi.
With AudioDSP and AESource we can reach new use cases:
  • Measure speaker delays and compensate it
  • Digital Room Correction (DRC)
  • I think with some changes in the codebase, we can implement a realtime mode. With that and e.g. adsp.xconvolver and Kodi Headless we can reach something similar as BruteFIR (a convolution PC)Blush
  • ...

Latest news about AudioDSP and my libraries are available on Twitter.

Developers can follow me on Github.
(This post was last modified: 2015-05-15 12:54 by zag.)
find quote
Memphiz Offline
Kodi MVP
Posts: 16,004
Joined: Feb 2011
Reputation: 225
Location: germany
Post: #4
DRC has 2 meanings now in audio? (Dynamic Range Compression) - how stupid...

AppleTV4/iPhone/iPod/iPad: HowTo find debug logs and everything else which the devs like so much: click here
HowTo setup NFS for Kodi: NFS (wiki)
HowTo configure avahi (zeroconf): Avahi_Zeroconf (wiki)
READ THE IOS FAQ!: iOS FAQ (wiki)
find quote
Martijn Offline
Team Kodi
Posts: 16,909
Joined: Jul 2011
Reputation: 310
Location: Dawn of time
Post: #5
(2015-03-09 09:25)Memphiz Wrote:  DRC has 2 meanings now in audio? (Dynamic Range Compression) - how stupid...

I was think about that one as well. Seriously why two meanings Huh

Read/follow the forum rules.
For troubleshooting and bug reporting, read this first
Interested in seeing some YouTube videos about Kodi? Go here and subscribe
find quote
AchimTuran Offline
Team-Kodi Member
Posts: 545
Joined: Jan 2014
Reputation: 13
Location: Germany
Post: #6
(2015-03-09 09:25)Memphiz Wrote:  DRC has 2 meanings now in audio? (Dynamic Range Compression) - how stupid...

It even has 3 meanings Frown
  • Digital Room Correction
  • Dynamic Range Control
  • Dynamic Range Compression

Latest news about AudioDSP and my libraries are available on Twitter.

Developers can follow me on Github.
find quote
trilliam Offline
Junior Member
Posts: 8
Joined: Mar 2015
Reputation: 0
Post: #7
I'm very excited about this project
find quote
AchimTuran Offline
Team-Kodi Member
Posts: 545
Joined: Jan 2014
Reputation: 13
Location: Germany
Post: #8
(2015-03-15 23:07)trilliam Wrote:  I'm very excited about this project

Here is a screenshot from my first prototyp gui of adsp.xconvovler:
[Image: lb356ble.png]

If you want you can also look at my other development thread about adsp.xconvolver:
http://forum.kodi.tv/showthread.php?tid=181875

Latest news about AudioDSP and my libraries are available on Twitter.

Developers can follow me on Github.
find quote
AchimTuran Offline
Team-Kodi Member
Posts: 545
Joined: Jan 2014
Reputation: 13
Location: Germany
Post: #9
Here is the link to my official GSoC proposal.

Latest news about AudioDSP and my libraries are available on Twitter.

Developers can follow me on Github.
find quote
leonpierresusan Offline
Junior Member
Posts: 11
Joined: Mar 2015
Reputation: 0
Post: #10
(2015-04-11 21:09)wisler Wrote:  Here is the link to my official GSoC proposal.

How does the selection process work? Is there somewhere I can vote for you proposal?
find quote
AchimTuran Offline
Team-Kodi Member
Posts: 545
Joined: Jan 2014
Reputation: 13
Location: Germany
Post: #11
Sorry only the mentors from XBMC Organization can vote.

Latest news about AudioDSP and my libraries are available on Twitter.

Developers can follow me on Github.
find quote
trilliam Offline
Junior Member
Posts: 8
Joined: Mar 2015
Reputation: 0
Post: #12
(2015-04-11 21:09)wisler Wrote:  Here is the link to my official GSoC proposal.


I'm very glad to see progress on this. Keep up the good work, Team KODI
(This post was last modified: 2015-04-16 05:59 by trilliam.)
find quote
RogerS Offline
Junior Member
Posts: 29
Joined: Aug 2008
Reputation: 0
Post: #13
Hi Wisler,

Great idea and good luck with your GSOC2015 assignment!


One question: Will the AESource module also be able to use microphone calibration files to correct for deviation in sensitivity of the microphone?
find quote
AchimTuran Offline
Team-Kodi Member
Posts: 545
Joined: Jan 2014
Reputation: 13
Location: Germany
Post: #14
(2015-05-16 10:08)RogerS Wrote:  Hi Wisler,

Great idea and good luck with your GSOC2015 assignment!


One question: Will the AESource module also be able to use microphone calibration files to correct for deviation in sensitivity of the microphone?

Hi RogerS,

I know the schematic isn't very clear, but AESource can be seen as a device driver for sound card input jacks. The filter design or calculation will be in an separate Module/Class, so it will be possible to implement this feature. But probably it isn't enough time during GSoC coding time.
I also though about this feature and maybe I will add it in a future Version.

If you want you can read my GSoC blog: http://achim-turan.de/gsoc-blog/

Latest news about AudioDSP and my libraries are available on Twitter.

Developers can follow me on Github.
find quote
RogerS Offline
Junior Member
Posts: 29
Joined: Aug 2008
Reputation: 0
Post: #15
Hi Wisler, They you for your reply. I had already read your well written GSoC Blog.

I can understand that there might not be sufficient time to include microphone calibration data in AESource, but make sure while you are coding that inclusion afterwards will be possible. People who are going to use this feature and are probably going to use a USB mic like the UMIK-1. Not being able to correct for deviation in sensitivity will lead to improper results. Even changing the direction of the MIC from 0 degree to 90 degree affects sensitivity! And for multi-channel (5.1 and higher) often a 90 degree (upward) position of the measurement mic is being used.
find quote
Post Reply