As far as latency goes, I got it down to 0.1 seconds in my application. In other words, I was creating real time XY coordinates and it would take 0.1 seconds to get to the output of the soundcard. The only reason was because each block I created contained 0.1 seconds worth of data. I probably could have decreased the time but at that point I gave up on it due to lack of interest... I decided to spend time writing the actual show software for the easy to program Popelscan dac instead. I'll eventually get back to the soundcard driver and my plan is to change from blocks of a set time to blocks containing frames. Not sure if that will work, though.
But to be honest, I may just abandon the soundcard idea all together due to lack of TTL outputs for driving other items.