Real-Time Audio

The following information applies mostly to csound being run directly from the command line. Front-ends implement these features in different ways, but knowledge of them is necessary in some of them.

The -i and -o flags can are used to specify realtime output instead of the ordinary non-realtime file output. You should use -o dac for realtime output and -i adc for realtime input. Naturally, you can use either one or both if your hardware supports it. You can also specify the hardware you want to use by appending a device number or name to the flag (See -i and -o).

You might also need to use the -+rtaudio flag to specify the driver interface to be used. Csound defaults to using Portaudio, which is cross-plaform and reliable, but for better performance, you might need to use ALSA or JACK on linux, and CoreAudio on Mac. You can use ASIO on Windows if your version of Portaudio has been compiled with ASIO support.

You can see a list of available devices by giving a device number which is out of range, for instance -o dac99. This will also reveal if you have ASIO available if you are using PortAudio.

Period & Buffer Sizes

Period and buffer sizes will vary greatly from one machine to
another. Lower buffer sizes will result in lower latency, but might
cause breakups or clicks in the audio. The Csound
flags which control period and buffer sizes are -b and -B,
respectively. Buffer size is hardware dependant, and some
experimentation may be necessary to find the optimal balance between
low latency performance and uninterrupted audio output. The values
given to -b and -B should be powers of two, and the value of -B
should be at least one power of two higher than that of -b.

Currently, with -B set to 512, audio output latency
is about 12 milliseconds, fast enough for reasonably responsive
keyboad playing. Even shorter latencies, are feasible on some systems.

Control Rate

Low values for ksmps will in general give a higher quality of
synthesis, but will consume more system resources. There is no hard
and fast rule for setting ksmps - different orchestras will require
different control rates. A waveguide instrument will need a ksmps of
1 (and may not be suitable for realtime use), whereas a simple FM
synth may be run with a higher ksmps without noticeable degradation of
sound. If the FM synth were to be used to play a monophonic bassline,
a very low ksmps may be used, however more complex note clusters will
require a higher ksmps. A well-tuned Linux system should be capable of
running even complex polyphonic synths with ksmps values as low as 4
or 8. If full duplex audio is required, -b must be an integer
multiple of ksmps. Bearing this in mind, a rule of thumb might be to
only use powers of two for ksmps.

Some settings differ according to platform. See further below for information for each platform.