You are not logged in.

#1 2025-07-25 16:25:01

matteoguglielmi
Member
Registered: 2015-01-17
Posts: 33

Create Virtual Stereo Microphone Using Two Real Mono USB Microphones

I own a pair of USB mono Apogee HypeMiC and need to create a virtual stereo microphone (one usb mono mic per channel) for OBS.

I believe that these are the two mics:

pw-link -o | grep -i 'input.*hypemic'

alsa_input.usb-Apogee_Electronics_HypeMiC_1111111111111111-01.mono-fallback:capture_MONO
alsa_input.usb-Apogee_Electronics_HypeMiC_2222222222222222-01.mono-fallback:capture_MONO

Is there a way using pactl to create a virtual stereo mic (with some name, e.g. VirtMic) from the two real mono mics so that when I open OBS and go to the drop-down menu at:

File -> Settings -> Audio -> Global Audio Devices -> Mic/Auxiliary Audio

I can select VirtMic where the audio picked up by the two usb mono mics is mapped to the left and right channel respectively of VirtMic?

Thank you.

Last edited by matteoguglielmi (2025-07-25 16:26:14)


If you don't know it, know where to get it.

Offline

#2 2025-07-25 20:50:24

progandy
Member
Registered: 2012-05-17
Posts: 5,296

Re: Create Virtual Stereo Microphone Using Two Real Mono USB Microphones

You can create a loopback device and then use either another cli command or e.g. helvum to connect the mono microphones I think.

$ pw-loopback \
  --name=virtual-microphone \
  --channels=2 \
  --channel-map='[ FL FR ]' \
  --capture-props='node.autoconnect = false; node.passive=true; node.description="Virtual Microphone IN" ;media.class="Audio/Sink"' \ 
  --playback-props='node.autoconnect = false; node.passive = true; node.description="Virtual Microphone" media.class="Audio/Source"' 

If you use OBS, why don't you simply add both mics and set the balance to L/R respecively? https://support.audient.com/hc/en-us/ar … t-into-OBS


| alias CUTF='LANG=en_XX.UTF-8@POSIX ' | alias ENGLISH='LANG=C.UTF-8 ' |

Offline

#3 2025-07-26 10:22:58

matteoguglielmi
Member
Registered: 2015-01-17
Posts: 33

Re: Create Virtual Stereo Microphone Using Two Real Mono USB Microphones

Thanks for the fast reply.

Your command works well (I had to fix its syntax, though):

pw-loopback \
  --name=virtual-microphone \
  --channels=2 \
  --channel-map='[ FL FR ]' \
  --capture-props='node.autoconnect=false, node.passive=true, node.description="Virtual Microphone IN", media.class="Audio/Sink"' \
  --playback-props='node.autoconnect=false, node.passive=true, node.description="HypeMiC Stereo", media.class="Audio/Source"'

and by using the qpwgraph tool, I could connect the capture_MONO of each usb mono mic to the playback_FL and playback_FR of Virtual Microphone IN.

After doing that, in OBS I could find and use the virtual HypeMiC Stereo mic, which is exactly what I wanted.

Using the two mono mics directly in OBS did not work for me because the audio between the two mics was never in sync, causing an awful echo effect.

The last step is now to automate the creation of the virtual stereo mic HypeMiC Stereo using only the CLI, so that I can through it into some initialization script when booting my NUC.

I think I have to use the pw-link command referencing the names of the USB mono mics in pipewire, which are:

alsa_input.usb-Apogee_Electronics_HypeMiC_1111111111111111-01.mono-fallback:capture_MONO
alsa_input.usb-Apogee_Electronics_HypeMiC_2222222222222222-01.mono-fallback:capture_MONO

My first problem is that when I execute the pw-loopback command shown above, it stays in the foreground.

I'm now playing with pipewire's commands, but if anyone of you already knows the answer to that, please let me know.

Thank you!

Last edited by matteoguglielmi (2025-07-26 10:29:03)


If you don't know it, know where to get it.

Offline

#4 2025-07-26 10:30:44

progandy
Member
Registered: 2012-05-17
Posts: 5,296

Re: Create Virtual Stereo Microphone Using Two Real Mono USB Microphones

You might be able to add it to the pipewire config.

https://pipewire.pages.freedesktop.org/ … lters.html

or the combine module might work as well
https://docs.pipewire.org/page_module_c … tream.html

Last edited by progandy (2025-07-26 10:34:41)


| alias CUTF='LANG=en_XX.UTF-8@POSIX ' | alias ENGLISH='LANG=C.UTF-8 ' |

Offline

#5 2025-07-26 10:53:13

matteoguglielmi
Member
Registered: 2015-01-17
Posts: 33

Re: Create Virtual Stereo Microphone Using Two Real Mono USB Microphones

Ok,

this script works, but I doubt it is the right way of doing it:

readarray -t MICS < <(pw-link -o | grep -i 'input.*hypemic') # my two usb hype mics

pw-loopback \
  --name=virtual-microphone \
  --channels=2 \
  --channel-map='[ FL FR ]' \
  --capture-props='node.autoconnect=false, node.passive=true, node.description="Virtual Microphone IN", media.class="Audio/Sink"' \
  --playback-props='node.autoconnect=false, node.passive=true, node.description="HypeMiC Stereo", media.class="Audio/Source"' \
  & disown

sleep 1

pw-link ${MICS[0]} input.virtual-microphone:playback_FL
pw-link ${MICS[1]} input.virtual-microphone:playback_FR

@progandy Thnak you!

Last edited by matteoguglielmi (2025-07-28 13:17:33)


If you don't know it, know where to get it.

Offline

Board footer

Powered by FluxBB