You are not logged in.
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_MONOIs 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
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
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_MONOMy 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
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
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