Bounding Unicorns

Using ALSA On Linux

Output to two sound cards

As given here:

pcm.quad {
    type multi
    slaves.a.pcm "dmix:2,0"
    slaves.a.channels 2
    slaves.b.pcm "dmix:3,0"
    slaves.b.channels 2
    bindings.0 { slave a; channel 0; }
    bindings.1 { slave a; channel 1; }
    bindings.2 { slave b; channel 0; }
    bindings.3 { slave b; channel 1; }
}
pcm.stereo2quad {
    type route
    slave.pcm "quad"
    ttable.0.0 1
    ttable.1.1 1
    ttable.0.2 1
    ttable.1.3 1
}
pcm.!default {
    type asym
    playback.pcm "plug:stereo2quad"
    capture.pcm "plug:dsnoop:CA0106"
}

Delaying audio output

I couldn't yet figure out how to do this. Best I can tell is this is accomplished by adjusting the buffer size.

References:

  • https://www.alsa-project.org/wiki/FramesPeriods
  • https://stackoverflow.com/questions/24040672/the-meaning-of-period-in-alsa
  • https://www.alsa-project.org/wiki/Test_latency.c

I gather some of the latency measurements look at the delay between captured audio entering the system and the same audio exiting the system via playback, I need to measure the decoding time in the receiver which is output to input latency rather than input to output.

General configuration

  • https://alsa.opensrc.org/Asoundrc
  • https://www.alsa-project.org/wiki/Asoundrc
  • https://alsa.opensrc.org/Dmix