Understanding the Ecasound -b Buffer Size Option
This article explains the purpose, functionality, and performance
impact of the -b option in Ecasound. You will learn how
this command-line option defines internal sample buffer sizes, controls
audio processing latency, influences hardware stability, and prevents
audio dropouts such as buffer underruns during live processing and
recording tasks.
In Ecasound, the -b option sets the size of the internal
audio engine buffer, measured in sample frames. The syntax typically
follows the format -b:sample_frames (for example,
-b:512). This setting dictates the exact number of audio
frames the processing engine handles in a single iteration of its
processing loop.
The primary function of the -b option is to balance
input-to-output latency with system stability:
- Low Buffer Sizes (e.g., 64, 128, 256 frames): Configuring a smaller buffer reduces input-to-output latency, making it ideal for live performance, interactive software synthesizers, and real-time monitoring. However, smaller buffers force the CPU to execute the audio processing loop much more frequently, significantly increasing the risk of buffer underruns (xruns) and audio dropouts if the system cannot keep pace.
- High Buffer Sizes (e.g., 1024, 2048, 4096 frames): Configuring a larger buffer increases latency but provides a larger safety margin for the operating system to schedule tasks. This is ideal for batch processing, offline audio conversion, or complex routing setups with heavy effect chains where real-time feedback is not required.
When interfacing directly with audio drivers such as ALSA or OSS, the
-b parameter defines the engine's internal period size,
which directly correlates to the hardware transfer size. If Ecasound is
used with the JACK Audio Connection Kit, JACK typically manages the
primary period and buffer sizes externally, but the -b
option still determines the internal processing chunk size that Ecasound
allocates for its own signal chains.