I will start with  three background comments. Sorry if this is TLDR.

THE METADATA

I have been rocking a Transporter since they first came out in 2006 and
in 2006/7 I did a rip of my CD’s with CDEX. CDEX doesn’t tag files with
metadata, just creates WAV files that contain the track number/track
name.

This was sufficient at the time as the Transporter screen is text based
but I did spend some time with corrections/making consistent the file
names with some custom programs I wrote.

PC based play back has moved forward a lot since 2006 and in the last
couple of years I have been intrigued with the possibility of USB
playback via a small footprint endpoint running squeezelite. Aside from
future proofing my playback chain it also meant I could use LMS (via
sox) to upsample on the server side rather than within the DAC.

But all this meant I needed to first tag my files but I couldn’t
dedicate any time to this until I retired at the end of 2019.

The first part of tagging was easy… I just wrote a program that parsed
my existing WAV file hierarchy to obtain artist/year/release/track
no/track name and created the  ID3 tags in the WAV files. 

The harder part was cover art which after trying several existing
programs I ultimately ended up doing google artwork searches/print
screen/paste/cut for 95% of my 4000 albums simple because most
auto-fetched artwork was crap.

I also did google artwork searches for my artist pictures for the same
reasons as the artwork.

THE SOFTWARE

So with my albums all nicely tagged, the search started for playback
software that worked with LMS. 

The natural contender was Roon but I hated Roon. I didn’t like the way
you navigate in Roon and all the data masturbation that it does and
throws in your face. This is not a poking the Borax at those who love
Roon, it just that I am old fashioned and want to just playback an album
and not drill down/slice and dice what I have or discover new artists.

I looked at other playback software from the LMS eco system and much of
it only ran on apple or android platforms (which I don’t use) or
Windows. I played around with as much of this as possible but none of it
really fitted my use case.

This then brought me to the LMS “Default” Web Gui which I had not really
used before. I liked the general layout, its work flow and the fact it
was web based (i.e. platform independent).

The downside was its a bit ugly, old skool in appearance and wouldn’t be
very “touch screen” friendly.

The upside is I could hack the code.


The Hack

I have been a Unix/Linux systems programmer for 42 years with a
specialisation in databases so the thought of hacking LMS didn’t appear
too daunting plus being retired I had time on my hands.

Well… LMS uses an interlaced set of languages: Template Toolkit, Perl,
CSS, javascript and HTML of which the first three were completely new to
me.

Secondly, the code has no comments and due to the potpourri of languages
used, a section of code needing a massage might reference all languages,
so understanding what did what, when and how was time consuming to
analyse.

Thirdly, the rendering of elements was all based on tight loops which
couldn’t be altered in any way as this would break LMS.

Finally there was also a lot of re-entrant code, much of it within
“xmlbrowser.html” which handles basically all the rendering aside from
the playlist.

It become apparent that hacking the code would require a totally
different strategy from what I had done in the past and required some
cunning hacks.

THE RESULTS

The hack needed to achieve:

-       a GUI that had good delineation between the elements being rendered
-       a GUI that was pleasing to the eye and also easy on the eye with a
dark theme
-       a GUI that was self contained such that navigation didn’t leverage the
browser
-       a GUI that rendered some of Roons metadata stuff that I liked
-       a GUI that will work well with a mouse or a touch screen 
-       a GUI that will display well on decent sized screens (say 15” or
greater)

And so here are the results.

This is a “squashed” image of the first screen showing the dark theme
and as per normal for the default GUI, you have a navigation frame on
the left and a playlist frame on the right.

The GUI runs full screen inside the browser (i.e. you don’t see any of
the browsers controls) and I have placed drill downs into genres across
the bottom.

With a large number of genres, the drill downs will also occupy the top
bar… so you can get ~30 to 35 genres presented. Me… I only have four!!!

The “best of” genre is a special category that I will discuss later.

33393

If you click on a genre drilldown, the left frame presents a customized
alphabetic drilldown (wont bore you with the details but it works
differently from the default one). 

Below the alpha list, on the left,  is a “drilldown” icon that takes you
into an album view mode and below that we have the artists listed for
the selected genre.

33394

As all artists (or albums) are presented as a contiguous set, you can
use say a mouse scroll wheel effectively.

I force a “line break” at the change of an alphabetic section so its
easy to see the artists associated with say the “D” drill down.

You drill down on the albums for the artist you are interested in by
clicking on the artist image.

33395

Once inside a specific artist you click the album artwork to start
playback or you hover (or click in touch mode) over the album name to
see the tracks associated with the album.

NOTE: I don’t use the concept of adding an album (or some of its tracks)
to a playlist but if I did then I would render the albums tracks as was
the default behaviour but with visual tweaks).

33396


As noted above, at the top of each genre drilldown is an icon that, when
clicked, lists all albums for the genre. 

This view presents two visual break points: a break on the alpha and
then a break on the artists. This makes visual navigation way easier
than just a torrent of albums images.


33397


+-------------------------------------------------------------------+
|Filename: a4.jpg                                                   |
|Download: http://forums.slimdevices.com/attachment.php?attachmentid=33397|
+-------------------------------------------------------------------+

------------------------------------------------------------------------
posnos's Profile: http://forums.slimdevices.com/member.php?userid=62955
View this thread: http://forums.slimdevices.com/showthread.php?t=113959

_______________________________________________
diy mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/diy

Reply via email to