- Notifications
You must be signed in to change notification settings - Fork83
A flexible universal ASIO driver that uses the PortAudio sound I/O library. Supports WASAPI (shared and exclusive), KS, DirectSound and MME.
License
dechamps/FlexASIO
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Brought to you byEtienne Dechamps -GitHub
ASIO is a trademark and software of Steinberg Media Technologies GmbH
If you are looking for an installer, see theGitHub releases page.
FlexASIO is auniversalASIO driver, meaning that it is not tied tospecific audio hardware. Other examples of universal ASIO drivers includeASIO4ALL,ASIO2KS,ASIO2WASAPI.KoordASIO is a derivative ofFlexASIO that focuses on WASAPI and user convenience.
Universal ASIO drivers use hardware-agnostic audio interfaces provided by theoperating system to produce and consume sound. The typical use case for such adriver is to make ASIO usable with audio hardware that doesn't come with its ownASIO drivers, or where the bundled ASIO drivers don't provide the desiredfunctionality.
While ASIO4ALL and ASIO2KS use a low-level Windows audio API known asKernel Streaming (also called "DirectKS", "WDM-KS") to operate, andASIO2WASAPI usesWASAPI (in exclusive mode only), FlexASIO differentiatesitself by using an intermediate library calledPortAudio that itselfsupports a large number of operating system sound APIs, which includes KernelStreaming and WASAPI (in sharedand exclusive mode), but also the more mundaneAPIsMME andDirectSound. Thus FlexASIO can be used to interface withany sound API available on a Windows system. For more information, see thebackends documentation.
Among other things, this makes it possible to emulate a typical Windowsapplication that opens an audio device inshared mode. This means otherapplications can use the same audio devices at the same time, with theWindows audio engine mixing the various audio streams. Other universal ASIOdrivers do not offer this functionality as they always open audio devices inexclusive mode.
- Windows Vista or later
- Compatible with 32-bit and 64-bit ASIO Host Applications
After running theinstaller, FlexASIO should appear in the ASIOdriver list of any ASIO Host Application (e.g. Cubase, Sound Forge, Room EQWizard).
The default settings are as follows:
- DirectSoundbackend
- Uses the Windows default recording and playback audio devices
- 32-bit float sample type
- 20 ms "preferred" buffer size
All of the above can be customized using aconfiguration file.You might want to use a third-party tool such as flipswitchingmonkey'sFlexASIO GUI to make this easier.
For more advanced use cases, such as low-latency operation and bit-perfectstreaming, see theFAQ.
TheFAQ provides information on how to deal with common issues. Otherwise,FlexASIO provides a number of troubleshooting tools described below.
FlexASIO includes a logging system that describes everything that ishappening within the driver in an excruciating amount of detail. It isespecially useful for troubleshooting driver initialization failures andother issues. It can also be used for verification (e.g. to double-checkthat FlexASIO is using the device and audio format that you expect).
To enable logging, simply create an empty file (e.g. with Notepad) namedFlexASIO.log
directly under your user directory (e.g.C:\Users\Your Name Here\FlexASIO.log
). Then restart your ASIO HostApplication. FlexASIO will notice the presence of the file and startlogging to it.
Note that the contents of the log file are intended for consumption bydevelopers. That said, grave errors should stick out in an obvious way(especially if you look towards the end of the log). If you are havingtrouble interpreting the contents of the log, feel free toask for help.
Do not forget to remove the logfile once you're done with it (or moveit elsewhere). Indeed, logging slows down FlexASIO, which can lead todiscontinuities (audio glitches). The logfile can also grow to a verylarge size over time. To prevent accidental disk space exhaustion, FlexASIO willstop logging if the logfile exceeds 1 GB.
FlexASIO includes a program that can be used to get the list of all the audiodevices that PortAudio (and therefore FlexASIO) knows about, as well as detailedinformation about each device.
The program is calledPortAudioDevices.exe
and can be found in thex64
(64-bit) orx86
(32-bit) subfolder in the FlexASIO installationfolder. It is a console program that should be run from the command line. Itdoesn't matter much which one you use.
FlexASIO includes a rudimentary self-test program that can help diagnoseissues in some cases. It attempts to emulate what a basic ASIO hostapplication would do in a controlled, easily reproducible environment.
The program is calledFlexASIOTest.exe
and can be found in thex64
(64-bit) orx86
(32-bit) subfolder in the FlexASIO installationfolder. It is a console program that should be run from the commandline.
It is a good idea to havelogging enabled while running the test.
Note that a successful test run does not necessarily mean FlexASIO isnot at fault. Indeed it might be that the ASIO host application thatyou're using is triggering a pathological case in FlexASIO. If yoususpect that's the case, please feel free toask for help.
FlexASIO welcomes feedback. Feel free tofile an issue in theGitHub issue tracker, if there isn't one already.
When asking for help, it is strongly recommended toproduce a logwhile the problem is occurring, and attach it to your report. The output ofFlexASIOTest
, along with its log output, might also help.
About
A flexible universal ASIO driver that uses the PortAudio sound I/O library. Supports WASAPI (shared and exclusive), KS, DirectSound and MME.