How to record audio from multiple mixer(8) devices simultaneously

From: Artem Bunichev <tembun_at_bk.ru>
Date: Fri, 25 Apr 2025 21:01:25 UTC
Hi!

I'm running FreeBSD 14-STABLE on ThinkPad X220 and I want to record sound from
the integrated microphone and the system sound (sound from applications) at the
same time.  So far, I've figured how to record only one of them at a time: I
can do this by means of setting the recording device in mixer(8).  If I want
to record from microphone, I do: mixer monitor.recsrc=set, and if I want to
record the desktop sound, I do: mixer mic.recsrc=set.  As I understand,
recording device sets the device, which output I will get when I read
from /dev/dsp.

Actually, I want to record an audio for screencast, which I do with:
ffmpeg -f x11grab -i :0 -f oss -i /dev/dsp -vcodec libx264 -preset fast out.mkv.

So, I guess I need to find a way to make both sound from microphone and system
sound go into /dev/dsp.  But I don't know how to do this, since as I can see in
mixer(8), only _one_ device can be used for recording.

Here's the output of /dev/sndstat:
Installed devices:
pcm0: <Conexant CX20590 (Analog 2.0+HP/2.0)> (play/rec) default
pcm1: <Intel Cougar Point (HDMI/DP 8ch)> (play)
pcm2: <Intel Cougar Point (HDMI/DP 8ch)> (play)
pcm3: <Intel Cougar Point (HDMI/DP 8ch)> (play)
No devices installed from userspace.

The output of mixer:
pcm0:mixer: <Conexant CX20590 (Analog 2.0+HP/2.0)> on hdaa0 (play/rec) (default)
    vol       = 1.00:1.00     pbk
    pcm       = 1.00:1.00     pbk
    speaker   = 1.00:1.00     pbk
    mic       = 1.00:1.00     rec
    rec       = 1.00:1.00     pbk
    monitor   = 0.37:0.37     rec src

Is the thing I want to do is even possible?  If yes, how can I do that?

Thank you,
Artem