Releases: dechamps/FlexASIO
FlexASIO 1.10b
This is a hotfix release to address a regression in FlexASIO 1.10 that can result in hangs/freezes in some applications (most notably, Cycling 74' Max 8) that do not signal outputReady()
for the last bufferSwitch()
while stopping. See #235.
FlexASIO 1.10a
This is a hotfix release to address a severe regression in FlexASIO 1.10 that can prevent FlexASIO from working with many applications. See #231.
FlexASIOTest was also improved so that it will be able to catch this particular issue in the future.
FlexASIO 1.10
WARNING: a severe bug has been identified in this release that can prevent FlexASIO from working with many applications. See #231. It is strongly recommended to use FlexASIO 1.10b instead.
Significant changes
- The default DirectSound backend is now capable of transporting floating-point and 24-bit integer samples. Previously it would always downconvert to 16-bit. See PortAudio/portaudio#774.
- The MME backend is now capable of transporting floating-point and 24-bit integer samples. Previously it would always downconvert to 16-bit. See PortAudio/portaudio#796.
- Fix issue where FlexASIO could crash applications or otherwise cause erratic behavior after it is deinitialized, especially if that is done repeatedly. See #209.
- Fix issue where FlexASIO would crash some applications that already link with PortAudio directly (e.g. Mixxx, Polyphone). See #182.
- This was originally fixed in FlexASIO 1.5 (see #47), but regressed again in FlexASIO 1.8.
- Fix issue where FlexASIO would crash applications that attempt to use multiple FlexASIO instances at the same time. See #183, #230.
- This would notably affect Synchronous Audio Router (SAR) and potentially applications based on the xt-audio library.
Minor changes
- Sample rate probing is now more efficient and should return correct results even while an exclusive stream is running. See #188, #66.
- Previously, FlexASIO would report all sample rates as available while an exclusive stream is running.
- Fix issue where WDM-KS is not able to probe sample rates of WaveRT-based devices, and is not able to open them if the suggested latency is zero. See #159, PortAudio/portaudio#761.
- Fix issue where WDM-KS would produce glitchy recordings from WaveRT-based devices. See PortAudio/portaudio#752.
- Fix issue where FlexASIO may output corrupted audio if an application readies output buffers after returning from
bufferSwitch()
. See #180. - The maximum sample rate has been increased from 384 kHz to 768 kHz. See PortAudio/portaudio@ed922d9.
- Fix a potential issue where FlexASIO would reject control panel calls if they are made before initialization. See #184.
- Fix a bug in FlexASIOTest where it would always operate in "inhibit
OutputReady()
" mode even if the--inhibit-output-ready
command line option wasn't passed.
FlexASIO 1.9
Significant changes
- FlexASIO now supports a new PortAudio feature: WASAPI loopback recording.
- This takes the form of new WASAPI input devices whose name end with
[Loopback]
. These devices make it possible to capture the output of the corresponding output device ("record what you hear"). See #150, PortAudio/portaudio#668. - For more information, see the updated WASAPI documentation.
- This takes the form of new WASAPI input devices whose name end with
Minor changes
- FlexASIO will now refrain from logging if the logfile size exceeds 1 GB. See #146.
- This is to avoid accidental disk space exhaustion when forgetting to remove the logfile.
- Fix potential compatibility issues with some ASIO host applications (e.g. Audio Precision) that make ASIO calls with invalid/bogus sample rates. See #135.
- PortAudio was updated to latest master.
FlexASIO 1.8
Significant changes
- Fix a bug that could prevent some applications from working with FlexASIO. See #122.
- The ASIO "Control Panel" button now opens FlexASIO GUI if it is installed. See #92.
Minor changes
- PortAudio changes notably include:
- Fix potential glitching when using WASAPI Exclusive with 24-bit integer sample type. See PortAudio/portaudio#508.
- Fix bugs with MME buffer size calculation. See PortAudio/portaudio#571.
- Introduce a new
deviceRegex
option that makes it possible to match a device name using a regular expression. See #129. - The default output of
FlexASIOTest
is now simpler and easier to read. See #111. - The installer won't open the README in silent mode anymore. See #119.
- Thanks @ThreeDeeJay for providing the fix in #130.
FlexASIO 1.7a
This is a hotfix release containing the following changes:
- Fix a bug where WASAPI Exclusive would wrongly detect the sample type of some 24-bit devices as
Float32
(instead ofInt24
).- In FlexASIO 1.7 this could result in failure to initialize; in previous versions this could compromise bit-perfect operation.
- See #106.
FlexASIO 1.7
Due to a format autodetection bug affecting WASAPI Exclusive (see #106), it is recommended to use release 1.7a instead.
Significant changes
- Improvements have been made to PortAudio WASAPI buffer management, which can potentially reduce glitching when using WASAPI and/or allow the use of smaller buffers and smaller latencies, especially in WASAPI Shared mode. See PortAudio/portaudio#303.
- FlexASIO now guarantees bit-perfectness in WASAPI Exclusive mode.
- Implicit sample type conversions will not occur anymore; if the configured sample type is not supported by the hardware, initialization will fail.
- The previous behavior can be restored by setting the new
wasapiExplicitSampleFormat
option tofalse
.
Minor changes
- Fix an edge case where PortAudio could fail to initialize because of a single faulty WASAPI audio device. See PortAudio/portaudio@522f982.
- This potentially improves compatibility with Synchronous Audio Router (SAR). See #68.
- Fix an edge case when using WASAPI where channel names could be incorrect if the Windows audio engine channel count and the native hardware channel count don't match. See #94.
- Fix potential crashes during initialization due to WDM-KS choking on unusual audio driver configurations. See PortAudio/portaudio#300.
FlexASIO 1.6
Significant changes
- FlexASIO can now react to changes to the configuration file while running.
- A change to
FlexASIO.toml
will make FlexASIO issue a driver reset request to the application. What happens next is up to the application; ideally, it should reload FlexASIO and pick up the new configuration.
- A change to
- When an exclusive stream is currently running, FlexASIO now advertises every sample rate as available. Previously, it advertised none.
- This prevents applications (most notably Ableton, Cubase, Max MSP) from misbehaving because FlexASIO is unable to probe sample rates while an exclusive stream is active. See #66.
Minor changes
- A default minimum 10 ms buffer size is now advertised when using DirectSound with an input device (which is the default).
- This prevents applications (in particular, Pro Tools) from requesting a buffer size that is too small for DirectSound input. See #15.
- This can always be overridden using the
bufferSizeSamples
option.
- A lower limit of 32 samples is now enforced on the default minimum buffer size.
- This prevents applications (in particular, Max MSP) from misbehaving when faced with very small buffer sizes. See #88.
- This can always be overridden using the
bufferSizeSamples
option.
PortAudioDevices
now displays device names with non-ASCII characters (e.g. accents) correctly when running in a console. See #73.- Prevent deadlock when an application's
bufferSwitch()
callback waits onASIOStart()
.- This fixes a hang when WASAPI is used with with foobar2000
foo_out_asio
. See #60.
- This fixes a hang when WASAPI is used with with foobar2000
- Benign: fix crash when driver functions are called while uninitialized. See #74.
- Benign: fix issue with FlexASIOTest not being able to read audio files whose frame size is not a divisor of 12288 (e.g. 6-channel 24-bit).
FlexASIO 1.5
Significant changes
- FlexASIO now accepts any sample rate and channel count in WASAPI Shared mode. See #32.
- This fixes a long-standing annoyance with WASAPI Shared.
- This is done by instructing WASAPI to convert the sample rate and channel count internally, just like DirectSound and MME already do.
- This new behaviour is enabled by default but can be disabled using the
wasapiAutoConvert
option.
Minor changes
FlexASIO 1.4
Significant changes
- Fix a bug where FlexASIO waits until the worst possible time to provide the next output buffer, increasing output latency by one buffer length. See #40.
- Added support for
ASIOOutputReady()
, enabling compatible ASIO Host Applications to achieve a one buffer length reduction in output latency. See #4. - Speed up the beginning of streaming by providing initial buffers to PortAudio (instead of silence). See #40.
- Fix a bug where FlexASIO underestimates output latency by one buffer length. See #40.
- Fix a bug where FlexASIO provides slightly wrong ASIO timestamp information to the Host Application. See #40.
- Change the
directProcess
ASIO flag fromfalse
totrue
in buffer switch callbacks. This can potentially improve performance with some ASIO Host Applications. See #40. - Various performance improvements that provide more time budget for processing events, making audio glitches (discontinuities) from missed deadlines less likely, especially with small buffer sizes.
Minor changes
- Many improvements to the
FlexASIOTest
test program:- Add the
--input-channels
and--output-channels
options. - 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-mode
option to customize the way the log is output. FlexASIOTest.exe
has been refactored into a small wrapper around a DLL containing the testing logic,ASIOTest.dll
.- Fill the first buffer before calling
ASIOStart()
instead of waiting until the first buffer switch. - Optionally call
ASIOOutputReady()
when an output buffer is filled. - Add
--buffer-switch-delay-ms
option for adding an artificial delay to buffer switch callbacks. - Exit cleanly when receiving a CTRL+C signal during streaming.
- Call
ASIOStop()
even when streaming failed. - Do not wait for a buffer switch if
--buffer-switch-count
is zero.
- Add the
- Ship PDB files in the installer (again) to allow troubleshooting tools (Process Explorer, Process Monitor, Windows Performance Analyzer, WinDbg, etc.) to understand FlexASIO stacks.