You can’t improve what you can’t measure. But when you get to around 12 milliseconds, experienced ears will start to notice. Any total latency of around that duration shouldn’t bother you much. Putting these delays into perspective, if another musician or their amp is two meters away from you, the sound takes about 6 milliseconds to reach your ear. But again simply increasing the sample rate will not solve much, as this means more samples have to be processed in less time, and you will run into glitches sooner. For instance, at 44.1 kHz, 512 samples take 12 milliseconds at 96 kHz it’s closer to 5 milliseconds. The reason for this is that the processor deals with many other things including updating graphics, running plug-ins, and, yes, checking email.Īt a higher sample rate, the same buffer size will result in lower latency. If you want to decrease your system’s delay, just reduce the buffer size! Of course, nothing is that easy: if your buffer size is TOO short, the necessary processing won’t happen in time and you’ll get clicks and dropouts. The buffer size can usually be set in the DAW. In either direction, there is usually a buffer in the audio interface and another one in the driver. In data transfer contexts (which is what audio interfacing is), a buffer is a piece of digital memory that temporarily stores incoming signal before it’s ready to go out again when the transfer is not instantaneous. For a given connection and protocol, sending a higher volume of data will take longer. That measurement can range from precise (encoded in 2 bytes or 16 bits per sample, so 65,535 possible values) to VERY precise (encoded in 3 bytes or 24 bits per sample, so almost 17 million possible values). Simply put, the sample rate is the number of times per second the analog signal is measured. The amount of data passing through for every second of audio will mainly depend on sample rate, bit depth, and a number of channels. In the DAW, the signal can be processed by effect plug-ins, mixed with the rest of the session, and sent back out to the audio interface to monitor on speakers or headphones.
These numbers are queued and sent from the audio interface to the computer, where they are again queued until the operating system has time to pass them on to the application that’s listening for it, usually a DAW. The inbound signal is sampled or “measured” many times per second, and converted to a digital representation. Well this machine gives the slower performance.To go from the analog world into the DAW, and vice versa, a few things have to happen all of which take a tiny but real amount of time. The vista one seems the best machine i have although it uses an SDR RAM configuration and not DDR one.
AUDIO LOOPBACK LATENCY TEST WINDOWS
Under Windows Vista i need to enlarge buffers until i have 256 ms of audio latency (AMD 64 2.2 Ghz XP 4000 dual core, 2Gbyte RAM SDR) otherwise i hear a stammer inside speakers. Under Windows Mobile 5.0 i can reach an audio latency of 80 ms (ARMV4I pocket PC, 500 Mhz, 64 Mbyte RAM). Under Windows XP i can reach an audio latency of 60 ms (machine P4 2Ghz single core, 1Gbyte RAM DDR).
If i run the same application under Windows XP (exactly the same code), it works wonderfully without the increasing latency issue and i can even reduce the audio buffer size to improve the overall latency. I'm recording 8000 sample/s at 16 bit each on 1 channel = 16 kbyte/s audio incoming. I've checked line by line with thread timers and performance counters, and my threads are not wasting any time anywhere. This means that my threads are waiting for data to copy from/to buffers about all the time. The CPU usage during execution is below 1-2% constantly. I'm esperiencing an high latency under Windows Vista. Record > AudioInputThread(producer) > circular buffer > AudioOutputThread(consumer) > Playback
I use a critical section to synchronize mutual exclusion access to this buffer. That is, a KISS approach.īetween these 2 threads there is a FIFO buffer (circular buffer, i've used it for years, it has been tested rigidly). I'm using 1 thread capturing audio and another thread playing audio. I've wrote a simple audio loopback application which records voice from a mic and continuously send it to the speakers.