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