Monitor of Filtered Audio - requesting help

RichRichRich

New Member
Hi, I'm running the 29.1.1 apt version of OBS on my Ubuntu based system - Linux Mint.
I've been able to add VST2 audio filters to my desktop audio, as well as the mic... and then apply the Auburn Graillon2 VST2 plugin for some crazy effects.

Unfortunately, I cannot hear the modified audio in my headset for either the mic or the desktop audio. I do hear my own voice... but it's the unfiltered audio. Is there a way to fix this? I do have Monitor and Output set. Also, if I record the audio... then the filtered audio IS recorded.

Btw, when I use OBS (same version, 29.1.1) on Windows, I can hear the filtered audio when speaking into my headset mic.... and listening in my headset earphones. If I try to have the audio come out on the system speakers, then it is not filtered.

Any ideas on what could be happening? Really just trying to solve this for Lunix. The windows commentary is just for comparison.

Thank you
 

AaronD

Active Member
Unfortunately, I cannot hear the modified audio in my headset for either the mic or the desktop audio. I do hear my own voice... but it's the unfiltered audio. Is there a way to fix this? I do have Monitor and Output set. Also, if I record the audio... then the filtered audio IS recorded.
That might answer a different question:
When using a stereo device for two independent mono signals (two XLR mics, for example, for two different people), OBS requires a "hack" to get those two independent mono's from the single stereo device: Have two copies of that stereo source, pan/balance each one hard left or hard right, and check the Mono box for both. This works because the mono switch seems to be at the *end* of the chain instead of the beginning (every pro console that I've used had it at the beginning), but that begs the question then, of how the filters work.

If the mono switch is really at the *end*, after the filters, then some of the filters (Gate, Expander, Compressor, Limiter) become almost useless for dual-mono signals, because they respond to both but you only hear one.

If the pan/balance and mono switch are both at the beginning, then all of the filters would be okay. Putting my previous understanding together with your description, results in this new understanding:
  1. Device selection
  2. Pan/balance
  3. Mono
  4. Monitor -> Device selection
  5. Filters
  6. Volume
  7. Meter
  8. Mute
  9. Output -> Track selection -> Stream and Recording
Does that sound about right? If so, then I'd call it good for the filters being independent for dual-mono, but seriously messed up for almost everything else. There's a reason that pro consoles are laid out the way they are, and this is not that layout!

Btw, when I use OBS (same version, 29.1.1) on Windows, I can hear the filtered audio when speaking into my headset mic.... and listening in my headset earphones. If I try to have the audio come out on the system speakers, then it is not filtered.
So...the Windows version has a different processing order? That's even more messed up! At least make them consistent!

This one sounds like:
  1. Device selection
  2. Pan/balance
  3. Mono
  4. Filters
  5. Volume
  6. Meter
  7. Mute
  8. Monitor -> Device selection
  9. Output -> Track selection -> Stream and Recording
Which is closer to the pro layout, but the Pan/balance really needs to move down, between Filters and Volume, Mono stays up top, and the Device selection needs to add a channel selector within the selected device. That, then, gets copied to all OS's.

There have been several requests to completely overhaul OBS's audio system, to make it more like a DAW or a professional console, but so far nothing has actually been done.

In the meantime, consider OBS to be a video-centric thing with only token audio, regardless of OS. If you're not doing much with audio, it might be okay, but if you're doing anything fancy at all, you'll want to move all of it outside of OBS - either a DAW or a physical console - and bring the completely-finished soundtrack into OBS, as its only audio source, to pass through unchanged.
 

RichRichRich

New Member
Thanks for this info Aaron. What applications would you recommend for modifying the audio outside of OBS? I've tried Pulse Effects, but with mixed results. Sometimes I'll make changes with Pulse Effects and they take effect... but then I'll turn off the effects but they continue in the sound system until I reboot. I also see Pulse Effects show desktop audio coming through the mic interface, and vise versa. Anyhow, it works some... but not constistent
 
Last edited:

AaronD

Active Member
What applications would you recommend for modifying the audio outside of OBS?
I've settled on Ardour, which is preinstalled with Ubuntu Studio, or you can sudo apt install ardour on any other Debian derivative.
1683833652646.png

This screenshot is for a meeting that has both local and remote attendees. The audio signal path is also attached, along with all of the other setup in the ZIP archive.

Each mic comes directly into Ardour (red color code), as well as any local playback (green), and the meeting (yellow) and local speakers (blue-purple) are also handled here. The only involvement from OBS is to:
  • Play videos, which go immediately to the playback channel that I set up in Ardour
  • Record a finished soundtrack from another channel in Ardour
  • Control the two aux sends on the far left channel via OSC, which in turn control the gates/keyers as custom mute points
This is all started and closed by a script (good luck doing it manually!), which is also included in the ZIP.

Automation (WebSocket and OSC commands in this case, based on the current scene name) is in the Advanced Scene Switcher plugin:

As you might have figured out, most of the audio routing is handled in JACK, while the standard for most desktop applications is PulseAudio. Those are not the same thing, so part of what the script does is to create the required bridge devices between them (lines 169-173 of Work/0_Setup.sh), and remove them afterwards (lines 457-461).
And the tool that brings the hardware devices into JACK has had a bug for a while, which causes the mics to be about 48dB too hot (probably taking the lower 16 bits of a 24-bit sample), and the speakers to not work so well either. The fix is done and only needs to trickle down, but if it hasn't gotten into your updates yet, you can build and install it from source:

The linux world is slowly transitioning now, from PulseAudio and JACK to PipeWire, which emulates both simultaneously. That should simplify a lot of this audio setup...when it finally rolls out to the more conservative distros like Ubuntu and its derivatives. Until then, this is how to do it.
 

Attachments

  • Meeting.zip
    104.3 KB · Views: 10

RichRichRich

New Member
Wow, that looks amazing! I will try the app you suggested.

So, I finally got my system set up correctly after much trial and error. I can record from the Desktop without any audio effects, and I can record from my mic with effects, and without any echo (and without recording my both my natural voice AND my voice with effects).

Here is what I did (documenting mostly for myself, and perhaps others). I am also using a Beringer Xenyx 302 USB Mixer.
Linux Sound App
* Set the output device to "Analog Output PCM2902 Audio Codec"
* Set the input device to "Analog Output PCM2902 Audio Codec"

Linux Volume Control App
Playback:
Pulse Effects: Playback Stream on PCM2902 Audio Codec Analog Stereo.
Recording:
OBS: Desktop Audio from Monitor of PCM2902 Audio Codec Analog Stereo.
OBS: Mic/Aux from Monitor of Pulse Effects (mic)
Pulse Effects: Record Stream from PCM2902 Audio Codec Analog Stereo.

Pulse Effects
Not using the Desktop Icon
Mic Icon: Applications All are on. All effects seem to work.

OBS 29.1.1
Audio Mixer: both Desktop Audio and Mic/Aux set to PCM2902
Advanced Audio Properties: Both Desktop Audio and Mic/Aux set to Monitor Off
Sources: Device for both set to "Monitor Off"
Settings -> Audio: both set to PCM2902.

Problems I am still encountering:
* The Linux Sound app sometimes stops working. While in Output tab, I click one of the other devices, and then click back on the PCM2902 and the audio comes back. Seems to be intermittent.
* The Pulse Effects app also periodically stops taking audio input (No sound is seen in the meter on the top). To fix it, I click on "Test Signal" and then the sound comes back.
 

AaronD

Active Member
I don't use PulseAudio at all, except as part of the bridge between JACK and the apps that only understand PA. That also means no Pulse Effects, and pavucontrol (what I think you're calling the Linux Volume Control App) doesn't do much either except to say that "this app connects to this bridge at 100% volume." The bridges are effectively virtual speakers and mics as far as PA is concerned, and 100% is no change. Do *everything* in Ardour, including volume adjustments.

Use the bridges to get into JACK and then from there to Ardour, and do *everything* in Ardour, including processing, routing, mixing, everything. All other possible processing points are unchanged passthroughs, except for the final (physical) speaker volume, and then only if the speakers don't have their own dedicated control for themselves. (TV volume, knob on powered computer speakers, etc.) If you're not starting with a distro that has Ardour and a bunch of plugins pre-installed, then you'll need to do that too. My favorites are:

What's your Linux Sound App? Is that Ardour? Or is it something else?
 

RichRichRich

New Member
Yes, pavucontrol shows up as "Sound" in Linux Mint.
Sound.png


The Volumn Control looks like this in Linux Mint.
volumecontrol.png


I'll try using Ardour for everything as you suggest. Thanks for your help and suggestions.
 

RichRichRich

New Member
I don't use PulseAudio at all, except as part of the bridge between JACK and the apps that only understand PA. That also means no Pulse Effects, and pavucontrol (what I think you're calling the Linux Volume Control App) doesn't do much either except to say that "this app connects to this bridge at 100% volume." The bridges are effectively virtual speakers and mics as far as PA is concerned, and 100% is no change. Do *everything* in Ardour, including volume adjustments.

Use the bridges to get into JACK and then from there to Ardour, and do *everything* in Ardour, including processing, routing, mixing, everything. All other possible processing points are unchanged passthroughs, except for the final (physical) speaker volume, and then only if the speakers don't have their own dedicated control for themselves. (TV volume, knob on powered computer speakers, etc.) If you're not starting with a distro that has Ardour and a bunch of plugins pre-installed, then you'll need to do that too. My favorites are:

What's your Linux Sound App? Is that Ardour? Or is it something else?
Aaron... what's the best tutorial to get started with Ardour... I'm finding the learning curve quite high. But, I have not given up yet.
 

AaronD

Active Member
Aaron... what's the best tutorial to get started with Ardour... I'm finding the learning curve quite high. But, I have not given up yet.
And you might poke around Ardour's forum too:

Myself, I already knew how to run a physical mixing console:
and so I set it up like that. All I needed then was the I/O connections, that I think of as if they were physical wires.

For the physical board, it's literally a grid: inputs in columns, outputs in rows to the musicians' speakers, and a volume knob for each intersection. Each channel strip also has:
  • A gain knob at the top, that takes whatever the raw source is giving me, and makes it sensible for the rest of the board to use. Your equivalent of that would be the operating system's mic volume.
  • A tone control (equaliser, or EQ), that takes up 6 of the knobs for each strip. (on that particular board: some have more, some less)
  • The faders at the bottom are just more volume controls, that feed a "special" mix that ends up in the audience speakers; otherwise the same as any other volume knob on the grid.

Once you've got that solidly in mind, you can build it in Ardour from the ground up. You're literally building your own custom audio console, that has everything you need and nothing you don't, in all of its detail. You have to add each channel strip, connect its input(s) and output(s), and then add its processing as plugins and configure those. Once you've got that figured out, you can add some busses, VCA's, etc., so that a bunch of things that have to change together and track each other, can be on a single control that does exactly that.

That's all in the manual that I started this post with...provided that you at least have some idea of how to use a mixing console in the first place. For that, there's lots of YouTubes! And of course they don't all agree with each other. Watch a bunch, figure out *why* each one says to do it a particular way, and use the *reasons* for your own work, not the instructions.
 

AaronD

Active Member
Thank you... I have been able to get started. I also found this video which was very basic, but also helped. https://www.youtube.com/watch?v=bfTAKv4htDE
Yep! The focus of that one is more on a standalone audio recording studio, whereas we're more interested in live work. But it's still a good getting-started guide.

If you imagine a recording studio as a mixing console, with each channel strip fed from a mic, app, or whatever, and its output getting sent somewhere, and a tape machine at the top of each strip also, that you can actually see and edit what's on each tape, then you kinda get the purpose of Ardour. (and any other DAW, for that matter)

For live work, we're only interested in the mixing console itself. Feed it from the mics, and send its output to OBS. OBS then passes that through unchanged. To help with that, Ardour has an option to show the mixer alone, like my screenshot above (and copied below):
1684766848481.png


Like the video says, you can right-click the empty area, to the right this time, between the individual strips and the Master, to add a new strip.
The middle box on the left side is a quick way to reorder them.
1684766978954.png


If you go to Edit -> Preferences -> Control Surfaces, and enable OSC, then you can use the latest version of the Advanced Scene Switcher plugin to automate Ardour from OBS.
1684767311128.png

1684767454839.png

That message tells Ardour to look at the 1st strip, 1st aux send from that strip, and set its send level to 0dB. Arguments in that order. If you want to adjust the fader of that strip, drop the "send" part from the path, and drop the middle argument.

If you look closely at the screenshot of my meeting rig, you'll see that my 1st strip has a signal generator on it, followed by 2 aux sends. I've routed those aux sends to the "sidechain" inputs of some noise gates in other strips, just so I can use the gates' timing controls to have something other than a hard step. (they respond entirely to the sidechain signal, and not their own input) Thus, a single message from OBS to Ardour, triggered by "something" in OBS via Adv. SS, produces a nice audio fade that can be coordinated across multiple things in any way that I want.
 

RichRichRich

New Member
Wow, that's awesome.... I will be doing a similar configuration later today. I was specifically looking for how to do the "live" work, and you really helped - thank you! As I play with Ardour... I am having trouble getting the computer desktop sound (ie. browser sound from youtube videos) to go into Ardour. I'll work on that after getting a similar set up to what you described above. Thank you again!
 

AaronD

Active Member
I will be doing a similar configuration later today.
It took me more than a few days to figure it all out. :-)

I am having trouble getting the computer desktop sound (ie. browser sound from youtube videos) to go into Ardour.
That's what my "PA_out_Playback" bridge is for, from PulseAudio to JACK. (search the Setup script for that) But my browser can't select its own output, so I have to do it with pavucontrol-qt instead. Then it works.
 

RichRichRich

New Member
So, I have had success based on your help. Thank you!! Now I have a follow on questions, but first... let me explain my simple set up.

I have a Xenyx 302 USB mixer which is shown as PCM2902 Audio Codec on the screenshot below, which is my mic going into Audio 1 L/R. Then I also have Brave (my browser) going to Audio 2 L/R. Both of these go to Master Out 1... and each of these goes to both OBS as well as back to the Xenyx (headphones).

1685149330144.png


So, I try to save the above QjackCtl configuration so that I don't have to set everything back up every time I boot up or restart... but I don't seem to be able to make it persistent. I tried saving via the Session, as well as Setup and defining a Preset. However, im not able to restore the setup... all the connections came back. See the mess below.

What's the best way to save configurations?

1685148607566.png
 

AaronD

Active Member
I'm really not concerned with the mess. As long as Ardour does what it's supposed to, I'm happy.

Also, you're taking the mixer and the browser into a mono strip for each, which already destroys any stereo information. Then you take the stereo output of those strips and mix them *again* down to mono, which nullifies whatever you do on the panner, and put that on the left side only of the Master. Then the left out of the Master goes to both sides of the stereo destinations.
Is there a reason to do that, instead of keeping it stereo all the way through? Maybe there is, but it sure looks weird on the diagram!

I'd be more concerned about that, than a couple of extra connections that Ardour probably uses for things that you haven't discovered yet.
 
Top