hi xchip, how's the coding going?
have you considered using a hardware interrupt as a way of the user communicating that the settings have changed on the interface?
If I understand your code correctly, the Arduino questions the serial port to see if there is incoming data from the PC to arduino. If you changed this to a hardware interrupt the rest of the code might run faster.
For example, you would change the desired settings on the C# app such as no. of channels and time. Then you would press a button on Arduino 'telling' it to communicate 2 ways with the application to get the new settings.
just a thought... I have not done any code like this myself but I think the theory is correct. a little bit of incoming serial data *might* be lost during the ISR but I don't think that matters if you are in the middle of changing the settings anyway.
Also, you could get faster speeds by using an external ADC but I think that would make the project quickly become a lot more complicated and it would put it out of reach for many beginners.. I really like your approach so far and the bandwidth is plenty for my purposes.