We all have had this happen once: you have a new girlfriend an now she wants you to make a mix-tape (or mix-cd or whatever). Deciding what songs to put on it is not so much of a problem, but in what order? Grouping by artist is boring, at random gives an chaotic listening experience. So that's why I cam e up with soundsort. Soundsort analyzes the audio-files you feed it and does a suggestion on their order by analyzing how the songs are actually sounding (NOT by comparing their meta-data!).
This program also needs:
In this example I select "Bam" (by Boom Selector) as the first file in the list with the '-f' switch.
soundsort -i in/Jiskefet\ -\ Laat\ Je\ Rode\ Rokje\ Zien.wav \
-i in/beasty\ boys\ -\ no\ sleep\ till\ brooklyn.wav \
-i in/boom\ selector\ -\ bam\ \(extended\).wav \
-i in/de\ dijk\ -\ bloedend\ hart.wav \
-i in/duran\ duran\ -\ a\ view\ to\ a\ kill.wav \
-i in/nu\ shooz-i\ can\ t\ wait.wav \
-i in/phd\ -\ i\ won\ t\ let\ you\ down.wav \
-i in/rollins\ band\ -\ liar.wav \
-i in/ti\ sento.wav \
-i in/x-fusion\ -\ anorexia\ nervosa\ \(lyrics\ by\ mel\ g\ x\).wav \
-f in/boom\ selector\ -\ bam\ \(extended\).wav
01] in/boom selector - bam (extended).wav 0.000000
02] in/nu shooz-i can t wait.wav 35103.876872
03] in/beasty boys - no sleep till brooklyn.wav 35125.297730
04] in/rollins band - liar.wav 35638.185039
05] in/phd - i won t let you down.wav 38254.485324
06] in/duran duran - a view to a kill.wav 40109.738314
07] in/de dijk - bloedend hart.wav 42977.095978
08] in/x-fusion - anorexia nervosa (lyrics by mel g x).wav 43221.664222
09] in/ti sento.wav 45986.697355
10] in/Jiskefet - Laat Je Rode Rokje Zien.wav 59076.415847
The algortihm is actually quiet simple: for each song the frequency spectrum is calculated with a fourier transformation, after that each spectrum is compared to that of the song you want to be played first. Then it is just a matter of sorting.
0.8 improved algorithm
0.7 added an 'playlist output'-mode ('-O')
0.6 fixed recognizing of mp3-files
0.5 added mp3 support
0.4 improved memory usage
0.2 improved UI
0.1 initial release
allows you to participate in lotteries from all over the world!