I am working on an application to run on a Dell PC that acquires audio data via the "Line-In" port of the PC's integrated sound card (SoundMAX Integrated Digital Audio), does some filtering/spectral analysis on the signals, then displays the results in several different waveform charts and graphs. I am trying to optimize this application to run several times faster than it currently is.
The code runs in a Timed Loop. The sample rate for the Line In port is fixed at 44.1 kHz (digital audio). The code runs okay if I acquire 2048 samples at a time (and thus the period of the Timed Loop is 2048/44.1 kHz = 46 ms). However, I would like the loop to update at about 12 ms (performing my analysis and display updates on 512 samples). But if I specify this small of an acquisition buffer and set the Timed Loop period to be this short, the loop cannot keep up with the code inside, the loop runs erratically, (sometimes at 12 ms, sometimes longer), the audio acquisition misses samples, and the graph updates are not steady.
I notice that there is significant overhead in updating all of the graphic displays - as I "turn off" the various waveform graphs and charts, the application will approach the speeds I am after (I have already turned off "smooth updates" and changed the update modes to "scope chart", which helps a little bit). But I would ideally like to be able to display all of these charts and graphs.
Is anyone familiar with a higher-end graphics card, and perhaps a new sound card, which can improve the speed of a LabVIEW application such as this? Any other suggestions? - Thanks!