You have to be able to write commands to the card in order to read it.
EDIT: I've been trying to think of a way to squeeze out another output, but I'm coming up empty. You've got 20 GPIO pins, and you're using 9 for SD, DAC, and analog input.
It's time to think about charlieplexing
or some other method of multiplexing the outputs.
If you don't already know what charlieplexing is, it's based on the idea that you can drive pairs of output ports at opposite levels to drive multiple LEDs. In the simplest case, you can connect two LEDs to, say D0 and D1, with opposite polarities. To light LED1, you drive D0 LOW and D1 HIGH. To light LED2 instead, you drive D0 HIGH and D1 LOW.
If I remember correctly, the number of LEDs you can drive with n pins is (n * (n-1)). So, you should be able to do your 12 LEDs with only 4 GPIO pins.
The trick, of course, is that you can't light all 12 at the same time, and that's where the multiplexing comes in. You will have to rapidly cycle through all 12 combinations, lighting or not lighting each LED, as appropriate.
The effect is just like PWM - if your cycle time is fast enough, the blinking of each individual LED will not be perceptible.
Check out the LOLShield and its tutorial links
for more details on charlieplexing