Progress log and feature/future plans

In this Topic, I will share a log of attempts, success and failures in the development of the the project & product.

The first successes now already allowed to reach publishing a release of an app on the Play Store.
Steps involved were:

  1. After receiving the IL-DSP, observing with incredulity that miniDSP did not already have an Android app available to control it on mobile.
  2. Getting in touch with miniDSP devteam in their forums
  3. Some wait, then an answer from miniDSP
  4. After a new offer to help them in a collaborative manner, comes a decision and announcement that I started reverse-engineering the IL-DSP USB configuration protocol.
  5. Getting encouraged by the progress, and writing some first proof of concept on desktop and Android relying on easy parts of the reversed-engineered protocol.
  6. Feature-complete reverse-engineering of the IL-DSP configuration protocol
  7. Actual working, reliable implementation of the protocol for desktop (tested on MacOS and Linux) Android operating systems.
  8. Development of command line utilities to load to DSP configurations from miniDSP’s xml files and partial support for REW EQ filter config txt files, show device info, toggle DSP bypass
  9. Refactoring of the project to share code between command line and Android apps.
  10. Development of an Android app with limited functionality for a first public release
  11. Creation of a new, dedicated Play Store account and upload of the app
  12. During the 3 days Play Store thorough review delay, setup of this forum.
  13. The app is live!

Now already to reach this point, many hours were spent. I didn’t count but maybe it’s possible to tell from Wakatime statistics.
And this point is just the beginning :grinning:

Prioritised for the next releases:

  • Sync EQ configs to DSP from miniDSP xml files
  • Load config files from Android’s native file picker
  • Implement functionalities with simplistic but usable UI
  • Evaluate how well Android native file picker integrates with Google Drive and Dropbox. Probably these two options would provide some ease of synchronisation between desktop and mobile

Prioritised for later:

  • Draw the frequency response graph for EQ settings: meaning Impulse response & FFT
  • Intelligently re-order filter bands to avoid unnecessary clipping when possible.
  • Explore options to apply a negative input gain before processing when required, either via volume control or using one of the EQ band’s biquad.

This week-end I implemented routines to calculate filters’ frequency response using two approaches:

  • FFT over Impulse response with all filters applied
  • Direct evaluation of each filter band

These are needed by and will be used to re-orderer filter bands, avoid filters clipping and graphing the frequency response in the UI.

I re-prioritised these in order to implement a better config sync to the DSP right away.
Better than miniDSP’s own app, and I think really a requirement since it’s fairly easy to get clipping in the output.
This was experienced by users already as described here, and before that here also.

That won’t be an issue in the next release already.

Also, analog-like filters look very good compared to the typical ones:

Today I reported a hardware failure with my IL-DSP on miniDSP’s forums.
I’m concerned that the initial hardware platform for this project might be fragile and break easily.

I should soon get a working IL-DSP unit again as my early production one failed which prevented to test the app features.

Until then I’ll hold off on releasing a new version of the app but I’ve been working on it to add these features:

Load and apply miniDSP XML config file

By using using Android the storage access framework, it works really well to open configs from built-in storage, USB stick, Google Drive, DropBox, or whatever cloud service you are using.

Render and display loaded filter frequency response

Re-order filters to prevent unnecessary clipping

FlorinAndrei identified that it is very easy to introduce clipping even when being careful with successive positive/negative gain bands
I designed 2 algorithms to re-order filter bands in order to prevent going over 0dB at any stage when the final output remains below 0dB.
One is optimising for maximum headroom, the other takes more passes and optimises for maximum bit depth, although I’m not sure it will make a measurable different on the noise floor in practice.
Both approach seem great in theory but I couldn’t test yet the result on IL-DSP hardware.

Work in progress: machine-learning based match target frequency response EQ generator

Instead of using an algorithmic approach to generating EQ bands to match a user-defined frequency response to correct their headphones, I started to learn machine learning hoping to solve that with a trained neural network instead.
My hope is that it could end up being a very fast and powerful solution on mobile, especially when using hardware acceleration as found on modern mobile phones. Possibly it could also make EQ filters more creatively than existing algorithm.
It’s still early and I’m not sure yet if it will perform well enough: from the first results: maybe ! :laughing:
It could just as well be a complete waste of time, but either way it’s novel, appears to have not been tried before that way, and fun playing with.