Wednesday, February 7, 2018

3.0 Work in Progress 14: Equalizer and Effects UI

Before I get into the new UIs, I want to mention some of the behind the scenes work that has been done since the WIP update.  I mentioned in the last blog post that I completely rewrote the DSP / Effects backend (everything besides whats in the audioengine).  Since then I also ended up replacing the theme engine with a library called Aesthetic.  It was pretty similar to the custom theme engine I had written before, but I felt it was better written and had other users maintaining it which is always a plus.  It also was backed by RxJava2 which is something I've been using throughout the 3.0 rewrite and it makes changing theme colors on the fly much easier than my custom theme engine.  I did a massive cleanup and restructuring of the gmmp project.  I removed all the legacy code that has been rewritten and have split up the project into 4 main modules (this is done for much faster compile times): common, data, playback, ui/main.

When I look at the breakdown of languages used on my gitlab we see these numbers

Java 67.93 %
Kotlin 31.72 %
RenderScript 0.35 %

So despite all the stuff I have rewritten, about 2/3rd of the non audioengine code has still not been touched (all the 3.0 work was done in kotlin).  I dont have any plans to rewrite everything but it just shows how large the project has become over the last 7 years

I decided to split the equalizer into its own view and have the other effects on a separate tab.  I did get a lot of complaints about having to go through a lot of steps just to get to the equalizer.  It is much more accessible now.  Also on the effects UI, I added switches for each effect and sliders for anything that can be adjusted.  Previously some things like bass boost strength, and limiter attack/release were hidden away in the preferences.

I still have a bit of testing to do to make sure all the effects actually are being applied correctly, but from the UI standpoint things are pretty much where i want them to be.

Next up will be the playlist file UI which should be pretty straight forward