On Wed, Jan 11, 2012 at 08:43:59AM +0100, pet...@schwertfisch.de wrote:
> 
> Why is the extra "-t slave" needed to play audio tracks when
> the sub-device (mmc) is in slave mode already?

the -tslave (aka mmc control) in the player is to allow the stream to
relocate. So it's needed.

Without -tslave, the player will start synchornously (because the
server will block it until all clients start) but won't know how to
relocate.

> Is there other software from packages that can be controlled this way
> (start, stop, relocate)?

audio/lmms is supposed to support mmc, but I've never used it this
way. Note that mmc is only necessary to relocate. If you only need the
program to start and stay in sync, any app using a server sub-device
with -tslave should work.

> Also, when using your setup and leaving out the "-t slave" the track
> can be started from midish using the "p" command, but it only plays 
> for a second or so and then stops.
> 
> $ aucat -fsnd/0.mmc -qmidithru/0 -i song50.wav  -d 
> snd0: playing s16le,0:1,44100
> snd0: block size is 480 frames, using 27 blocks
> starting device
> server relocated to 0
> wav(wav0)/run: stopping
> snd0: closing device

short answer:
 - if mmc is required, both -q<port> and -tslave are needed
 - else, if -q<port> is required, mmc should be disabled in midish

long answer:

Even if -tslave is missing, aucat uses mmc internally (because code is
simpler this way), so mmc is not 100% disabled when -tslave is
missing. In the above case, midish sends the stop -> relocate -> start
sequence, and aucat interprets it, but only partially. There's no
extra code to filter mmc out when -tslave is missing (which would be
cleaner).

-- Alexandre

Reply via email to