Hi everyone,
I've been implementing an ASIO backend for Windows. I'd just like to comment that a device settings negotiation API should also consider which channels are used after connection. ASIO devices are often full-duplex with multiple inputs & outputs - we don't want to copy data over unused channels. We also want to allow clients to opt-in to full-duplex mode (not available on my current PR)
So far, the ASIO backend takes the approach of converting all samples to/from float types. It would be nice to expose the native ASIO type (which is driver-dependent) so that the user can choose to connect optimally.
Re. Peter's comments about the implicit state machine: My gut feeling is that exposing the state machine explicitly would scarifice the simplicity of the 'Hello, World" examples and become more of a barrier-to-entry for general users. IMHO, the audio_device should act more like a media player (or recorder) object, i.e. a layer of abstraction higher than the internal state machine. This would fit with standardizing existing practices too.
Timur, thanks for publishing P1386R2! I can implement the stop/start callbacks correctly now :)
Cheers,
Andy