ConstantQ transformation method
It looks like based on the 2 inner loops where you are calculating maxMag you could refactor the code to utilize Parallel.ForEach() so you can start to use multiple cores for the math.  Just put all of the individual maxMags into a concurrent dictionary.  When your done, run your aggregation methods.  You'll have to decide whether it is better as an array that gets copied, or whether to refactor them into a concurrent collection type.  I hope this helps.

Edit/Update:

Per your comment relating to using all cores "However, the best improvement this would bring on typical hardware would be 8x. 8x isn't quite going to be enough for my application." (found under cgilmeanu's answer)

If utilizing all of the computer resources and taking an 8-fold gain won't get anywhere close, then ...

Answer = you need to horizontally scale across multiple computers until you reach the point where you are satisfied with the "timed" outcome.

Going to c, c++, or .net-under-the-hood should help make gains for you.  However, commonly, the programming involved results in something complicated, hard to understand, and more extensive documentation.  This can make it tough to be nimble and make changes.  Also, if you can assume that the computational load/iterations may increase in the future, your extensive efforts in extremely fine tuning this item may be all for nothing since it was internally just vertical scaling by optimization.