1d211a19db
- make it work with 24-bit formats (as with azalia and envy) - use the correct member of struct sio_par for the buffer size - check both poll(2) revents as well as calculated buffer positions to know when we can read/write data sun_driver.c: - make it work with 24-bit formats (as with azalia and envy) jackd/engine.c: - don't spam error messages every time a client quits add README.OpenBSD
61 lines
3.2 KiB
Plaintext
61 lines
3.2 KiB
Plaintext
In this package of jackd, the 'dummy', 'sun' and 'sndio' drivers are
|
|
supported. The 'dummy' driver is mostly useful for testing jackd itself.
|
|
The 'sun' driver uses the audio(4) subsystem. The 'sndio' driver uses
|
|
sndio(7). To start jackd with default driver parameters, use the
|
|
command 'jackd -d <driver>'.
|
|
|
|
By default, jackd runs in full-duplex mode with a relatively low
|
|
latency. This may not be exactly what you want, and it may not be
|
|
possible with all hardware. Therefore, some configuration options may
|
|
be necessary to effectively use jackd. The 'sun' and 'sndio' drivers
|
|
use mostly the same configuration options, which can be viewed with the
|
|
command 'jackd -d <driver> -h'. Below are some tips and caveats to
|
|
consider when using jackd on OpenBSD.
|
|
|
|
Some audio devices do not support full-duplex operation. If jackd
|
|
errors out on startup with a message about opening a full-duplex
|
|
device, this is likely the problem. If the device only supports
|
|
playback, then the driver needs to be configured to use 0 input
|
|
channels. For example 'jackd -d <driver> -i 0' starts jackd in
|
|
half-duplex play-only mode.
|
|
|
|
By default jackd uses 2 periods (blocks) of 1024 frames each. This
|
|
means there will be at most 2048 frames in the playback buffer. Some
|
|
slower or loaded machines may not be able to keep the playback buffer
|
|
from underrunning with these conditions. Jackd is designed to use 2
|
|
periods, so if underruns are observed, it is best to first increase
|
|
the period size with the driver's -p option. The period size should
|
|
be a power of two. The number of periods can be increased with the
|
|
-n option. For example, 'jackd -d <driver> -p 2048 -n 3'.
|
|
|
|
The 'sun' driver uses 48000 and the sndio driver uses 44100 Hz
|
|
sampling rates by default. Some devices may not support the default
|
|
sampe rate. Or it may be that most of the audio that will pass
|
|
through jackd is based on a different sample rate. Avoiding sample
|
|
rate conversion will use less CPU cycles and perserve audio quality.
|
|
The -r option can be used to change the sampling rate as in 'jackd -d
|
|
sun -r 44100'.
|
|
|
|
The realtime option -R is commonly used on other operating systems.
|
|
However, this option is inconsequential on OpenBSD.
|
|
|
|
The 'sun' driver reports xruns on stdout. The 'sndio' driver does
|
|
not. The 'sndio' driver is more likely to continue to be developed.
|
|
Unless you need xrun reporting, the 'sndio' driver is recommended.
|
|
|
|
It is possible to run jackd on top of aucat(1) with the 'sndio'
|
|
driver. However, there are some caveats. First, the aucat server
|
|
must be running at a higher than default scheduling priority.
|
|
aucat(1) has an example for doing this with renice(8). Secondly, it
|
|
is a very good idea to make sure the sample rates used for jackd and
|
|
aucat are the same. Third, period sizes in aucat and jackd must be
|
|
the same. Finally, jackd must be configured to use at least 4
|
|
periods. The following command sequence starts aucat and jackd such
|
|
that they can work together.
|
|
|
|
$ aucat -l -b 512 -z 256 -r 48000
|
|
$ sudo renice -10 `pgrep -x aucat`
|
|
$ jackd -d sndio -p 256 -n 4 -r 48000
|
|
|
|
There is no MIDI driver for OpenBSD in jackd.
|