major restructuring and refactoring

acquire stream format (channels, rate) on-the-fly rather than
doing a pre-read on startup
fix bring-up; was looping past end of sources list