@Paul_Guthrie i would propose using a teensy based audio board which has the option of direct connection from an audio cable or using the built in mic. You would pair that board with a 2nd teensy 3.2 and then pass the audio analysis from that to your main micro board over serial or i2c. using the board as input, the teensy runs a FFT analysis that spits out 512 bins of audio data. One can then combine these to build as many bands of output you want (also easy). I have these details worked out and would be glad to share. The other option is the msgeq7, same approach but you get 7 bands (or less if you ignore some).
In some cases, it may be nice to have it react to the mic, and on others, to hard wired source, So toss in a simple button/switch to tell the teensy which source to listen to. OR possibly some logic that says, when the line is quiet for more than 20 seconds, switch to the mic so that you never have to futz with it.
The vid below shows the result of the teensy FFT approach in which the first teensy, sends over the analysis as an array of 17 bytes for the main board to chew on. it is quick enough that you sense no lag.
missing/deleted image from Google+