GJay (Gtk+ DJ) generates playlists across a collection of music (mp3, ogg, wav) such that each song sounds good following the previous song. Matches are based on both automatically analyzed song characteristics (BPM, frequency) as well as user-assigned categorizations (song 'color' and rating). It is ideal for DJs planning a set list or home users who want a non-random way to wander large collections.
All you have to do is tell GJay the base directory where you store your music files. It will then queue every file in the directory for analysis. Analysis is done in a separate process. When you quit GJay, you can choose to let this analysis process continue in the background. You can also choose to run GJay as a daemon, without any user interface.