For what it's worth, and based on my experiences writing my own server, here's what I'd change in the system.

1) Move all the list processing to the server. Right now, when you open the "choose music" level, the choice of Artist/Album/Genre/Title/Playlist is hardcoded into the player. It should get the list of supported categories (really nothing more than top level playlists) from the server.

2) Move all shuffling to the server. The protocol lets the player request for shuffled return lists, but then shuffles the list again. Stop it, just let the server shuffle. This would let me do a feature where I can constrain the shuffle on the server. For example, I have a disc containing a couple of symphonies. I never want to break up the movements of the symphony, and they should always play in order. However, I would love to let the system shuffle which symphony is played first. This complex scenario could be handled with a decent admin on the server IF the client didn't reshuffle the list.

3) Make the schema data driven. Right now, the choice of which ID3 tags the system tracks is hardcoded into the server. I have a lot of classical music and make a lot of use of the composer, conductor, and orchestra ID3v2 tags. This single issue is what drove me to write my own server. I absolutely have to be able to look up music by composer. The admin tool for the server should let me specify which tags I want the system to manage, and should be extendable. This isn't all that hard, just store the schema in a separate table in the DB which is parsed first, and if someone extends the schema, create a new column in the data table in the DB.

4) Move the display templates to the server. OK, OK, they are actually there now (layout/en_UK/all_info, for example), but they are opaque. Publish the format of these things, or publish a tool that lets the user design them. Also, make sure this works with 3) above, so if I extend the schema to track composer, let me design a display template that puts the composer on the screen. This one I can't do yet in my own server, I haven't cracked the layout format, and I don't know if the layout code will work if I could somehow figure out how to tell it to display tag 0x10 (which in my system is the composer field).

5) Quit hardcoding which categorizations are supported. Let the user chose which categorizations he wants supported. My server lets the user build whatever categorizations he wants over whatever fields he wants. For example, the user can pick to categorize by artist, and he gets exactly the artist categorization already supported. He can also tell the server to maintain the categorization by artist then album. I support these categorizations as stored SQL queries (actually, just as the text of the select statements), not as explicit lists. As such, any column in the DB is as good as any other column for sorting.

6) This one you already know. The player should request info a couple of pages at a time. Then, it could easily handle lists of 100's of thousands of songs, since it would only need to store a little bit of local information.

7) Make the favorites list accessible as a playlist. This would let me walk up to a receiver, specify a few songs as favorites, then play the favorites list. Essentially, it let's me build a playlist without sitting down at my computer.

8) Build two parts for the server. The first part is the DB manager/web server/NFS server/DHCP server. It should run as a service or a normal app (mine just runs as a simple command line app, and I haven't yet turned it into a service. I also let my Win2k Server handle the DHCP stuff). The second part should be a graphical administration tool that talks to the server using the same protocol (suitably extended) as the receiver (the extensions I use are for things like sending in modification requests (i.e. change name, change composer, change...)). My server runs on my Win2k server machine, my admin runs on whatever machine in my network I happen to be sitting at.

Note that not all of these features are in my server yet, and it's not entirely stable, but in a few weeks, I intend to release an alpha/beta level of this for y'all to play with. My server also allows adding new songs without shutting down the DB, and monitors the music library for new tracks. Well, it rechecks every 6 hours, or whenever you use the admin tool to tell it to recheck for new tracks. In order to use my server, you will still need the software distributed with your receiver, I can't and won't redistribute any Empeg software.