Global random sounds like a really good start! Glad to hear you already thought about it.
My daily use case for the random mix really just revolves around picking genres and then pressing play.
But for the sake of argument... the ideal jukebox for me would work much like dynamic playlists.
FunctionIt would be neat if you could define a set of rules for the random mix; for example not only pick genres but perhaps year, artists, maybe even custom tags such as rating if someone has been ambitious enough to add that to every track in their collection. Anyway, when your rules are defined, save them as a Preset, and voila, a "dynamic playlist" has been born.
InvokingInitiating the jukebox should preferably be done by simply pressing a conveniently placed button. Choosing a preset could be done by exchanging the regular button for a split button (noticed you utilize bootstrap, so this one for example:
http://getbootstrap.com/components/#btn-dropdowns-split). Adding presets could also be a part of that drop down but separated by a horizontal spacer (just as the separated link in the bootstrap component gallery). This way the UI should be easy to keep clean as well.
FilteringIf you invoke a whole new page of filtering glory from the split button you should be able to add any filter users might want to throw at you. Preset management at the top, filter configuration below, or something like that.
- Genre
My collection is divided into roughly 20 different genres, and there are probably some that have more but it should be feasible to have a collection of "checkbox" buttons to select and deselect, let's call it a pill button farm. Touch-friendly. Other option could be a type-ahead drop-down I guess, and you just add from that to a list as you find your genres. This would work regardless of the number of genres (this would probably also work for most fields, even custom ones, as long as they are present in the database of course).
- Year
Perhaps define a range (defining several might be overkill)? Or make it simple by making a pill button farm with decades based on dates found in the database.
- Artists / Albums / Custom Tag
I guess if you want to filter by these you'd have to do some drop-down type-ahead magic and add to a list from that, or require the user to simply type in one or more values separated by semicolon for example.
So... ehm yeah. I know this would've been easier to illustrate by actually drawing some sketches; but you've done a stellar job with the UI so far so as long as I manage to convey my concept of how I would like it to work, I'm sure you'll be able to materialize it with a better UI than I could.
And there you pretty much have it! I hope I managed to give you the input you were looking for to some extent at least.