I think it is time for a technobabble article about Propellerhead Reason. By reading different Q&A posts (Reddit, forums and so on) is that there is a lot on the subject about Realtek ASIO drivers and ASIO4ALL drivers. These subjects always come back. DirectX drivers are usually not really a subject matter but I am going to bring these on the table and discuss it. Just to put this in to context, the topic about audio card drivers has a history. First of, there is latency. We all know that latency is bad because of a few things: the responds time of what is happening on screen needs to be in sync with what you are hearing. Second, if you play a midi instrument a high latency will be a killer to work with. So in most of those cases you want to have a lower latency as possible but still enjoy what you are playing / making.
With that intro out of the way, let the technobabble begin
Why ASIO drivers?
Lets start with the basic question: Why should I use ASIO?
ASIO stands for Audio Stream Input and Output. It was a technology originally designed by Steinberg to make use of Input / Output directly towards the AudioCard. In normal Operating System operations the OS would sit in between to determine what gets processed towards the sound card and different hardware (since this is normally determined by the OS itself). The operation on how to access the soundcard usually is different per Operating system. So from that angle, ASIO made it a lot easier to work with especially when it comes to Digital Audio Workstations. Because the I/O is handled directly towards the audio card the stream itself can be processed much faster.
Just to put this in a diagram. The following flow could be seen as the audio / video outputs while it is handled on a Non-ASIO system:
If you compare that with the ASIO flow, it becomes a different story since it would be look more as followed:
Please take these diagrams with a grain of salt. Since I have taken a lot out of the picture since there is just more to it then this. But understanding how ASIO works in terms of communicating directly with the Audio card, that is the most important part to know. Because this also leads to a lot of issues with ASIO to begin with.
So the answer to the question: why Asio?
Anwser: because it communicates directly to the Audio Card.
Why are there different ASIO drivers?
This brings us to the next question that seems to pop up all the time. Just to name a few: RealTek Asio drivers, Novation ASIO Drivers, Hercules ASIO Drivers and ASIO4ALL. The thing here is, some hardware companies decided to make an ASIO driver for their product. This allowed the hardware manufacturer to make the ASIO driver very specific for their product. The problem here: maintaining the driver to the latest standards is a time consuming task (since they need to build the individual drivers for the OS AND the ASIO drivers for the different OS). The increase of workload increased.
The answer to many manufacturers their problems came first in the form of ASIO4ALL. The major benefit with ASIO4ALL is that it acts like a transparent bridge to talk to, yet still have the benefits of communicating with the Audio Card driver directly with out having a chit-chat with the operating system in between. Because Asio4All was such a specific standards to work with a lot of hardware manufactures decided to stop producing their own brand for an ASIO driver. Realtek ASIO would be one of those that would stop being developed (there is another reason for this, I will get back to this).
Because at first ASIO wasn't that transparent, different companies decided to make their own unique ASIO driver (based on the specifics of Steinberg their original ASIO driver). Asio4All kind of made it obsolete, yet still there are companies that make specific drivers for specific reasons.
This usually leads to the next question... (tada)
What Audio Driver in Reasion should I choose?
For the Pre-Windows 10 reason are (I will call it just that), the drivers you can normally pick from are as followed:
- MME Drivers (always supported, highest latency)
- Direct X (not always supported, average latency, when it works then this works flawless)
- Company Asio Drivers (if you have the company specific ASIO driver, go for that)
- ASIO4ALL (low latency, has issues)
When you do audio recording (eg with a microphone) then there is only one option left:
- ASIO4ALL (low latency, is the only option that allows you to record audio)
Why ASIO is becoming an outdated driver?
From a recording perspective and Propellerhead Reason that is, we will always need (till this day) need ASIO drivers to record. DirectX drivers have been improving since Windows 7 was released. Since the early 2012 the HAL (Hardware Abtraction Layer) has been changed. Perfomance of Mac-OSx has improved a lot (kernel was renewed). While software manufacturers / hardware manufacturers are strongly having an influence on what they expect from either a PC / Mac their Operating systems need to adapt on these as well. Latency is just one of those things.
As additional information, a few months ago Microsoft released an updated article about their latency changes on audio interfaces and how the Operating system handles them: Low Latency Audio. They have to make these changes because the mobile market kind of dictates them to do this. So from this angle, it makes sense that Operating system drivers will have way better responses then what they would have back in 2011.
Just as a fair comparison. My computer has not changed since Windows Vista was there (I have my computer for 7 years now, only the video card has been replaced and the power adapter). I also want to point out I have been running Direct X drivers since day one. Just because of the fact that I do complicated Video Recording sessions and I can not use ASIO in those type of sessions (this gets very specific).
Back in 2007 I had a latency of around 128ms. I adapted with this latency and got used to the idea that it was there while making videos.
In 2012 I had a latency around 24ms while running Windows 7. Which was quite rock solid after the HAL was updated.
In 2017 I have a latency of around 2ms. (that is the maximum I can get in certain situations).
This is what I use a proof of concept that latency and direct-x has been decreasing over the years. There are several articles that will address a similar or same conclusion regarding this topic. The only reason why we still need ASIO drivers, is just because Propellerhead Reason does not allow an Audio Input when the driver is not ASIO (Which I personally don't get at this point. But ok, that is a different discussion).
Another reason why ASIO might become a bit outdated as a concept: updates on ASIO are slow. They barely change features, nor really adapt new features. The obvious reason is that the idea behind sending Input Outputs (and the concepts) will mostly be the same. The manufacturers of new hardware needs to adapt to the protocol itself (kind of like VST). This kind of makes sense at some extend. But while Operating systems are closing in on similar lower latency as ASIO drivers do, at some point in time I will see that ASIO would disappear in total. It is just a matter of time when this happens.
Problems with ASIO drivers
This kind of brings me to the last segment of this article. The problems with ASIO drivers are greater then using a Soundcard with lets say Direct-X these days. Back in the days that Propellerhead wrote their "What Audio Driver should I use" they state the following:
- Not all cards come with DirectX drivers. However, drivers for some cards are included with DirectX itself.
- Using a card via a DirectX driver gives you a shorter latency, between 40 and 90 milliseconds.
- If you use DirectX 3 or later, all programs that access the card via DirectX and make use of the DirectX “secondary buffer” feature can use it at the same time, and Reason Adapted version 4 can play in the background.
This says something. Because:
- Every soundcard comes with DirectX drivers these days. Name me one you have bought in 2017 that does not have a Direct X driver?
- Using Direct-X these days give a lower latency then the mentioned 40/90 ms.
- DirectX 3 was released September 15, 1996
Now sorry to nit pick the documentation of their site. And no, I won't shut up either ;) But this kind of always goes back towards the whole discussion: DirectX vs ASIO and why ASIO is so much better. But ok, that is different discussion.
The issues with ASIO I am getting a lot from users are the following:
- When I launch the program, I have no sound. Why?
- When I play reason for a while the audio card starts to play 'glitches'
The first question I have answered not so long ago with the following (I'll be just lazy and copy paste it)
Wrong driver selected in the audio preferences: this needs to be Asio4All. If you use any other driver (like DirectX/MME) audio input will not work
Asio4All can't recognize the soundcard. This is inside the "Control Panel" on the Preferences > Audio of Reason (or there is a separate tool for this called Asio4all control panel). In there it show cases which sound cards are selected inside Asio4All for inputs and outputs. If something is locked (or setup wrong) it will display an 'x' on the individual sections of the soundcard.
Using Asio4All + Reason + any different program using the soundcard, no sound is playing in Reason (but the other program does work). The problem here with Asio4all is that it locks the sound card on other programs. Best solution for this is to reboot the computer, then launch Reason then check the Asio4All Control Panel settings once it has launched.. In most cases this usually works.
The second issue is related to any driver. Because this has something to do with buffers, the amount of samples that are played in the buffer, the amount of latency and the performance of the computer itself.
Because the issue is very specific to either the user, the computer, the setup, the drivers and so on. I there for can not give a solid answer on why certain times glitches start to occur when the buffer (and the amount of samples) is set to a specific amount. The rule of thumb on the buffers (and its safe spot) would be:
Set the Buffer size half way. This usually gives the best results regarding to latency, playback and the audio driver itself
Having the buffer size too low may cause issues regarding the output. Having the buffer too high may increase the buffer size
With this all being brought on the table while writing this all down in 2 hours time (while doing a week research on this matter), I thought like I would just share all my findings on the subject Realtek Asio (since I have this), ASIO, ASIO4ALL and the latest trends regarding to DirectX drivers
Written by hydlide