Releases: dechamps/FlexASIO
FlexASIO 1.3
Significant changes
- When searching for the device name specified in the
device
option, FlexASIO now ignores devices that are in the wrong direction (input or output). This fixes issues with input and output devices having identical names. See #39. - Add
--buffer-size-frames
,--buffer-switch-count
,--input-file
,--output-file
and--sample-rate
command line options to FlexASIOTest. See #34.
Minor changes
- Fix a crash when returning an ASIO error message longer than 123 characters.
- Make FlexASIOTest text output I/O asynchronous to avoid blocking in real-time code paths (e.g. ASIO buffer switch callback)
- Improve FlexASIOTest text output by making it display timestamps, process IDs, and thread IDs.
- PortAudioDevices now outputs the PortAudio debug log to stderr (as opposed to the FlexASIO log).
- PortAudioDevices now outputs device names in quotes to avoid confusion when device names end with whitespace.
FlexASIO 1.2
Significant changes
- FlexASIO is now bundled with the latest PortAudio master (
76e31c2
) instead of the stable version (pa_stable_v190600_20161030
). This brings the following improvements:- Fix a bug where the WASAPI backend could get the device channel count wrong with some audio hardware. See PortAudio change, #3.
- The WASAPI backend doesn't handle a zero
suggestedLatencySeconds
option specially anymore. See PortAudio change. - Various other WASAPI improvements.
- See PortAudio git for a detailed list.
FlexASIO 1.1
This is a bugfix release focused on fixing audio discontinuities (glitches) issues related to full duplex operation and compatibility with the REW host application.
Significant changes
- The default value for the
suggestedLatencySeconds
option was changed from zero to 3 times the ASIO buffer length.- This fixes issues with audio glitches (discontinuities) when running in full duplex mode.
- Users who care about latency might want to explicitly set this option back to zero if it works for them.
- Work around a bug in the REW host application which sets the ASIO sample rate incorrectly. See #31.
- FlexASIO would always use its default sample rate even if a different one was selected in REW, resulting in audio playing too slow or too fast.
Minor changes
- FlexASIO now refuses to initialize when an input device is accidentally set as the output device, or vice-versa.
FlexASIO 1.0
🎉 This is the first official stable release of FlexASIO. 🎉
Significant changes
- Add the
sampleType
configuration option which can be used to customize the sample format. Previously, FlexASIO would always use 32-bit float as the sample type. See #13. - When using WASAPI Exclusive mode, FlexASIO will now try to guess the device native sample type and use that, instead of the 32-bit float default. See #13.
- If only input channels or only output channels are used, FlexASIO will only open the corresponding device, not both. See #24.
- Related to the above, FlexASIO will now accept a sample rate as long as the input or output device can accept it. Previously, both devices had to accept the sample rate. See #24.
- This means that WASAPI Shared is now significantly easier to use when using only a single device.
- When using both input and output devices, you still need matching sample rates for WASAPI Shared to work.
- Change the default value of the
suggestedLatencySeconds
configuration option to0.0
, as this seems to be the most sensible value regardless of use case. See #8.- This significantly improves FlexASIO latency in the default configuration.
Minor changes
- Fix a bug where FlexASIO would fail to initialize if there are no audio input devices (or no audio output devices) installed. See #28.
- Fix a bug where FlexASIO would drop the first few audio buffers just after the stream started. See #27.
- Add a Frequently Asked Questions page.
- Overall documentation clean up and improvements.
- The parsed configuration is now dumped to the log. See #26.
- Fix a potential race condition around sample position and timestamps.
FlexASIOTest
now supports sample rates other than 48 kHz.- The FlexASIO source code has been moved to an
src/
subfolder to declutter the GitHub home page.
FlexASIO 0.5a
A few last minute additions to FlexASIO 0.5.
- Fix a bug in 0.5 that prevented WDM-KS from initializing. (Not that much of a regression, since WDM-KS was nearly unusable in 0.4, and was not selectable in previous versions.) With that fix WDM-KS is now operational, but make sure to read the updated documentation in BACKENDS to understand the limitations. Fixes #21.
- FlexASIO will now probe the capabilities of the ASIO host application, and log the results. This will be useful to understand what features are supported by host applications and are therefore worth implementing in the future.
FlexASIO 0.5
You probably want FlexASIO 0.5a. For some reason GitHub is showing the releases in the wrong order.
Significant changes
- Add the
device
configuration option which can be used to change the hardware audio device that FlexASIO will use, instead of using the backend default device. It can also be used to disable the input or output side. See CONFIGURATION for details. Closes #22. - Add
PortAudioDevices
, a command-line utility that outputs detailed information about the list of PortAudio devices. Mainly useful for setting the newdevice
configuration option. - Add the
channels
configuration option which can be used to customize the hardware audio device channel count. See CONFIGURATION for details. Closes #25. - Add the
bufferSizeSamples
configuration option which can be used to customize the suggested ASIO buffer size, instead of the 20 ms default. See CONFIGURATION for details. Closes #19. - Add the
suggestedLatencySeconds
configuration option which can be used to customize the latency hint that is provided to PortAudio. See CONFIGURATION for details. Closes #20.
With the new bufferSizeSamples
and suggestedLatencySeconds
options, FlexASIO is now theoretically capable of ultra-low-latency operation. See the example in CONFIGURATION for a set of options to use as a starting point.
Minor changes
- The default ASIO buffer sizes have changed slightly. The new default behaviour is to advertise minimum, preferred and maximum buffer sizes of 1 ms, 20 ms and 1 s, respectively, at whatever sample rate FlexASIO is set to. Previously, the buffer size did not depend on the sample rate.
- The default PortAudio "suggested latency" is now set to the ASIO buffer size. Previously, FlexASIO would use the "default low latency" number from the PortAudio device information.
- Lots of additional detail added to log messages.
- Core FlexASIO business logic code underwent a lot of refactoring. Watch out for regressions.
- The FlexASIO license has changed from GPL to MIT.
Built from commit 0d26439 with Visual Studio 2017 15.8.7, Visual C++ runtime 14.15.26706, ASIO SDK 2.3.1, PortAudio pa_stable_v190600_20161030.
FlexASIO 0.4
Significant changes
- The default backend used by FlexASIO has changed from WASAPI Shared to DirectSound.
- The goal of this change is to reduce user frustration by making it more likely that FlexASIO will "just work" out of the box; this sidesteps the whole sample rate shenanigans that were required to make WASAPI Shared work.
- Note that this has significant implications in terms of latency and the overall behaviour of the audio pipeline; see BACKENDS for details.
- To go back to the previous WASAPI Shared backend, simply set
backend = "Windows WASAPI"
in your configuration file (see below).
- FlexASIO behaviour can now be customized using a configuration file. See CONFIGURATION for details.
- New configuration option:
backend
, which can be used to change the backend that FlexASIO uses. It can be set to any PortAudio-supported host API, such as MME, DirectSound, WASAPI, or WDM-KS. See BACKENDS for details. - New configuration option:
wasapiExclusiveMode
, which can be used to choose between the shared and exclusive WASAPI modes.
Minor changes
- Attempting to open the FlexASIO "control panel" (settings button) will now display the configuration documentation, instead of doing nothing.
- Fix a FlexASIOTest crash when driver initialization fails.
Built from commit 2c27632 with Visual Studio 2017 15.8.7, Visual C++ runtime 14.15.26706, ASIO SDK 2.3.1, PortAudio pa_stable_v190600_20161030.
FlexASIO 0.3a
Hotfix release that fixes a grave regression introduced in 0.3 that made it impossible to install FlexASIO on Windows 7. See #15. (Windows 8 and greater is not affected.)
FlexASIO 0.3
Significant changes
- Fix a grave bug that can make it impossible to open the audio stream. This can happen under somewhat random conditions, though it seems more likely to happen in 32-bit mode. Closes #14.
- Fix a grave bug that made FlexASIO-provided timing information unusable. The timestamps and sample counts reported by FlexASIO were completely corrupted, potentially causing erratic behaviour in host applications. Closes #9.
- FlexASIO will now log to a text file, instead of requiring the use of a debugger to get the logs. Closes #5. See the README for details.
- Redirect the PortAudio debug output to the FlexASIO log. Closes #4.
- Add
FlexASIOTest
, a command-line self-test utility to help testing and troubleshooting FlexASIO. Closes #7. See the README for details.
Minor changes
- Romove the Microsoft Visual C++ redistributable installers that were introduced in 0.2; go back to shipping the MSVC runtime DLLs directly to address the reboot issue in #12.
- Fix a bug where FlexASIO would violate the ASIO specification by not zero-filling the reserved fields in timing-related data structures.
- Make FlexASIO behaviour more similar to the canonical ASIO SDK example by not setting the speed field in timing-related data structures.
- Increase the resolution of timestamps that are reported to the ASIO host application.
- FlexASIO log lines now include a precise ISO 8601 timestamp. This might make it easier to troubleshoot performance or timing-related issues.
- Include detailed FlexASIO build information, PortAudio build information, and host process information in the FlexASIO log.
- FlexASIO log lines now include the Process ID and Thread ID. This makes it easier to understand the log in context and to troubleshoot race conditions.
- Include version metadata in
.dll
and.exe
file (can be seen in e.g. the "Details" tab on file properties). - Install the 64-bit (x64) and 32-bit (x86) binaries in different subfolders to make it easier to bundle dependent DLLs.
- Ship PDB files with the installer to make it possible for end users to get proper thread stacks.
- Remove version information from registry.
Built from commit d42407f with Visual Studio 2017 15.8.7, Visual C++ runtime 14.15.26706, ASIO SDK 2.3.1, PortAudio pa_stable_v190600_20161030.
FlexASIO 0.2
- 64-bit ASIO host application support.
- Installer now cleanly installs the MSVC++ runtime instead of using local DLLs.
Built from commit 2bc9eeb with Visual Studio 2017 15.8.7, Visual C++ runtime 14.15.26706, ASIO SDK 2.3.1, PortAudio pa_stable_v190600_20161030
.