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
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:
Overall my expectations of being able to configure a “lean mean” targeted interface was largely not met
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: