-1

Background: In my Windows PC based audio production setup I plan to be unplugging and re-plugging in my USB microphone on a regular basis.

A cheap but mandatory/necessary 3rd party app that I use to record from my USB microphone unfortunately does not gracefully handle the USB microphone being unplugged and re-plugged in.

After re-plugging in the USB microphone, the app just records dead silence.

If I close the app and re-open it, it then records audio just fine.

I have contacted the app's developers requesting a fix not expecting one.

(One "simple" fix might be to close and reopen the app via a script, but this is undesirable because when the app launches it forces itself to the foreground with an annoying splash screen that causes me to have to alt-tab to the previously foregrounded app; I will be doing live audio production with video output and prefer to not get this visual distraction).

I am looking for a way to have a persistent virtual microphone that records from my real USB microphone and that outputs silence when the real device is not present (unplugged) and when it is present (plugged-in) gracefully/dynamically re-connects and forwards the real USB microphone's raw output as an audio recording/input capture endpoint.

I am aware of VoiceMeeter, VBCable, VAC, Jack, etc.

These all seem to output the virtual recording/input to a playback/output.

I am also aware of Windows' recording device "Listen to this device" feature, but this also seems to only output to only a playback device.

What I am looking for is a virtual recording/input that outputs audio recorded from another recording/input.

For lack of a better term, think "Microphone Proxy", "Microphone Forward", "Microphone Loopback", "Microphone Pass-Through", "Microphone In-Line", or "Microphone Sniffer"?

Any suggestions on how I can accomplish this, or if such a thing even exists or make sense?

Perhaps there is still a creative way to work with the existing virtual inputs/outputs (I have 5: VBCable 0, VBCable A, VBCable B, VoiceMeeter Main, and VoiceMeeter AUX, but I am using 4 of them already: VBCable A (output from one app), VBCable B (output from another app), VoiceMeeter Main (system default output), and VoiceMeeter AUX (VBAN from another PC)), any of their ability to "self-loopback", combined w/ Windows' "Listen to this device" setting, but I have been fiddling with this for days and don't see any way to get this to work yet...thus this question.

Any ideas/suggestions?

Thanks!

swooby
  • 3,005
  • 2
  • 36
  • 43
  • This question does not seem to be about programming. Maybe you were looking for [Super User](//www.superuser.com) instead? On a side note, as you might have guessed by now, complaining about downvotes is considered noise and can be silently removed by moderation at any time. – E_net4 Jan 13 '19 at 14:11

1 Answers1

0

I seem to have gotten this working; posting here for future prosperity.

I simply set my problematic 3rd party app to record from "CABLE Output (VB-Audio Virtual Cable)", and then set USB microphone to "Listen to this device"->"CABLE Input (VB-Audio Virtual Cable)".

Windoze still non-deterministically sometimes fails to honor the "Listen to this device" setting when the USB microphone is plugged in.

This is solved by a script that disables and re-enables the USB microphone device.

The reason this works, I am guessing, is that the "CABLE Input (VB-Audio Virtual Cable)" playback/render device was written to loop back audio that is played/rendered to the "CABLE Input (VB-Audio Virtual Cable)" recording/capture device.

So, effectively, I have the "virtual recording/capture input that outputs audio recorded from another recording/capture input" that I was looking for, but to be more precise it is a "recording/capture input that outputs captured audio to a virtual playback/render output that loopbacks audio to a virtual recording/capture input".

swooby
  • 3,005
  • 2
  • 36
  • 43