I'd like to simulate the movement of an analog VU meter dial as shown below and often found on stereos and other music monitoring equipment.
A VU meter is designed to have a relatively slow response. It is driven from a full-wave averaging circuit defined to reach 99% full-scale deflection in 300ms and overshoot not less than 1% and not more than 1.5%. Since a VU meter is optimised for perceived loudness it is not a good indicator of peak (transient) performance. Nominal sensitivity for 0VU is 1.228V RMS, and the impedance is 3.9k.
I'm playing with music visualization and data processing and a measure of perceived loudness is precisely what I need. I also like the analog nature of the response.
I'd like to implement this in an algorithm in Python (for an entire music file) and later perhaps in Processing (live processing in batches). The underlying implementation will probably be very similar.
How can I generate the response from raw audio data to match the specifications of a VU meter?