06 Mar 2004: Version 1.8
- There wasn’t anyone objecting to the changes in 1.8 beta 1, hence this is becoming the final version. Two more changes..
- Improved Direct DMA mode restart behavior. This makes this mode somewhat usable in Cakewalk Sonar.
- Fixed a bug that may/may not have caused crashes/erratic behavior when resampling was active.
1.7 (Feb 25th 2004)
- Direct DMA Mode no longer selectable for PCMCIA devices.
- Changing the sample rate in the host application should not cause erratic behavior anymore.
- There was a race condition that caused Sonar to crash on occasion. This has been fixed.
- Direct DMA Buffer mode resyncs somewhat faster now, sometimes and under some circumstances…
- Finally: 44.1kHz Sample Rate 4 ALL! I did the leg work reading up on that DSP stuff. ASIO4ALL now does sample rate conversion whenever required in order to support 44.1 kHz. As far as my personal judgement, I would consider resampling quality decent at least – can _you_ hear a difference? Not too bad when considering that my last piece of DSP work was like 12 years ago… Resampling currently only works in buffered mode (DMA box _not_ checked)
- Also, there is a new check box that lets you force resampling at 44.1kHz (always resampled from/to 48kHz). The reason for this option: I discovered that a number of low-cost audio gear have the WDM driver resample on-the-fly. The quality of this, more often than not, is very questionable. Further, you may have ended up in a situation where decent latency figures were achievable @48kHz, but severe crackling did occur at 44.1kHz. If this sounds like your system, this would be the box to check (Well, at least, this was the ultimate fix for _my_ lappy…)
- Added another check box: ‘Disable Input’. The purpose of this one is explained easily: If you do not need ASIO input, you can achieve better overall latency i.e. smaller buffer sizes when checking this option.
- Changed the behavior of the Control Panel somewhat: Whenever you check the Direct DMA box and the current settings are not very reasonable, buffer size and iodelay settings are adjusted to reasonable defaults. This is because some settings that are o.k. in buffered mode simply don’t make sense in Direct DMA Mode and may make the user believe that Direct DMA Mode does not work on their system due to excessive crackling for a prolonged period after switching to this mode. Always remember: Direct DMA Mode is a cool feature, but it needs a couple of seconds to settle down whenever the driver is re-started. Unfortunately, Cakewalk Sonar, for instance, restarts ASIO on every playback/stop/playback cycle, making Direct DMA Mode virtually unworkable in this environment.
- In order to improve the “User Experience” in multi-device setups, all control panel settings are now stored per device. Switching between devices will recall previously applied settings.
- In buffered (non-DMA-) mode the driver is now less likely to drop input buffers. This means an improvement in input quality/latency on some systems.
- Direct DMA Buffer Mode has been redesigned for more stability and timing accuracy. Unfortunately, this requires you to re-adjust the Buffer Size and Delay settings. So, if you had a setting of 128/3/3 in the past, you would now end up with e.g. 128/6/8. This does not mean an increase in latency, however! It is just that the physical ranges of these sliders have moved somewhat. Also, an issue has been fixed that would have made it impossible to set a reasonable Input Delay on some systems.
- Improve media synchronization in Direct DMA Buffer Mode.
1.6 (Feb 2nd 2004)
- Added a facility and desktop shortcut to launch the control panel off-line. Off-line changes have no immediate effect. Hope you like the artwork 😉
- Workaround for broken Creative drivers, causing a BSOD with some Sound Blaster cards. The Microsoft drivers for the same cards appear to have always worked fine.
- Fixed a bug that caused no inputs being available with some USB devices.
- Fixed a bug that would make the driver not work with some applications if the audio device does not support 48kHz.
- Added workaround for situations where a buggy host meets a buggy WDM driver. This would manifest itself in an ASIO driver error if the application is started the second time.
- Minor change that might improve input quality in certain setups.
1.5 (Jan 26th 2004)
- Made it work with ISA cards (yeah, right!) that do not support 48000Hz sampling rate, such as the ESS Audio Drive series – well, as long as there’s a WDM driver, why not give it a try?
- Requirements for DMA box being shown have been relaxed a little. Never check this for USB devices, though!
- Fix a problem with multi-channel recording cards i.e. it runs on my DSP2000 C-Port again 😉
- Direct DMA Buffer mode has been tweaked a little for better performance (needs testing) As a negative side effect, things may need a longer time to get in sync after you start the application or apply some changes in the control panel. Resyncing will take a couple seconds now, during which crackling and stuff will be heard.
- General workaround for all host applications that happen to drop BufferSwitch() calls. Makes Reason workaround obsolete i.e. no special treatment anymore. Should sort of fix things for Tracktion, too.
- Samplitude no longer crashes when trying to open the control panel.
- Add a Message Box whenever it has been found that the audio device is already in use. In nine out of ten cases this is because the ‘Microsoft GS Wavetable SW Synth’ is enabled as a MIDI output device somewhere.
- Add a version number display to the ASIO control panel so it is not so easy anymore to get things mixed up.
1.4 (Jan 19th 2004)
- There has been a really important fix and so I decided to release a new version just one day after the last one. On the way from rev 1.1 to 1.2 I introduced an extremely stupid bug that made seem stuff not work anymore that used to run just fine with rev. 1.1
- The ASIO control panel is now being updated immediately after a different audio device has been selected. This used to be a minor annoyance in systems with more than one audio device.
1.3 (Jan 18th 2004)
- Good news for some! ASIO4ALL now works with even more audio devices. There now is a new checkbox ‘Force 16bit Samples’, which activates a workaround for a situation where the WDM driver reports a bit depth of e.g. 20 but has no plans to actually support that when asked. In ‘normal’ Windows this is no problem because in Windows, everything is just 16 bit. But ASIO4ALL tries to max out your hardware, also as far as bit depth. Most notably this workaround has been reported to get SigmaTel chips to work with ASIO4ALL.
- Minor change in the way ASIO4ALL connects to the WDM driver interface.
1.2 (Jan 15th 2004)
- This time it’s been quite a number of changes. I’m not through with everything yet, but because of the number of fixes/ improvements already made, I decided to put out this new version for the time being.
- Fixed a rather stupid bug in the code that would have caused distorted output on all channels except the left one for devices where input and output bits per sample are not the same. To add insult to injury, most newer AC97 codecs fall into that category (e.g. 20bit output/16bit input). Sorry ’bout that!
- Add workaround for a number of ill behaved host applications. If you ever encountered this phenomenon: You start your host application, enter the ASIO control panel, optimize buffer settings so you have a clean sound and then exit and restart the application and all of a sudden you are in crackling hell -> curse no longer, we now have a workaround for that! This only applies to buffered mode i.e. Direct DMA Buffer option _not_ checked.
- Improve support for some multi-channel devices and fix an issue with devices that did show up in the device list but no sample rate could be set (Actual error message depends on how much your sequencer got confused by that) More cards should be able to run on 44.1kHz vs. 48kHz only.
- Add support for 24bit packed PCM sample format (vs. 32bit), which should resolve an issue with >16bit devices that do not support 32bit PCM output.
- Fix plenty of reasons why it could have crashed when doing stuff in the ASIO control panel (Oh well…)
- Enable operation with devices that have no inputs. In this case, two phantom inputs are created, because some applications seem to require this.
- USB audio devices should now show up in the device list. (at least some should, still having problems with others…) If you install this version over a previous one or if other things happen that I have no control over, you may be able to check the Direct DMA Buffer option in the ASIO control panel for your USB audio device: DON’T! (unless your favorite color is blue). The Windows internal USB audio driver (usbaudio.sys) has a bug that makes the system go kaboooom if you enable this option for USB audio devices!
- Update on the Reason issue: I have received a response from the Propellerheads and it seems that my error description below is not entirely correct. With the information I have received, I have been able to implement a much better workaround. If you are using this with Reason this new version is a must. Crackles due to screen updates are virtually history now! The Low Priority Audio check box introduced in rev. 1.1 is gone. The driver now automatically checks for Reason being the current host application and silently applies the (better) workaround in this case.
1.1 (Jan 5th 2004)
- Fix a bug in the device enumerator that under certain circumstances would prevent some devices from showing up in the device list.
- Add workaround for some weird Reason behavior. This is experimental, though. There is a new check box now which you are supposed to check if and only if you are running Reason with this driver. If you are a Propellerhead reading this: What makes you think that calling ASIOoutputReady() asynchronously is going to help matters in any way one can think of? Do it like the rest of the Industry do: BufferSwitch()->FillOutput()->ASIOoutputReady()->MoreStuff()->Return(). Suddenly you’ll realize that things do not necessarily have to crackle if you move stuff around the screen. It does not need an extra thread, get rid of it!
- Installation over a previous version no longer resets the control panel settings to defaults. In order to install with default parameters, you need to uninstall the previous version first.
- Added Direct DMA Buffer I/O for devices that support it. This mode is very soft on the CPU and latencies can be achieved that are equal to the values one gets with pro gear.
- In order to understand why this works on some systems and on others it does not, one needs to know that WDM audio drivers come in two flavors: WaveCyclic and WavePci. We only have a chance with WavePci, because these drivers do not actually copy audio data from our buffer but rather make the buffer we submit to them their current DMA buffer. But we still know where our buffers are, even after we submitted them to the WDM audio driver, right? Thus, when writing to the buffer currently being played, we are writing directly to the DMA buffer! The tricky bit is to figure out where exactly to write and how to keep things in sync.
- In a nutshell, this is how the Direct DMA Buffer mode works. Unfortunately, most consumer grade stuff comes with WaveCyclic type drivers only, it seems. [Update] More feedback has now given me the impression that ironically some of the most widespread AC97 chips actually _do_ support this mode, contrary to my statement above. Good news? Maybe for you but not for me since the ‘Ali Audio Accelerator’ on my lappy isn’t one of these! *grrrrrrr*
- Some minor improvements.
- First stable version.