Age | Commit message (Collapse) | Author |
|
of code that becomes unused. Few command line arguments changes are
required though:
- stream definitions (-ios) now must follow devices definitions they
are attached to (-fMn)
- the -n option is now a special "loopback" device and is thus used
like -f, eg it must precede streams
- in midicat, midi thru boxes are not created automatically anymore,
the new "-M" option must be used for that
- channel numbers (-Cc options) correspond always to channel numbers
of the hardware.
- the -u option isn't needed anymore
- increase the log verbosity so user errors are logged
without using -d
tested by many, help from jmc
|
|
|
|
requested by deraadt
|
|
ok ratchov
|
|
|
|
no need to increase entropy by inventing new names. Don't forget to
rebuild libsndio after this change
|
|
macros instead of hardcoded strings. No object change
|
|
AMSG_xxx macros, which in turns simplifies the code
|
|
- 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@
|
|
|
|
|
|
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
|
|
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.
|
|
|
|
|
|
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@
|
|
permissions 0700, and create sockets in it. This prevents
one local user to eavesdrop or disturb audio programs of
other users.
if you're using the ``-s socket'' option with an absolute
path as argument, please update it to use a socket name.
requested by many, bits from jakemsr and otto
ok jakemsr
|
|
The code will be useful later for the volume knob in the sndio API.
|
|
mode, it listens on an unix socket and mixes/demultiplexes any number
of full-duplex streams, doing necessary format conversions and
resampling on the fly.
programs can use the new libsa(3) library to play and record audio.
The library provides a very simple API to connect to the audio server;
if aucat(1) isn't running, it uses the audio(4) driver transparently
instead.
|
|
abuf_rdiscard() routine. Similarly add abuf_wcommit() routine for
writing. The purpose is to stop manupulating FIFO pointers in
various places outiside abuf.c, its too error prone.
No behaviour change.
ok jakemsr
|
|
syscall succedes and consumes aucat buffers until kernel buffers are full.
If aucat buffers are smaller than kernel ones, they will underrun, and aucat
will terminate, since underruns are not handled yet.
This changes is an improvement until SIGCONT handler is implemented. The
correct approach is to add a handler for SIGCONT to: call dev_stop(), reset
all buffers, bring play and record in sync, fill play buffers and call
dev_start().
ok jakemsr
|
|
- recording, full-duplex operation
- format conversions and resampling on the fly
- mixing on the fly of multiple inputs of different formats
- up to 16 channels, simplistic "routing" of channel ranges
- more linear encodings (in raw and wav files)
the old behaviour is fully preserved if none of the new -i and -o
options are used.
code and fixes from jakemsr@ and eric@, suggestions by others.
ok "go ahead" deraadt@
|