Age | Commit message (Collapse) | Author |
|
suggested by deraadt@
|
|
|
|
then don't reduce their dynamic range to ``share the volume''.
|
|
full-duplex streams. Fixes, streams with different modes not
starting simultaneously.
|
|
before deleting the writer (reader) otherwise the later
could trigger rpipe_done again.
|
|
|
|
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.
|
|
- reject bogus clients ignoring flow control during the start phase
- don't check if dev_midi is NULL, it can't be NULL anymore
- use ``struct ctl_ops'' instead of a simple call-backs
- don't try to flush play buffer if it's not attached yet
|
|
|
|
|
|
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.
|
|
|
|
few remaining ".Tn UNIX" macros with ".Ux" ones.
pointed out by ratchov@, thanks!
ok jmc@
|
|
ok jmc@
|
|
clear the ``tickpending'' flag to avoid sending ticks corresponding
to non existent buffers (which in turn confuses clients).
found and analysed by jakemsr@
|
|
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
|
|
|
|
|
|
|
|
|
|
destroy reader when writer terminates and destroy writer when
reader terminates. This simplifies a lot the way we drain
audio devices and will help simplifying other parts.
|
|
- put aproc-specific parameters into unions since they are never
used together
- remove constant ``data'' pointer always pointing the end of the
abuf structure
|
|
for now but will be used in future code.
|
|
used aucat and midicat don't daemonize and log on stderr.
|
|
|
|
the pipe will be free()d, so don't try to access the structure.
ok ratchov
|
|
trigger the code to free() it, which will try to stop it, and so on
|
|
is disconnected). This way, when it's ``file'' structure is
free()'d, we don't try to stop it again.
|
|
control MIDI port.
|
|
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.
|
|
are using another instance of aucat as device, the server closes
the connection before we open a new one.
|
|
because the initial volume may not be MIDI_MAXCTL
|
|
had the last time. For instance, this fixes the problem of programs
reopenning the connection to aucat very often and thus resetting
the volume setting all the time.
|
|
client, pick the oldest unused channel rather than the first found.
This way new clients don't reuse channels of recently used applications,
thus improving a lot the client<->channel affinity.
|
|
|
|
use a call-back interface. This allows easily sending volume changes
feedback to audio applications.
|
|
no longer the same. Rephrase ``audio(4) device or aucat(1) socket''
as ``sndio(7) audio device''.
suggested by oga@, tweaks from jmc@
|
|
client connects again later, assign the same channel to it. This way
applications always get the same fader on MIDI control surfaces.
|
|
|
|
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.
|
|
midicat crashing sometimes when -o is used
|
|
|
|
|
|
them to the MIDI thru box
|
|
from Thomas Pfaff, thanks
|
|
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@
|
|
|
|
remove -Werror.
ok ratchov@
|
|
it mandatory. Old legacy clients setting the mode with sio_setpar()
are still working thanks to small hack.
|