Age | Commit message (Collapse) | Author |
|
is not a proper error message.
|
|
fix NULL vs 0, etc. No behaviour change.
|
|
used as filename
|
|
|
|
no connections anymore.
|
|
if no files are given on the command line
|
|
|
|
difference between audio files and client connections. Clean up
the way command line options are handled and clarify this in the
manual page: stream parameters (-Ccehjmrtvx) must precede stream
definitions (-ios) and per-device parameters (-abz) and stream
definitions (-ios) must precede device definitions (-f). Since
there's no ``server'' and ``non-server'' modes anymore, make the
-l option just detach the process.
ok and help from jakemsr and jmc
|
|
don't check if the midi control interface is idle
from ratchov
|
|
results in a use after free(). Catched by jakemsr@ with MALLOC_OPTIONS=J
|
|
open the device input-only if -o is used, and output-only if -i is
used).
|
|
complicated. Instead, request clients to provide enough samples
and start with buffers full.
|
|
Add a new ``initial position'' message which is simpler. No bahaviour
change, except effects of the protocol version crank.
|
|
This is necessary for uaudio devices, for instance to start aucat
before the device is plugged. Or to unplug a device whithout
having to restart aucat when another device is plugged. This is
controlled with the new -a option.
Allow multiple audio devices to be used concurently, i.e.
multiple ``-f devname'' options to be used; -f options must follow
per-device options, which is what we do for other options.
|
|
midi client could start it with empty buffers, in turn hurting
audio clients.
|
|
and different device states. Split initialization in two phases:
first global variables are initialized then the audio hardware is opened.
Allow devices that don't support full-duplex to work in play-only or
record-only mode, even if ``-m play'' or ``-m rec'' are not specified.
|
|
might result in extra samples being written to the device
when the mixer is closed.
|
|
|
|
from Thomas Pfaff, thanks
|
|
run by root, it binds a shared address to the socket, cranks the
process priority and drops privileges. sio_open(3) will try to
connect to the private socket first (if any), then to the shared
socket. Only one user may have connections to aucat at a given
time.
based on discussions with henning, pyr and others
ok jacek, deraadt
|
|
command line, instead of the device parameters.
|
|
expand channels (ex mono->stereo). It's switched on/off with
the ``-j'' option, (default is "on").
|
|
- make the ``-m mode'' option per subdevice, allowing
subdevices to be play-only or rec-only even if the
server is full-duplex
- add ``monitoring'' mode (with ``-m mon''). This is a
record-only stream from which played streams can be
recorded (kind of ``record what you hear'').
- allow MIDI devices to be subscribed to the controlling
MIDI port of the server, ie what midicat does (with -f
option), but using the -q option.
- add flow control to the protocol, and serialize clock
ticks (sio_onmove() calls) and data chunks. This should
fix certain full-duplex programs, broken with ``magic''
block/buffer size combinations.
- enable 3 block latency which is the minimum theoretical.
Make -z and -b options correspond to device parameters.
- make sio_getcap(3) the same for aucat and sun backends,
ie return whatever is supported (``everything'' in the
aucat case, since everything is actulally supported).
aucat (player):
- enable ``-m mode'' option to select between monitoring
and recording when ``-o file'' is used.
- plug MIDI code to non-server codepath. The MIDI control
device is specified with the ``-q device'' option, as in
server mode.
- impliment lseek()'ing within files (controlled
through MIDI). Necessary to use aucat with a MIDI
sequencer.
midicat (thrubox):
- rename ``-f'' flag to ``-q'', so it has the
same name as in aucat (-f is still working)
ok jakemsr@, tweaks from jmc@
|
|
|
|
|
|
is for played channels.
spotted by Jan Stary <hans at stare.cz>, thanks
|
|
otherwise the client would underrun by more than its own buffer
size, which currently is not allowed (causes the client to
deadlock).
Set the minimum client buffer size to two blocks. Single block
buffers don't work properly yet.
with help from jakemsr
|
|
underuns and overruns; such bugs are hard to debug with ktrace
or a debugger. They are also handy to debug or monitor code
using aucat.
To enable traces, compile aucat with ``make DEBUG=-DDEBUG'' and
use the -d option multiple times.
ok jakemsr
|
|
handled, which is conceptually simpler. No behaviour changes.
|
|
suggested by deraadt@
|
|
|
|
transparently. Multiple audio applications can be started
synchronously from external software/hardware supporting the
standard Start/Stop/Relocate messages. The server clock is exposed
through MTC, allowing non-audio software/hardware to be
synchronized to audio applications.
|
|
|
|
|
|
|
|
|
|
used aucat and midicat don't daemonize and log on stderr.
|
|
|
|
|
|
midicat crashing sometimes when -o is used
|
|
|
|
|
|
them to the MIDI thru box
|
|
from Thomas Pfaff
|
|
cannot cooperate with other programs. The aim of this change is
to allow any program to send midi data to other programs as they
were midi hardware. For instance, this change should solve the
longstanding problem of using a midi sequencer with software
synthesizers. More precisely:
- new midicat(1) utility (actually hardlink to aucat(1)).
it creates software midi thru boxes, allowing programs
to send midi messages to other programs as they were
midi(4) hardware.
- new midi api in libsndio (see mio_open(3)), to access
midi(4) devices and midicat(1) sockets in a uniform way.
- new device naming scheme <service>:<unit>[.<option>],
common to audio and midi.
- new sndio(7) manual describing concepts and naming
The current audio device naming still works, but people having
scripts or configuration files containing device names could read
the sndio(7) man page and slowly start updating device names.
discussed with jakemsr@ and deraadt@, help form jmc@
|
|
|
|
- grammar fix for the server section
from Thomas Pfaff
ok ratchov
|
|
|
|
than exit()ing with ``too many open files'' fatal error
|
|
ok jakemsr
|