-1

In DAW programs, in the "audio device settings" settings there is an ASIO-panel, which is a window for controlling the driver of an audio device. In this window (for all professional audio interfaces), you can set the value of the buffer-length or buffer-size parameter (essentially just different names for the same thing). So for so many audio interfaces that I have, the maximum value of such a buffer is set to 1024 samples. Studies have shown that no manufacturer specifies a buffer size in the description (in full specifications) of an audio interface. Why? Either because it is fashionable to set a smaller buffer and write sound without delay, or because this buffer does not depend on the card at all, but depends on the drivers. (I am closer to the second option, but there is no exact information anywhere else). Third options are also possible ...

Question: What is this buffer like? Is it “iron” like a memory stick inside a device (desktop audio interface) or is it a convention, and is the buffer itself just a place in the computer’s RAM? And most importantly: how to increase this buffer to 2048, 4096 or 8192 samples? Perhaps by cunning drivers, or by buying a card for a fool in the hope that there is a larger buffer (after all, again, no one indicates the size of the buffer: why?)

UPD question:
Guys, let it be really not a rational question, but even my colleagues with 3 degrees of sound engineering education cannot give a clear answer for the question:
How to increase buffer size beyond what the driver of a particular device offers?

We'll see:

  • Buy a new audio interface so that the driver attached to it is more flexible in tuning.
  • Find another more flexible driver for your card.

If these are the only possible options (above), then I ask you to confirm this. It is advisable to rely on accurate data. And then I ask you to tell me where I can find the driver for the Focusrite Scarlett Solo 2nd gen card, in which the sizes of 2048 and 4096 samples will be available. Thank you in advance, I really don’t know who else to turn to.

  • 1
    Why would you want to set a buffer size outside the available range? Are you experiencing a specific problem? – Your Uncle Bob Aug 17 at 18:57
  • @YourUncleBob I have a huge project in which there are a lot of instruments and plugins. I know that it is possible to arrange "dancing with tambourines" and reduce the load on the processor, but I need to increase the size of the buffer and continue working "as is". In the end, it’s just a shame for me that my colleagues have a buffer size of 4096 samples or more. I don’t have the money to buy a cool audio card, and I'm not even sure if this will help. – Direct Aug 17 at 19:15
  • Does your DAW have track freezing? – Your Uncle Bob Aug 17 at 19:17
  • 2
    This probably won't help, but the way to do it is to know the limits of your tools and your skills, and not try to do things you cannot do. It sounds like you're trying to do something you cannot do. Increasing the ASIO buffer size will not give you CPU power endlessly. 1024 is already quite big. You'll either have to spend money on hardware or learn new ways of working. For example, separate your work to (1) composing, (2) arranging+instrumentation and (3) mixing phases. And/or use track freeze. You'll have to plan things in advance. Now that you know more, you'll be able to plan better. :) – piiperi Reinstate Monica Aug 18 at 9:30
  • 2
    Hi direct, we do not find external resoucres on this site so you're updated question "I ask you to tell me where I can find the driver for the Focusrite Scarlett Solo 2nd gen card, in which the sizes of 2048 and 4096 samples will be available" is not on topic. You have also greatly changed what you are asking for which makes the other answers to this question less relevant. Please refrain from doing this in the future. – Dom Aug 18 at 16:04
6

The audio buffer ("ASIO buffer", if you happen to use ASIO) is a memory block, which is filled by the audio software and handed over to the driver software for outputting. It's like a factory that produces things in batches of different sizes. In this factory, there's fixed amount of work that has to be performed for each batch (buffer), regardless of the size of the batch. And there is a fixed maximum amount of work the factory can perform on anything, be it the per-batch overhead work, or the actual product that's put inside the batches. The smaller the batch size is, the more of the factory's potential work capacity is spent on the per-batch overhead. (But as the batch size is decreased, the per-batch order-to-delivery waiting time i.e. latency is decreased as well.)

In hardware DSP systems, the buffer size can be as small as a single sample. But in systems based on general-purpose PCs, larger buffer sizes must be used.

Increasing the buffer size gives diminishing returns, and after a certain size, you won't notice a big improvement anymore.

In the following graph, it is assumed that the processor can perform 1000000 work units per second, the sampling rate is 44100 samples per second, and the per-buffer processing overhead is 1000 work units. These numbers are rough guesstimates of what might be a "typical" audio PC system, and the actual overhead varies greatly between different computer systems. Processing efficiency/throughput vs audio buffer size

In this imaginary example, at around buffer size 50, the processing efficiency drops down to 0 %, meaning that all of the capacity is spent on overhead work. (Actually, a buffer size of exactly 44.1 samples would mean there are 44100/44.1 = 1000 buffers per second, requiring 1000*1000=10000000 work units per second to process.) On my old i5 MacBook Pro, I can run some light instrument plugins in Ableton Live with buffer size 32 with the built-in audio interface, so the overhead work must be much lighter than 1000/1000000 on that system. But 1000 might be around the right order of magnitude. In the above example, buffer size 1024 gives around 95-96% efficiency, and 4096 gives 98-99% efficiency. That's not much better.

In reality, the situation is more complex than this. PCs have multi-core processors which are able to work on multiple tasks simultaneously, and the overall processing efficiency largely depends on the ability to organize the work so that things can be performed in parallel. High-performance computing is parallel computing - regardless of how fast your processor is, you can have ten times the power with ten of them working in parallel. In theory, it could be possible to improve overall efficiency by spreading the work of even an A -> B -> C -> D plugin chain (where the input of every stage depends on the output of the previous stage) to multiple cores by introducing pipeline stages and increasing latency. Core 1 would run plugin A on audio from time position T, core 2 would run plugin B on plugin A's output from time position T-1, etc. But I don't think big DAW vendors are very interested in putting a lot of effort on such optimizations, because usually any large music project will contain naturally parallelizable processing work even without pipelining.

3

Why? Either because it is fashionable to set a smaller buffer and write sound without delay, or because this buffer does not depend on the card at all, but depends on the drivers.

Both of these are true.

One of the main reasons that people buy an ASIO soundcard is because they want low latency.

The buffer sizes you see in the settings window do indeed depend on the drivers. When you specify 512 samples, this means that the driver will ask the host software for 512 samples at a time.

Desktop PCs spend their time doing lots of things other than filling the audio buffer. When you have a very small buffer, there's a higher chance that the computer will be busy doing something else, and won't be able to stop what it's doing fast enough to fill the buffer by the time the contents of that buffer need to be played (which is shorter/sooner, due to the low buffer size). With a bigger buffer, you have a longer waiting time, and a better chance that the computer will be able to get round to filling the buffer, reducing the chance of glitches.

However, increasing the buffer size does not increase the amount of work your computer can do overall - once you're asking it to fill more samples per second than it can manage, you'll get glitches regardless of the buffer size.

Larger buffer sizes are only really going to help if your computer is powerful but unusually distracted - e.g. if it is doing some other processor-intensive work at the same time.

  • Indeed. You need to identify the bottle-neck (buffer-size, CPU speed, audio software not using all CPU cores, memory size, memory speed, other background processes, badly written drivers for other USB/FW devices, ...) and fix that first. – Your Uncle Bob Aug 17 at 20:13
  • @topoMorto Thank you so much! I understood the physical part of the question. I even found an interesting video from Google developers, where they say the same thing. Nevertheless, I just have a very powerful computer and destroy all processes except for the DAW. I really need to increase the size of the buffer. In the ASIO panel of my audio card, the threshold is 1024, while ASIO4All offers 2048. How can I increase the buffer above the threshold of acceptable values for selecting? Need I buy new card? Need I create my own audio-driver, ahahaha? – Direct Aug 17 at 20:18
  • @YourUncleBob I've done all this research. – Direct Aug 17 at 20:20
  • @Dmitriy what is your overall CPU load? is it low, or quite high? – topo Reinstate Monica Aug 17 at 20:21
  • @topomorto Honestly, everything is like this: First, I started work on writing a phenomenal (and how else) composition, according to the data from the DAV, the processor was loaded at 4-6% (at 128 samples buffer), after adding 10-15 instruments and 13*5 VST effects the load went up to 60-70%, after which I made the following buffer: 512 smp, after which the load dropped to 10% and I started adding instruments again. Thus, I stumbled when the load was 90-95%, and the buffer was set to 1024 samples. Now I want to set 2048 or even better 4096 samples in order to relieve the load again to 15-20% – Direct Aug 17 at 20:34
1

The buffer is in computer RAM.

It's size is a function of the driver software.

For any system there is a minimum practical buffer size. Go lower and the audio stream will be glitchy or fail completely. There is also a size above which further increase offers no benefit. (There is even some evidence, on some systems, that increasing buffer size beyond a certain point can DECREASE performance.)

Wouldn't it be nice if ANY system could have its performance increased without limit simply by increasing the buffers! But it can't.

There are other factors too. If you use virtual instruments and plugin effects they use computer power. DAW manufacturers delight in designing 'ultimate' reverb plugins. A few instances of one of these can bring the most powerful computer to its knees!

How can you reduce the load of your project? Are you using individual Insert effects where a shared Send effect would be possible? WHY can't you freeze some tracks?

Maybe you can tolerate an occasional glitch when mixing. Remember, Export Audio doesn't use the sound card, it's purely internal number-crunching. On a complex project an Export may take considerably more time than the length of the music. But it doesn't care about your buffer sizes. You can get a clean Exported wav file of a project that the computer couldn't cope with in real-time playback.

Not the answer you're looking for? Browse other questions tagged or ask your own question.