As Christian said, using DMA instead of register I/O would allow for better streaming of data. However, the sample project was written to show a simple modification of the FPGA while still keeping all myRIO API functionality in place. That means that the Audio Express VIs and Advanced VIs still work with this version of the FPGA code. If it is changed to use DMA then those VIs will stop working. We were content with the limitations of the example based on its intent. We have considered adding an additional, more thorough audio example and will look at it again.
In addition, the example still samples all the other Analog channels in the FPGA (again to maintain capatability wth the RT VIs) which limits the maximum sampling rate of each individual channel to be 500Ks/S / 12. So each channel is sampled at a rate of 41.667 Ks/S, neglecting the time it takes to actually processing the Audio data. The sampling rate is less since we do some work on the Audio in the FPGA. Just wanted to point out that another limiting factor depending on what you're trying to do. If you're trying to sample at a more typical audio rate (44.1k+) then you'll need to remove some of the other analog channels from the FPGA.
I see your point. Keeping the architecture the same, and just having a quick example makes a lot of sense. However, I would then suggest that the Voice Recorder example at least have some notes/documentation about this limitation. I suspect that it would not be at all unusual for beginners to fall into the same trap I did: They open the Voice Recorder example, see that the sampling is only 8 KS/s, up that, and things start crashing. Just some caveates on the diagram suggesting that faster sample rates require a different architecture would be great.
I've now got a version working with DMA, 4 channels (filtered and unfiltered, left and right) at 40KS/s each. No problems. Thanks for the hints! It has a few shared variables in it as well, so it seems that the assumptions were correct about the SV support just pushing a system on the edge over the edge.
I never did get any feedback on whether/when wifi was really needed. Is there a FAQ on this? I'm pretty sure that when I first opened the Voice Recorder example, it said Wifi was required. That didn't seem to be the case, though. Also, it's unclear how to configure things. If the MyRIO is set up in the project using the USB IP address, can you just sent the Wifi IP address to the network stream setup? Or should we set up the MyRIO in the project to use the Wifi IP address too? Or... Also, how is it that the USB connection has an IP address? Did NI put an ethernet connection in there over USB? Or is it just simulated at some software level?
I don't think you ever have to use the wifi connection. The USB connection is just ethernet over USB so anything you can do over the wifi you can also do over that (other than walk around the room with the myRIO). In the project you should be able to use either IP address.