Actually I think this might be possible.
I'm thinking a microphone and small amp circuit plus peak detector to pick out the amplitude envelope. Then a low pass or notch filter on the amplitude signal below ~10Hz (400bpm is 6.7Hz). Then an adc and a simple (low frequency) fft. Average the fft results over a few seconds. And then pick out the highest peak in the fft. That will give you the overall 'pulse' frequency, which will be the bpm.
I'm sure there are some fancier methods I can think of using the whole fft spectrum, but I'm guessing that the above will work OK. It won't be a perfect algorithm - for instance, if there's a pause (duh) or a free form time shift (e.g. during a cadenza) or maybe a jazz solo where the soloist deliberately plays outside the beat. But, if you think about it, if you listen to a short segment of some pieces of music, it's sometimes possible that you can't pick out the beat yourself anyway.
You may even be able to pick out the time signature by looking at where the emphasis re-occurs.
Of course, you will find it difficult to separate 3/4 time from 6/8 time (unless the emphasis thing above works ok) - but depending on your application that may not matter.
Alan