Announcing a new DLL
for developers of professional *ASIO audio applications...
ASIOHost.dll 3rd Edition
*ASIO is a trademark of Steinberg Media Technologies GmbH
Contact me for licensing details.
ASIOHost provides a full duplex interface between your professional audio application and the sound card, exposing its capabilities for easy access, allowing you to focus on developing functionality and UI without having to be concerned about details of the ASIO driver. ASIOHost supports the latest ASIO 2.2 standard, and supports as many channels as the system can manage. The design goal was flexibility while maintaining high performance, low CPU load and small footprint in RAM. In these days of over-bloated applications and components consuming megabytes on the hard drive, the release version of ASIOHost weighs in at a tiny 26 kb - an astonishingly small size considering all the features it offers. The buffer servicing and bit rate conversion routines were developed in hand optimized assembler code to be fast and efficient, leaving resources free for pumping audio through multiple channels at rates of up to 192,000 samples per second at 32 bits per sample.
Professional audio applications ideally should run on a real-time operating system, and Windows is anything but. The challenge in interfacing with an audio device is to match the driver's real time buffer servicing interrupt demands to Window's unpredictable file I/O. If this coupling is not correctly carried out, one may find tiny drop outs in a recording or such may be audible. It takes years of experience and a lot of testing to design a sound engine that is impervious to Window's whims.
ASIOHost represents the pinnacle of experience gained over years of developing software for "mission critical" audio. Buffer servicing for the ASIO driver is isolated from buffer servicing in the application such that in no way can an inordinate delay in application side buffer servicing cause a hold up in ASIO's real-time buffer switching thread, or crash the ASIO driver. ASIOHost's innovative design, together with *common sense platform optimization yields a high level of confidence in capturing clean, sample accurate professional audio without stressing the device. *While beyond the scope of this discussion, common sense platform optimization begins with simple measures such as disabling anti-virus software and Windows search indexing during recording sessions. More information on this topic can be found on sound card manufacturer's web sites.
Application Interface Overview
ASIOHost supports sound cards with 16, 24, or 32 bit samples. You may choose to pass 16 bit audio data to ASIOHost and receive 16 bit samples from it, and sample bit width will be converted the between the application and the device's sound buffers on the fly as required. Alternatively you may choose to employ the device's sample bit width across the board, or on a per channel basis. You may elect to have a different bit width for play than for record on any given channel. For example, on a sound card that runs natively at 32 bits per sample, you may chose some channels to employ this bit width while others run at 16 bits per sample, or perhaps play 16 bit samples on one track while recording a track in sync to that at the full 32 bits per sample resolution.
Any sample rate supported by the sound card may be used, and there are functions supplied to get and set the sample rate. To provide flexibility to create a wide range of applications, a total of 24 functions are exported from the current version of the DLL.
ASIOHost features various modes that present a sound card's inputs and outputs to the application individually, or in stereo pairs. Thus the sound card is mapped to "virtual channels" according to the mode. A set of virtual channels can be record only, or play only, or full duplex for playing and recording at the same time.
The modes available are:
It is expected that the application will only be interested in a particular mode, such as MONO_PLAY_ONLY for a PA (Public Address) system, or STEREO_PLAY_ONLY for a music player, while a sound editor may want STEREO_PLAY_RECORD. In your application any number of virtual channels can be ganged together to start and stop in synchrony.
There are only a few steps required to be up and running with ASIO audio. These steps are:
A variety of functions are provide to configure options and retrieve information. Included are functions to:
Get the SDK
The SDK (software development kit) includes demos, documentation and source code for a demo application that illustrates how with only a few lines of code you can be up and running in minutes.
Included in the SDK is a free version of the DLL both to permit evaluation without obligation, and for the pleasure of hobbyists who would like to develop audio applications for ASIO devices. The free version provides only a subset of the capabilities of the full licensed version, but its performance is not diminished in any way. It provides the same efficient audio path to and from the device that the full licensed version provides for 16 bit samples. The free version is restricted to 16 bit audio in 2 virtual channels in mono modes or 1 virtual channel in stereo mode, but any mode may be selected - thus offering full duplex operation. Here is an example of what can be built on top of the free version.
Here is a page with some useful source code. The SoftCW project contains a class in ASIOSupport.cpp that demonstrates how simple it is to provide ASIO access to the sound card.
The free version is offered for your use on one condition - it may not be employed in a commercial application, or in exchange for money or other consideration. You need a licensed version for that. If you develop something interesting with it and care to share it, I would be happy to put a link to your ASIOHost application here - or even host it for you.