If you wanted to do this completely in hardware (no software) I'd suggest a [u]comparator[/u]. A comparator turns-on (the output goes high) when the input is higher than reference. You can use a low reference to make it very-sensitive and/or use a potentiometer to make the reference variable.
Then you could follow that with a [u]555 one-shot[/u] to hold the LEDs on for 1/10th of a second or so every time it's triggered. (Then drive the transistor with the 555.)
With the 555 holding the LED on for a short period of time, you can skip the rectification and simply ignore the negative-half of the audio signal.
Could I even just feed the AC input straight into the analog pins of an Arduino, and control the transistor and LED strip from a digital output pin (being mindful of max voltage inputs). Circuit diagram is attached.
The Arduino can be damaged by negative voltages or by voltages greater than +5V. And/or the Arduino can "damage" (distort) the audio signal.
The "standard approach" is to bias the Arduino input at half the supply voltage with two equal-value resistors, then use a capacitor to block the bias from your audio circuit ([u]example[/u]). With the input biased at 2.5V, silence will read about 512 on the ADC. Quiet sounds will deviate slightly above and below that, and louder sounds will deviate more. You can subtract-out the bias in software. The bias circuit usually works well with line-level or headphone-level signals. If you want to use the "speaker output" from a powerful amplifer you'd probably need some attenuation and protection.
If you are worried about over-voltaging the Arduino you can add a [u]protection circuit[/u]. Or, you can use the protection circuit without the bias and ignore the negative half of the waveform.
I use a [u]Peak Detector[/u] (AKA "Envelope Follower"). It puts-out a varying DC voltage that matches the peak of the audio signal. But, op-amp circuits generally require positive & negative power supplies so that adds to the complexity.
Note that (if you're not using a peak detector) you are [u]sampling a waveform[/u] that's continuously varying (even with a constant tone) and it's crossing-through zero twice per cycle. So unless you "do something" the LED can't be constantly-on and you won't perceive full-brightness.
A 20Hz wave (generally the lowest audio frequency) has a period of 50 milliseconds (or 25ms per half-cycle). So, there a couple of things you can do... You can sample for ~50ms and save the peak, or sample several times over the 50ms period and calculate the RMS, or the average of the absolute values, or the average of the positive values.
So... Once you are reading the "loudness", here's the "World's Simplest Lighting Effect":
Make an array to calculate the [u]Moving Average[/u]. I save a one sample per second and save it in a 20-element array to get a 20-second moving average, but you can adjust that if you wish.
Then in a fast-loop (or maybe 10 times per second) read the "loudness" and compare it with the average. When it's above average turn the LED strip on, and when it's below average, turn it off. The light will be on half the time and off half the time for lots of "lighting action" and it will self-adjust to loud & quiet music.
The diodes in your bridge rectifier don't start to conduct until you have about 1/2 volt across them. And, in the bridge configuration you've always got two in series so nothing happens until you get over 1V. Then it takes another 0.5 to 0.7V to turn-on the transistor. That's why nothing is happening 'till you get "loud".
You are not necessarily turning the transistor all the way on and it will be partially-on due to the analog wave. Turning it partially-on can overheat it.
Your capacitor is on the wrong side of the resistor and it can potentially affect the audio signal.
P.S.
In a hardware-only design you could use a peak-detector in front of the comparator and the LED would stay-on long enough to see it and to get full-brightness without the 555 timer.
You could also use two peak detectors, one faster than the other. The slower one could be used for the comparator reference (like an average of the peaks) and the faster one as the signal input. (You'd have to put some attenuation on the reference to get more of an "average" reference level that's below the actual peaks.)