| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
set record precision.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
started immediately after it's opened in record only mode.
Pause it in sio_open() and sio_stop(), since libsndio requires
an explicit call to sio_start().
discussed with jakemsr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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@
|
|
|
|
|
| |
with precision other than 8, 16 or 32 bits.
Found by Jan Stary <hans at stare.cz>, thanks!
|
|
|
|
| |
ok ratchov
|
|
|
|
|
|
|
|
| |
can return POLLOUT (if requested), even the handle was not writable when
sio_pollfd() was called but become writable somewhere in the code path
of sio_revents().
This should improve stability of programs using very small buffers.
|
|
|
|
|
|
|
| |
called. Since sio_onmove() callback doesn't return negative deltas
anymore, slightly simplify related paragraphs.
siggested by espie@, ok jakemsr@
|
|
|
|
| |
don't call the sio_onmove() call-back with negative argument.
|
|
|
|
|
| |
precision / 8. Fixes sio_setpar() requesting smaller block sizes
on 24-bit devices.
|
|
|
|
| |
entering a busy loop
|
|
|
|
|
|
|
|
| |
stream in a way that the pause never occurs in the middle of data
chunks. Beside being more natural, this allows the client to send
non-data messages during the pause (set the volume, stop playback...),
rather than delaying them until the end of the pause. It's about
few milliseconds only.
|
|
|
|
| |
control connections.
|
|
|
|
|
|
|
|
|
|
| |
instead of ``appbufsz'', which violates the flow control mechanism.
Fix this longstanding bug by enabling negative values in AMSG_MOVE
messages, this way the client is notified when its stream is
attached to the mixer, and can update its max transfer limit.
Since this fix changes the AMSG_MOVE message format, we crank the
protocol version, and thus remove code specific to the old protocol.
|
|
|
|
|
|
|
| |
but later, it will permit aucat to reject connections from
clients statically linked to a unsupported version of libsndio.
idea from kittenis, otto and sthen
|
|
|
|
| |
is actually linear
|
|
|
|
|
| |
AUDIO_SETINFO() to set the initial parameters, since AUDIO_SETINFO()
can fail.
|
|
|
|
|
|
|
|
| |
by the device, we may end up with different recording and playback
parameters, which will break almost all full duplex apps on such
devices. For instance, this should fix full-duplex apps not working
on devices that can record at any sample rate but can play
at 48kHz only.
|
|
|
|
|
| |
as a programming error. At any stage the program should be alble to
cleanly free resources and close the device.
|
|
|
|
| |
on sio_close()
|
|
|
|
|
|
| |
free resources and drop the connection. This allows the client
to ensuire that at any time it's using only one connection, thus
only one MIDI control channel.
|
|
|
|
| |
of volume changes
|
|
|
|
|
|
| |
realtime. For now only the playback volume of individual streams can be
changed/monitored. To each stream is assigned a MIDI channel; the volume
is changed/monitored using the standard controller number 7.
|
|
|
|
|
| |
eating 100% CPU while trying to use blocking i/o.
ok jakemsr
|
| |
|
| |
|
|
|
|
| |
strings. suggested by Thomas Pfaff
|
|
|
|
| |
a midi device name starting with a separator
|
|
|
|
| |
from Thomas Pfaff, ok jmc@
|
|
|
|
|
| |
defined as such
from Thomas Pfaff
|
|
|
|
| |
from Thomas Pfaff
|
|
|
|
|
| |
with open(2) and write(2) syscalls.
from Thomas Pfaff, jakemsr is fine with it
|
|
|
|
| |
spotted by jasper@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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@
|
| |
|
|
|
|
| |
future aucat extentions. No functional changes.
|
| |
|
|
|
|
| |
with AMSG_INIT(), rather than the reply we expect.
|
| |
|
| |
|
| |
|
|
|
|
| |
than a per-stream debug level. No behaviour change.
|
|
|
|
| |
spotted by Philipp Schafft
|
| |
|
|
|
|
|
|
| |
files leave.
requested by deraadt@, ok miod@
|
|
|
|
|
|
|
| |
that don't use sys/poll.h, wont compile with gcc2. Fix this by
declaring the pollfd structure
spotted by and ok deraadt
|
|
|
|
| |
ok deraadt
|
|
|
|
|
|
|
| |
only if it's in the IDLE state, otherwise in some rare cases a data
chunk may be interpreted as a message, causing the connection to be
dropped.
ok deraadt
|
|
|
|
|
|
| |
in ``waiting state'', otherwise the ACK message will be skipped,
and the other functions not expecting ACKs might be confused by
the ACK.
|