• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

My Take On a Music Playback Interface

fatoldgit

Senior Member
Joined
Feb 29, 2020
Messages
391
Likes
488
I am a software guy not a hardware guy so my DIY project has been to develop a GUI for music and video playback that fits my style.

Below is link to a seven minute video that gives a "live" demo of the GUI

You can just watch the video and then say "what about this... what about that" so below the video is an intro that explains my world view on the features I wanted my GUI to have.

While its a longish read it will help to (hopefully) address any stinging criticisms you might have

So maybe read the intro then watch the video.

NOTE: The demo was done off my touch screen Linux laptop but the GUI works fine with a mouse

Thanks

Peter





Prelude

As an introduction I might be considered, as you will see, a bit of a dinosaur (aka Grumpy Old Man) despite the fact I have stopped spinning vinyl and silver discs and moved exclusively to a files based paradigm​

I have been a long time LMS user since 2006 with a SlimDevices Transporter and then latterly Squeezelite so have a baseline as to what I wanted my ideal playback software to support:
  • Must be able to drill down by genre then artist then album
  • Must support alpha drill downs at the artist level​
  • Must be touch screen and scroll mouse friendly and not need a keyboard​
  • Must support separate browsing and playback pages that are each fullscreen​
  • Must support a dark mode​
  • Must have strong delineation between graphical objects​
  • Must support the listing of contributors to an album​
  • Must ideally support both audio and video playback​
  • Must ideally run on a low power fanless PC running RAM root Linux​
  • Must have graphical objects that are large and accessible to assist in operability as I age​
Test the Marketplace

I tried many different popular music playback software packages and they all provided a plethora of functions and features I didn’t want. For example:​
  • I don’t want to use a expanding folder style hierarchical drill down​
  • I don’t want data masturbation to dominate the browsing experience​
  • I don’t want spurious design elements on the graphical interface​
  • I don’t want an application that requires an internet connection to function​
  • I don’t need streaming support​
  • I don’t need playlist support​
  • I don’t need a recommendation engine​
  • I don’t need a radio station feature​
Obviously the tested products need to be all things to all people so I am not criticizing them for this but rather that, from an interface perspective, there is no way to hide features that are not important to any specific end user​

Overall my expectations of being able to configure a “lean mean” targeted interface was largely not met

Other Frustrations of Available Products Part 1

What I also found was all/most had these undesirable, to me, features and issues:​
  • Poor Touch screen support​
    • They purport to be touch screen friendly but many of the graphical objects are too small and too closely spaced to be effective in a touch screen mode​
  • Combine browsing and playback control in a single screen​
    • The dominant paradigm that compromises the screen real estate for both functions​
  • Poor delineation of objects​
    • For example, album art and associated text are crammed together​
  • Alpha divisions not clean​
    • No visible division between artists at break points in an alpha drill down (in say a transition to artists starting with ‘B’ from artists starting with ‘A’)​
  • Poor use of space with pretty but useless, to me, information that cant be silenced​
    • Roon was a main offender​
    • Lots of white space​
    • Lots of information that should optionally be able to be hidden as screen space is scarce​
    • For example I don’t need a splash screen taking up half my available screen space telling me what the Blues genre is since I have been collecting Blues albums since 1970​
    • When I drill down into an artist I don’t need a splash screen taking up half my available screen space giving me the unwanted bio of the artist I selected… just show me the albums​
Other Frustrations of Available Products Part 2
  • Spurious information​
    • Roon was again a main offender​
    • For example, my files are well tagged with only three genres yet despite telling Roon to use my tags it invented empty genres such as R&B, Rap, Reggae, Religious, Stage and Screen and Children’s. In fact 21 spurious genres in total​
  • Text truncation​
    • Long album or artist names were truncated
  • Hard coded small fonts​
    • With no way to increase sizes
  • Inconsistent use of elements​
    • Similar Icons in two places providing different functions​
  • Duplication of objects on a single screen​
    • Objects like album art for the same album might appear two or three times
  • Rounded Artist photos​
    • Cameras take rectangular photos so by rounding them you cut off band members
  • Required a keyboard for specific functions​
    • For example to select the character used for an alpha drill down
  • Few supported both audio and video files​

Market Place Summary
  • Overall my market survey was a bit depressing but I can obviously understand why Roon, for example, is very popular especially for the streaming only crowd or the mixed file and streaming crowd​
  • But I found Roon provided, for me, the worst experience as it presented too much information that had my eyes glazing over and I found the graphical interface got in the way of browsing the way I wanted to​
  • When I sit down and start playing an album I focus on that and thus don’t need to have all the data Roon has available​
  • Spending time reading an artists bio, for example, would detract from the listening experience, at least for me​
  • A potentially annoying trend, depending on your point of view, is that non-Roon packages appear to be moving to emulate many of the features of Roon given its perceived marketplace dominance​
The Way Forward

  • Because I have 40+ years of Unix and Linux software development experience and am now retired I decided that rather than compromise my end user experience I would write my own graphical interface​
  • Given I have no experience in audio visual playback software I wasn’t prepared to get into a scratch development of said back end and as such either hacking LMS or Kodi and creating my own graphical interface was the best avenue​
  • In fact I did both, starting with LMS first, including the integration of the “mpv” video player to afford video playback. I was happy with the results but felt that the web based graphics lacked the highest degree of resolution​
  • This wasn’t down to my poor programming but rather the image scaling support of CSS, especially related to album art.​
  • So it was onto Kodi and experiments showed its graphics were excellent and its available graphical development language and engine were also very good​
  • I tried various existing Kodi skins but found the support for music files poor or non-existent which doesnt surprise as Kodi is really designed for video playback​
  • LMS and Kodi use a totally different architecture (distributed verses fat client) so before I moved away from LMS with its new graphical interface, I did some sound quality tests and determined, at least to my ears, that Kodi with “ffmpeg” were not deficient in this area compared to LMS​
The Kodi Hack
  • Because I would need to include Kodi settings screens inside my new graphical interface I started with an existing Kodi skin to provide for the settings screens and then removed all other non-settings screen code… thus starting with a clean slate​
  • Then began my education into using the included Kodi skinning language and underlying processing engine written in C++​
  • In the end I wrote 25,000 lines of skinning language code and added in 3,000 lines of C++ code to meet my requirements as well as creating a new metadata database​
  • To populate the new metadata database with the information I wanted I needed to develop a separate scraper that referenced various internet resident music databases​
  • None of the C++ code was particularly complex but finding which program to change was very time consuming as Kodi contains 1900 C++ programs, 700,000 lines of code, very few comments and lots of function redirections and nesting​
  • The naming conventions of the C++ programs is such that if I was looking to find likely candidates for changes I could exclude based on names but it was all very messy with the need to add lots of log based debugging to find specifically which program needed changing and then additional debugging to find which section inside a program needed amending​
 
Last edited:
I've been thinking about writing my own upnp control point for some of the reasons you give here. I'm pretty happy with MinimServer as the back end (though I'd love to be able to embed pdfs of album liners somehow), but Bubble and Kazoo (the best controllers I've found) are both wanting in my use-cases. Ideally I'd like to make a "device" with a combination of physical controls for things like power-on, volume/loudness, and end-point selection, and touch screen for navigation: ideally *not* using a handphone and connecting to the local network only.
Thank you for sharing your project, and inspiring me to carry on with mine.
 
I've been thinking about writing my own upnp control point for some of the reasons you give here. I'm pretty happy with MinimServer as the back end (though I'd love to be able to embed pdfs of album liners somehow), but Bubble and Kazoo (the best controllers I've found) are both wanting in my use-cases. Ideally I'd like to make a "device" with a combination of physical controls for things like power-on, volume/loudness, and end-point selection, and touch screen for navigation: ideally *not* using a handphone and connecting to the local network only.
Thank you for sharing your project, and inspiring me to carry on with mine.

So what device would you target your GUI at: apple ipad, android tablet, windows laptop/tablet or linux laptop/tablet.

The advantage of linux as a dev platform is it potentially has a long deployment life... IOS might also be good but I have no idea how easy it is to develop on an ipad.

Windows and android would appear to me to be OS's with lots of churn that would make long term deployment problematic and in the case of Windows and new forced stuff like copilot a pain to co-exist with.

I personally have no idea why people use smartphones to navigate through a large music collections... but if it works for them thats great.

See my PM to you

Peter
 
Roon only has value for me in its sound part, I am not talking about its quality because all bit perfect players are equal from this point of view, but it makes it possible to easily integrate parametric and other corrections, but its library part, interface, metadata and all the useless zakouskis more or less imposed are really painful... the biographies of classical musicians range from just correct to stupid or even erroneous and the metadata coming from MusicBrainz are pedantic and often counterproductive...

And then Roon has the habit of not only not recognizing commercial records that are well-known, but also sometimes inventing them...

Audirvana from this point of view is less open to criticism... even if he sorts out performers and composers in a way that is sometimes very curious...

If only iTunes were open, free, modular and not Apple-branded...
So congratulations for your work.
 
Back
Top Bottom