Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 31 million developers.Sign up
- Invert the polarity of all channels except the left input channel, such that a positive sample value always translates to a positive voltage on the + terminal. See #14.
- Fix a bug where the left and right channels were swapped (both input and output). See #13.
- Added support for
ASIOOutputReady(), enabling compatible ASIO Host Applications to achieve a one buffer length reduction in output latency. See #4.
- ASIO401 will not read from the QA401 anymore if no input channels are enabled. This comes at the expense of output latency. See #12.
- This can be customized using the new
- This can be customized using the new
- ASIO401 now converts the buffers from QA401 endianness (big-endian) to host endianness (little-endian), i.e. from
- This is necessary for ASIO401 to be able to fix the sample sign (polarity) - see above.
- Skip the initial priming read if no input channels are enabled.
- Ship PDB files in the installer to allow troubleshooting tools (Process Explorer, Process Monitor, Windows Performance Analyzer, WinDbg, etc.) to understand ASIO401 stacks.
- Fix a crash in
ASIO401Testwhen selected input or output channels do not start consecutively from zero.
- The QA401 priming, starting and streaming logic has been revamped to resolve issues related to various DC garbage and distortion appearing at the QA401 outputs at the beginning of streaming. See #9.
- 192 kHz sample rate is now supported. See #2.
- Fix a bug where ASIO401 would get stuck if all output channels are disabled. See #10.
- Fix the ASIO Timestamp information which was completely broken. See #1.
- Throw away the first 1024 samples coming from the QA401 inputs, which are typically garbage (silence and/or "ghost" samples leaking from previous streams). See #5.
- Enable the QA401 hardware input high-pass filter. See #7.
- Mention "Left" and "Right" in channel names.
- ASIO401 now handles USB errors during streaming (e.g. device disconnect) more gracefully, and will send a reset request to the ASIO Host Application instead of crashing.
- Various performance improvements that provide more time budget for processing events, making audio glitches (discontinuities) from missed deadlines less likely, especially at 192 kHz.
- Add the
- Audio input (recording) is now supported.
- Added the
attenuatorconfiguration option to disengage the QA401 hardware attenuator.
- Rewritten buffer management logic to improve stability and compatibility with host applications.
- USB I/O is now done asynchronously. USB reads, writes and buffer switch callbacks now happen in parallel with each other, relaxing timing constraints.
- Reset the QA401 when streaming stops. This works around an hardware issue where DC offset could appear in the outputs at the end of playback.
- Fix a performance bug that could result in glitches due to buffer switches being delayed by as much as 10 ms, depending on the host application.
- Fix a bug where ASIO401 would accept any sample rate, even though it only runs at 48 kHz.
- Change the default buffer size from 256 samples to 1024 samples.
- Wait until some output buffers are queued up before starting the hardware.
- Increase the scheduling priority of the streaming thread (MMCSS "Pro Audio" class).
- Improve efficiency when no output channels are enabled by not writing to the output USB pipe in that case.
- Fix a bug where the very first output buffer filled by the ASIO Host Application would be dropped.
- Fix a bug where the reported timestamp would be zero in the first buffer switch callback.
- Make the reported latency numbers are bit more accurate.
- Many improvements to the
- Support big endian output in an AIFF container.
- Preload the input file before streaming, and write the output file after streaming, to avoid performance issues caused by sound file I/O.
- Add a
--log-modeoption to customize the way the log is output.
- Fill the first buffer before calling
ASIOStart()instead of waiting until the first buffer switch.
- Optionally call
ASIOOutputReady()when an output buffer is filled.
--buffer-switch-delay-msoption for adding an artificial delay to buffer switch callbacks.
- Exit cleanly when receiving a CTRL+C signal during streaming.
ASIOStop()even when streaming failed.