summaryrefslogtreecommitdiff
path: root/usr.bin/aucat/conf.h
AgeCommit message (Collapse)Author
2011-10-12Simplify and improve the way options are parsed and remove ~300 linesAlexandre Ratchov
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
2011-04-27include signal.hAlexandre Ratchov
2011-04-27move amsg.h containing protocol defs from aucat side to libsndio side.Alexandre Ratchov
requested by deraadt
2011-04-27use more volatile sig_atomic_t in signal handlersTheo de Raadt
ok ratchov
2011-04-18reorder macros, no object changeAlexandre Ratchov
2011-04-16use "aucatN" for aucat(1) socket path and "midicatN" for midicat(1),Alexandre Ratchov
no need to increase entropy by inventing new names. Don't forget to rebuild libsndio after this change
2011-04-16for unix domain socket addresses use AUCAT_PATH and MIDICAT_PATHAlexandre Ratchov
macros instead of hardcoded strings. No object change
2010-10-21use MODE_xxx and XRUN_xxx macros everywhere, and zap correspondingAlexandre Ratchov
AMSG_xxx macros, which in turns simplifies the code
2010-04-06aucat (server):Alexandre Ratchov
- 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@
2010-04-03backout last change, committed by mistake, sorry...Alexandre Ratchov
2010-04-03doc fixes from jmcAlexandre Ratchov
2010-01-10Add traces to help tracking subtle timing bugs often causingAlexandre Ratchov
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
2009-11-03Allow any program using aucat to act as MMC slave and MTC masterAlexandre Ratchov
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.
2009-09-27remove all debug tracesAlexandre Ratchov
2009-08-17allow midicat to take multiple -i and -o optionsAlexandre Ratchov
2009-07-25fix comments, remove no longer needed declaration, reorder includesAlexandre Ratchov
from Thomas Pfaff
2009-07-25Currently midi capable programs can control midi hardware, butAlexandre Ratchov
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@
2009-02-03in server mode, create /tmp/aucat-userid/ directory withAlexandre Ratchov
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
2008-11-10add a per-stream ``soft volume'' knob and the corresponding -v option.Alexandre Ratchov
The code will be useful later for the volume knob in the sndio API.
2008-10-26add minimal server capability to aucat(1). When started in serverAlexandre Ratchov
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.
2008-08-14factor code that discards data from abuf strucure into a singleAlexandre Ratchov
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
2008-05-28if aucat is resumed (after suspend), kernel buffers are empty, thus write()Alexandre Ratchov
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
2008-05-23add support for:Alexandre Ratchov
- 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@