@shrimants

I would recommend you use Matlab if you want to invest $ in it (if you are a student you can get a good discount there), and if you are not planning to generate executables (MATLAB can do this through a toolbox but from memory it tends to be a bit inefficient.)

Some comments:

1) If you use vectors Matlab is fairly fast (in some cases very close to C++ generated code).

2) Matlab math is actually fairly accurate (by default, MATLAB data type is double 64 bits).

3) Multithreading is already supported by some built in functions in MATLAB. Parallel computing requires a toolbox.

Some recommendations:

1) To parse through directories use the "dir" function and navigate through the structure.

2) You might also want to apply the PSD to non-overlaping blocks of data to keep the output file size manageable (might one to play around with this).

3) Note that music can be bass heavy some places, but not through out. Not sure what would be an optimal block size.

4) Whatever the block size, try to approximate it to a power of 2 (or maybe 4.) FFTs are a little faster that way. There are methods to get around that constraint, but speed can still suffer.

Let me know if you have any specific questions (Matlab or C++)