Erik Massop edited this page Nov 4, 2017 · 1 revision



  • I have ~100,000 songs (legally :-) ). Scan the lib at max. disk speed.
  • Optimize sqlite DB and usage. Store most common attributes like title/artist/album not as generic properties as one row each in a separate table, but as columns in the song (item) table. Compare filesystem with EA. Should dramatically improve speed. Keep this speed optimization in the sqlite store, not necessarily exposed in the API (but that may provide speed advantages, too, in the network protocol and API calls).


  • Startup and shutdown should happen with client
    • Ideally, server is - optionally! - in-process with client.
    • Why: While powerful, most users don't need nor understand the client/server separation. Also, the server may crash, and a restart feature may cause infinite restarts (as I experienced crashes on startup yesteday). In-process ensures that the server is running *exactly* when the client is running, lifetime matches, which is what users expect.
    • User can choose to use another server in client setup or environment variables, then the client simply does not start the server and uses the current server discovery / config features.
    • How: remove the main() of xmms2d, make a C function start_server() or similar, and make a lib like (libxmms2core.a already exists?), and let client load that.
  • Server needs to be configured entirely from client, via UI. Esp. output plugin.


  • pulse volume! (solved after 0.4, yay!)


(This is based on Esperanza.)


  • define queries by user, using ruleset editor and some alternative, simple UI
  • define queries based on directory on disk
  • combine queries
  • search for this artist (available on any song in collection, playlist and player)
  • search for collections containing this song/artist (on any song)

Collection/Playlist UI

  • when adding song to playlist, optionally start to play immediately
  • faster add/remove to playlist - drag&drop (e.g. drag from lib to add, drag outside window to remove)

Edit/sanitize metadata

  • merge artist spelling (ignore caps, spaces?) in client
  • fix spelling (rename artist of all songs of one artist), maybe by drag&drop over other, maybe as script/batch
  • fix "feat." in artist
  • alter metadata in store, write to ID3 in file

Song metadata

  • see more infos on song (pathname, rating, collections contained in)
  • rating, incl. export / save & import of ratings in medialib to XML or TXT file

UI structure

  • windows: lib and playlist (and player) connected (incl. fast open/close) or independent, optional
Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.