Skip to content

Releases: dechamps/FlexASIO

FlexASIO 1.10b

02 Jun 11:10
Compare
Choose a tag to compare

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

27 May 09:19
Compare
Choose a tag to compare

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

26 May 22:12
Compare
Choose a tag to compare

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.
    • This is suspected to be the root cause of Dorico crashes. See #208.
    • More generally, the config watcher code has been revamped to be more robust and more efficient.
  • 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.

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

07 May 10:05
Compare
Choose a tag to compare

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.

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

16 Oct 20:53
Compare
Choose a tag to compare

Significant changes

  • Fix a bug that could prevent some applications from working with FlexASIO. See #122.
    • One example of an affected application is vvvv. More generally this affects all applications based on NAudio.
  • The ASIO "Control Panel" button now opens FlexASIO GUI if it is installed. See #92.

Minor changes

  • PortAudio changes notably include:
  • 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.

FlexASIO 1.7a

04 Jan 09:18
Compare
Choose a tag to compare

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 of Int24).
    • 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

02 Jan 20:42
Compare
Choose a tag to compare

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.

Minor changes

  • Fix an edge case where PortAudio could fail to initialize because of a single faulty WASAPI audio device. See PortAudio/portaudio@522f982.
  • 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

04 Sep 19:37
Compare
Choose a tag to compare

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.
  • 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 on ASIOStart().
    • This fixes a hang when WASAPI is used with with foobar2000 foo_out_asio. See #60.
  • 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

23 Jun 15:39
Compare
Choose a tag to compare

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

  • Fix issue where FlexASIO would crash applications that already link with PortAudio directly (e.g. Polyphone). See #47.
  • Fix issue with FlexASIOTest being unable to read 24-bit files. See #42.

FlexASIO 1.4

03 Feb 17:23
Compare
Choose a tag to compare

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 from false to true 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.
  • Ship PDB files in the installer (again) to allow troubleshooting tools (Process Explorer, Process Monitor, Windows Performance Analyzer, WinDbg, etc.) to understand FlexASIO stacks.