Code Monkey home page Code Monkey logo

obs-audio-monitor's Introduction

Audio Monitor dock and filter for OBS Studio

Plugin for OBS Studio to add Audio Monitor dock and filter. It allows you to put the audio of a OBS source to an audio device by adding the Audio Monitor filter on the Source in OBS Studio.

Screenshot

This can be useful in different use cases:

  • monitoring a source on multiple devices
  • monitoring audio without the delays of syncing to video
  • separate monitoring audio levels per source and device

Download

https://obsproject.com/forum/resources/audio-monitor.1186/

Build

Donations

obs-audio-monitor's People

Contributors

cooliguay avatar exeldro avatar msmafra avatar sasagar avatar trouffman avatar tytan652 avatar zyanklee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

obs-audio-monitor's Issues

Add ASIO compatibility

Hello,
It will be nice if we can select ASIO output channel in the filter (only WDM for now). Maybe a mix with obs-asio plugin ?
Thanks.

[0.8] crackling sound when volume is changed

After updating from 0.71 to 0.8 I have the problem that the sound whether OBS crackles as soon as you change the volume in OBS on the channel. It does not matter if the volume is increased or decreased via audio monitor or in the audio mixer of OBS.
After uninstalling 0.8 to reinstall 0.71 the problem is solved, so it is purely a problem of the current version.

Using Windows 10 21H2 (19044.1741) and OBS Studio 27.2.4 (64 bit).

Issue with obs-studio 27.0.1?

I just built obs-studio with audio-monitor and at run time I get the following error:

error: os_dlopen(/usr//lib/obs-plugins/audio-monitor.so->/usr//lib/obs-plugins/audio-monitor.so): /usr//lib/obs-plugins/audio-monitor.so: undefined symbol: audio_monitor_get_device_id
warning: Module '/usr//lib/obs-plugins/audio-monitor.so' not loaded

obs-studio 27.0.1
audio-monitor git version 0bd32be (14 april, checked out august 24 2021).

Any help appreciated.

Audio glitch with cause and replication steps.

I know this has been reported, but I don't know how to add a reference to that issue, sorry?

Since version 0.7.1 there is a "glitch" that has been driving me crazy, and that is crackling noise and distortion under certain circumstances.

Steps to replicate:
1 - Use the Move transition plugin.
2 - Generate a filter that raises the volume to 100% with a duration of 2300 ms.
3 - Generate a filter that lowers the volume to 0% with a duration of 2300 ms.
4 - Activate the filters randomly without letting the previous one end.

The glitch only occurs when there are two transitions simultaneously on the same audio source.

It is only a matter of time before the glitch occurs; the audio will start to distort and the slider movement will stop being fluid, it will also increase the CPU usage, and the only way to solve this glitch is to restart OBS, it is worth clarifying that the audio distortion is also visible in recordings and live performances.

The only way I have found to avoid the problem is to use version 0.7.0 together with OBS 27.2.4, where curiously it does not occur, no matter how much the simultaneous fade is forced.

I would be very grateful if this problem could be examined as it is a bug that can potentially break a whole recording or live; thank you very much.

What does this do?

hey Exeldro,

thanks for your great OBS plugins. Can you show us how this plugin looks in OBS? Or at least explain with a little more detail what it does and which problems it solves?

best regards

Delay after some minutes of use

When I start my OBS everything is running fine, but after some minutes of use I start to percept some delay from every audio channel that I use Audio monitor.

What I can do to solve it is to change the output device to another one and then come back to the one that I use. But it is really annoying to do it 1 or 2 times per hours of live since I stream for about 7 or 8 hrs, if not more a day.
If I just restart my OBS it solves the problem too, but I can't do it while in live; I don't know why it happens, but since I use the audio monitor to stream using different audios for VOD and Live I need to use the audio monitor to listen everything.
Does anyone know anything that could be related to it and help me to solve it completely?

Mute linking not working on restart

I have a monitor audio filter on the Mic / Aux 1 input, and have it set that the mute status on the Monitor is linked to the source mute. However on starting up OBS this doesn't work, and I need to set the link to 'not linked' and then back to 'linked' in order for it to operate correctly.

Output level on Audio track do not show the slider names

Version 0.8.0

The name of the slider does not appear under the speaker icon.

This is "by design" (IIRC) as "audio track" volume cannot be changed, so the slider is for the monitoring only.

image

This end up confusing users between the audio tracks & input monitoring. (especially if using custom names for audio-tracks)

This would be similar to some feedback in #40

Link to source not muting when restarting the app

If a source is configured with the Audio Monitor filter, and I want to link the source output on the monitor with the muting state of it, it won't work when OBS opens, I need to enter the settings and uncheck and check the option for it to work. After this whenever I mute the source it mutes the output.

Monitor Stinger transition

Hello,

great work with this plugin, do you think it could be possible to manage audio monitoring for Stinger transitions too ?

Thanks

UI/UX redesign suggestion : compact design + icons quick access

This is a companion ticket for the issue #39 and #35 with more details on the changes required in UI to streamline usage.

Today's UI

image

Challenges or missing stuff

  • Name are missing on tracks for devices output. (On source this is coming from the filter name)
    It is hard or impossible to now which device is which slider.

  • Cannot monitor the output level on a specifi device (see #39 for fixing this)

  • No option to configure audio level for OBS monitoring device

  • No horizontal mode (could be more compact)

  • Hard to keep track of which slider is for what purpose

  • Vertical layout take up more screen space than the OBS Audio Mixer vertical mode (couple of reasons for this)

Suggested UI changes

Obviously this would be up to discussion, but I and couple of my teammates went through multiple rounds of prototyping the following suggestions.

Mockup In vertical layout :
OBS-Audio monitor

Change list

Monitoring device control section

  • A level to control the output to your monitoring device.

  • A "cleanup" (recyclable) icon to "disable" all audio going to your audio moniroting device. This could be a double sided feature : click once, clear everything. Click again without any changes, go back to all previously monitored tracks (could be counter-intuitive)

  • The global settings cogwheel to control all the plugin settings (minus the device allocation per tracks, see below). This cogwheel contains ANY global settings, while any "track/sources" specific settings are in the cogwheel for each track/source.
    image

  • Top Name could be configurable or set to "Mon" or nothing until implemented

  • Headset (monitoing icon) is clickable > enable/disable output to you OBS-definet audio monitoring device.

Note : Audio meter are irrelevant for this. See point 1. 2. and A. B. C. in issue #39 for the reasons.

Track control section

  • Track Name from the OBS Audio output settings is use per tracks. (already implemented, related to #36 )

  • db meter on each track (this is a useful info on the regular Audio Mixer
    (ultimately this would be nice on EACH audio output device.) - Could be used in place of the device/bus name (see next)

  • Output or device or audio bus name. Help quickly identify the output audio device/bus used.

Why use an audio bus name? Allow to set friendly name per device output/bus AND color for the slider. NB: Audio bus are DIFFERENT than Tracks, tracks are a set of output "group" while the Audio Bus are Output Devices.

Some more per device/bus configuration, including name and colors.
OBS-Audio-Bus
Could be renamed in "Output Device Bus" to avoid confusion maybe. (TBD)

  • Audio level meter
    Having the "numbers" on every metersis superfluous IMHO.
    See the recommendation in "General UI" Paragraph to reduce footprint.

  • "Volume Lock" option is still there. but shoudl also be in the track/source cogwheel menu. One could argue this could easily be moved to the "Track/source cogwheel option". And free up that space.

  • Per track/Source Cogwheel settings menu.

  1. Enable/disable
  2. Volume lock
  3. Select Extra Audio device (or Audio Bus)
  4. Hide (to quickly hide) > To unhide, go to the global settings cogwheel
  • Audio level Slider behavior
  1. First slider is ALWAYS the output (no matter if it is a track or a source). And always the default OBS color for sliders.
  2. This "output" slider is "locked" if changing volume level is NOT available (might be the case for the track) - Might need a help message when hovering on the lock or selecting in the menu. See #35 for this request.
  3. Any other sliders are for "Extra Audio Output Devices" and use the name/color set in the "Bus Name panel" (as decribed previously)
    I tried to keep all the slider consistent in scale / size for UI consistency
  • Speaker icon : enable/disable output or ourput to that extra device. (NOT the monitoring!)

  • Headset icon : Enable/disable the audio monitoring to the "default audio monitoring device". (See the bahvior section is this is unclear)

  • Headset (Monitoring) is avaialble for ANY output/ exra output devices

General UI :

  • Vertical separator between Tracks / Sources and Monitoring control.
    This is purely to simplify UI and quick access, as it is triccky to know where each "group" or category of controls are. This is a visual aid for it.

  • Global Menu option : Meters Output

Uniformise behavior with OBS behavior on 27.2 : obsproject/obs-studio#5716
More to discuss on this...

  • Global Menu option for : Compact design - audio meter
    Reduce footprint of the "Audio level meter"

Compact design keep the audio meter numbers ONLY on the first meter of each category. (Track 1 and Source 1)

  • Global Menu option for : Compact design - track/sources
    Allow to display/hide the track / sources sections.

Some will only monitor at the source level, other only at the track level (how I use it mostly)
Also this is where you unhide specific tracks/source. Menu option : Show/Hide > Tracks|Sources > All | Track/Source 1,2,3.
This will save space in the layout. Also similar behavior as the official OBS Audio Mixer.

  • Horizontal layout option (like the default OBS Audio mixer). More mockup work might be required.

  • Reduce the padding in between sliders/icons. Get it closer to the OBS Audio Mixer look & feel.

NB: There are limitation here that we have to play with : in OBS Audio Mixer, the icons for enable/disable are not align with the slider but within the width of the meter + slider. It does not work if the icons are next to the meter, only if below

NB 2 : If thinking about "touch based" interface, this would require some work like exra padding, etc, to account for "touch-regions". I do not think this is required for now, it would need to be a special UI thinking as well.

  • Obviously settings would be saved so this is not to be reconfigured eveytime.

To confirm behavior

Example 1 :
A slider on track 1 is set at 100%, and slider on "Audio Moniroting device" at 80% > Track 1 volume on monitoring device is 80%, output stays at 100%

Example 2 :
A slider for Track 1 is at 100%, Source 1 at 80%, and Mon Device at 50%.

track1 is heard at "50%" and source 1 at "40%" volume on the monitoring device and the output on track1 is 100%, and 80% for the Source 1.

Devil's advocate section

Some ideas and why I don't think they are to be implemented.

  • Have each group as a separate widget. It would overcomplexify the UI, and make it worst overall (like you would need the audio monitoring in all the widget or in none, and the space taken for each new widget would lose a LOT of space (and then be counter-productive to what is proposed.)

  • Only keep the cogwheel on the first left side and remove it from all the other tracks/ sources.

This will create a "multi layer/multi child" menu type (like in today's UI) it is too easy to hover out, misclick or lose what was changed.
Per track allows to keep that specific settigns to that specifi track. anything "global" is set at the "global settings" cogwheel.

Happy to discuss other possible improvments.

Memory leaks on fresh OBS 27.2 Installation

Reproduction steps:

  1. Download & install a fresh copy of OBS Studio 27.2.0 (or use the zip version) in portable mode
  2. Load then close OBS
  3. 0 memory leaks
  4. Install the ZIP version of this plugin
  5. Load then close OBS
  6. 2 memory leaks

These 2 leaks appear with or without the dock visible, with a fully vanilla configuration.

In summary:

  • 2 leaks in default Simple Output mode (1 for each of the default audio sources)
  • 18 leaks after switching to Advanced Output mode (number of enabled tracks in Settings -> Output does not matter)
    • down to 17 if Mic/Aux is Disabled in Settings

Log: 2022-02-18 22-29-58.txt

Noticed when trying to track down leaks in my main installation. I'm personally seeing 31 leaks from this plugin there, likely due to source count.

Long, Robotic and Loud distorted sound

I don't really know how to explain this properly, but when installing the plugin, any sound played while OBS is running will become a distorted long, loud and robotic sound. There's pretty much no way to stop this other than to close OBS and remove the plugin.

I saw someone else in the forum experiencing this issue, but they apparently didn't post it here, so I'll be sharing my log file.

OBS 26.1.1 (64-bit, windows) log file uploaded at 2021-04-24, 21:13:29

21:13:11.171: CPU Name: Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz
21:13:11.172: CPU Speed: 2112MHz
21:13:11.172: Physical Cores: 4, Logical Cores: 8
21:13:11.172: Physical Memory: 16190MB Total, 6722MB Free
21:13:11.172: Windows Version: 10.0 Build 19042 (release: 2009; revision: 928; 64-bit)
21:13:11.172: Running as administrator: false
21:13:11.172: Aero is Enabled (Aero is always on for windows 8 and above)
21:13:11.173: Windows 10 Gaming Features:
21:13:11.173: Game Bar: Off
21:13:11.173: Game DVR: Off
21:13:11.173: Game DVR Background Recording: Off
21:13:11.177: Sec. Software Status:
21:13:11.181: Antivirus de Microsoft Defender: enabled (AV)
21:13:11.182: Firewall de Windows: enabled (FW)
21:13:11.184: Current Date/Time: 2021-04-24, 21:13:11
21:13:11.184: Browser Hardware Acceleration: true
21:13:11.184: Portable mode: false
21:13:12.707: OBS 26.1.1 (64-bit, windows)
21:13:12.707: ---------------------------------
21:13:12.709: ---------------------------------
21:13:12.709: audio settings reset:
21:13:12.709: samples per sec: 48000
21:13:12.709: speakers: 2
21:13:12.710: ---------------------------------
21:13:12.710: Initializing D3D11...
21:13:12.710: Available Video Adapters:
21:13:12.712: Adapter 0: AMD Radeon (TM) RX 640
21:13:12.712: Dedicated VRAM: 2090487808
21:13:12.712: Shared VRAM: 4193697792
21:13:12.712: PCI ID: 1002:6987
21:13:12.713: Driver Version: 27.20.11022.12006
21:13:12.713: output 0: pos={0, 0}, size={1920, 1080}, attached=true, refresh=60, name=
21:13:12.713: Adapter 1: Intel(R) UHD Graphics
21:13:12.713: Dedicated VRAM: 134217728
21:13:12.713: Shared VRAM: 4193697792
21:13:12.713: PCI ID: 8086:9b41
21:13:12.713: Driver Version: 27.20.100.8935
21:13:12.716: Loading up D3D11 on adapter AMD Radeon (TM) RX 640 (0)
21:13:13.547: D3D11 loaded successfully, feature level used: b000
21:13:13.572: DXGI increase maximum frame latency success
21:13:13.572: D3D11 GPU priority setup failed (not admin?)
21:13:14.192: ---------------------------------
21:13:14.192: video settings reset:
21:13:14.192: base resolution: 1920x1080
21:13:14.192: output resolution: 1280x720
21:13:14.192: downscale filter: Bicubic
21:13:14.192: fps: 30/1
21:13:14.192: format: NV12
21:13:14.192: YUV mode: 709/Partial
21:13:14.193: NV12 texture support enabled
21:13:14.194: Audio monitoring device:
21:13:14.194: name: Por defecto
21:13:14.194: id: default
21:13:14.198: ---------------------------------
21:13:14.200: Failed to load 'en-US' text for module: 'audio-monitor.dll'
21:13:14.200: [Audio Monitor] loaded version 0.7.1
21:13:14.288: [CoreAudio encoder]: CoreAudio AAC encoder not installed on the system or couldn't be loaded
21:13:14.289: Failed to load 'en-US' text for module: 'decklink-captions.dll'
21:13:14.291: Failed to load 'en-US' text for module: 'decklink-ouput-ui.dll'
21:13:14.879: [AMF] Version 2.7.0 loaded (Compiled: 1.4.14.0, Runtime: 1.4.17.0, Library: 1;4;17;0;20.10.22.12;202009280007;CL#2178358).
21:13:15.046: [AMF] [Capability Manager] Testing Direct3D 11 Adapter 'AMD Radeon (TM) RX 640 (VEN_1002/DEV_6987/SUB_507a17aa/REV_00c0)':
21:13:15.046: H264/AVC: Supported
21:13:15.046: H265/HEVC: Supported
21:13:15.046:
21:13:15.069: [obs-browser]: Version 2.9.1
21:13:15.069: [obs-browser]: CEF Version 75.1.16+g16a67c4+chromium-75.0.3770.100
21:13:15.193: VLC found, VLC video source enabled
21:13:15.198: A DeckLink iterator could not be created. The DeckLink drivers may not be installed
21:13:15.199: No blackmagic support
21:13:15.205: ---------------------------------
21:13:15.205: Loaded Modules:
21:13:15.205: win-wasapi.dll
21:13:15.205: win-mf.dll
21:13:15.205: win-dshow.dll
21:13:15.205: win-decklink.dll
21:13:15.205: win-capture.dll
21:13:15.205: vlc-video.dll
21:13:15.205: text-freetype2.dll
21:13:15.205: rtmp-services.dll
21:13:15.205: obs-x264.dll
21:13:15.205: obs-vst.dll
21:13:15.205: obs-transitions.dll
21:13:15.205: obs-text.dll
21:13:15.205: obs-qsv11.dll
21:13:15.205: obs-outputs.dll
21:13:15.205: obs-filters.dll
21:13:15.205: obs-ffmpeg.dll
21:13:15.205: obs-browser.dll
21:13:15.205: image-source.dll
21:13:15.205: frontend-tools.dll
21:13:15.205: enc-amf.dll
21:13:15.205: decklink-ouput-ui.dll
21:13:15.205: decklink-captions.dll
21:13:15.205: coreaudio-encoder.dll
21:13:15.205: audio-monitor.dll
21:13:15.205: ---------------------------------
21:13:15.205: ==== Startup complete ===============================================
21:13:15.211: All scene data cleared
21:13:15.211: ------------------------------------------------
21:13:15.293: WASAPI: Device 'Altavoz (Synaptics Audio)' [48000 Hz] initialized
21:13:15.305: [Loaded global audio device]: 'Audio del escritorio'
21:13:15.305: - filter: 'AudioMonitor' (audio_monitor)
21:13:15.342: adding 42 milliseconds of audio buffering, total audio buffering is now 42 milliseconds (source: Audio del escritorio)
21:13:15.342:
21:13:15.388: WASAPI: Device 'Microphone Array (Synaptics Audio)' [48000 Hz] initialized
21:13:15.388: [Loaded global audio device]: 'Mic/Aux'
21:13:15.389: Switched to scene '1'
21:13:15.389: ------------------------------------------------
21:13:15.389: Loaded scenes:
21:13:15.389: - scene '1':
21:13:15.389: ------------------------------------------------

Hoping if the Next Update Would Fix/Improve this Amazing OBS Plugin? [Audio Monitor 0.8.0]

Hello, for the past few months I was using exeldro amazing OBS Plugin called 'audio-monitor-0.8.0'. Throughout my time learning and using Audio Monitor, there was two things that are little annoying or "I just have deal with it".

These two small issues I hope the creator would improve/update soon. Which are...

  1. Syncing with my chosen Sources: Audio Filter setting within OBS
  2. Audio Monitor trap or stuck to single system audio channel only
  • Explaining -
  1. So whenever I setup my audio input & output setting within OBS like; 'Application Audio Output Capture', 'Audio Output Capture' or 'Audio Input Capture'. I would normally add different kinds of filter to alter and control the sound quality to my liking.
    But for some reason the 'Audio Monitor' isn't getting or syncing with my audio filter that I just set.
    It is slightly annoying, but I don't mind. Its just that after I finishing completing my audio filter, within Audio Monitor I would only hear the default original audio instead.
    So, it would be really helpful if my audio filter (sources) setting is already sync up with Audio Monitor immediately.

  2. Okay, this second issue is sometime little annoying.
    Whenever I begin to open up my OBS app I would normally set my PC audio to my Samsung 1080p TV audio (which is my second Monitor, as well first Monitor is my BenQ EW3270U).
    While setting up and double checking my chosen setting, whenever I change my PC audio from my Samsung 1080p TV to just my Headphone. For some unknown reason the Audio Monitor is still set on to my Samsung audio instead to my headphone I already selected. (in other words, the Audio Monitor is stuck to a single system audio after when OBS begins opening up).

So the only way to change the Audio Monitor's system channel to my headphone (which I decide), is to close down OBS app and start it up again, so that Audio Monitor would change its audio channel to headphone immediately.

Well, I know that this plugin is still updating.
But nevertheless, I hope my critique/opinion would help you to fix these issues.

Use Name of Track in Audio Monitor

Suggestion : Use the track name as set in OBS Settings to target the Track 1-6 in the monitor.

image

Keep the default "Track 1-6" when field is empty.

Thanks!

Segmentation Fault on start

Hi,

this is the first time I've tried to use this plugin on Linux (Debian Unstable).
I followed the instructions to build the plugin and included it in the UI/frontend-plugins CMakeLists.

However, if I try to run OBS with this compilation I get a segmentation fault with the following backtrace:

Thread 12 "audio-io: audio" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffc1dfb640 (LWP 24709)]
0x00007fffda300d10 in AudioOutputControl::OBSOutputAudio(void*, unsigned long, audio_data*) () from /usr/local//lib/obs-plugins/audio-monitor.so
(gdb) bt
#0  0x00007fffda300d10 in AudioOutputControl::OBSOutputAudio(void*, unsigned long, audio_data*) () at /usr/local//lib/obs-plugins/audio-monitor.so
#1  0x00007ffff67bce30 in  () at /usr/local/lib/libobs.so.0
#2  0x00007ffff67bcee7 in  () at /usr/local/lib/libobs.so.0
#3  0x00007ffff3e87b27 in start_thread (arg=<optimized out> at ./nptl/pthread_create.c:435
#4  0x00007ffff3f0a78c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

So far I don't know if there is a workaround to fix this and the plugin is entirely unusable :/

Crash Audio Monitor OS X

Hi,

Stumble across an issue with Audio Monitor 0.7.1. on a Mac OS 11.2.3 with OBS 26.1.2. It seems that AM crash when the even tracks are being selected (Settings > Outputs > Track 2/4/6 > Show). The uneven tracks 1, 3, 5 are fine
2021 03 26 OBS AM crach.txt

Enhancement or New Plugin: Select Audio Sources by variables/aliases

Hi,

Every time I get a core Windows Update, Windows changes Device ID's of Audio Devices. This means, that every time this happens, I have to go over all the sources that use Audio, and the Audio Monitor filters, to select the proper audio device again.
It would be great if I could use an Alias or Variable or something that doesn't change, and then I would only have to redo the Alias.

Same would apply if I use the Audio Monitor filter on 20 different sources, and want to change the device on these. Now, I have to find and go modify all these filters. Using a variable or alias or something would really be helpful.

Perhaps this is an enhancement of the Audio Monitor plugin, but even better, it could be it's own plugin.

I hope my problem statement is clear. Not sure if anyone else would find this helpful, but it's a problem I am facing frequently.

Thanks!

Tino

Add tags and Linux compatibility

Hi @exeldro !

What a great project again ! I like very all your repos, thank you !

Please, can you add tags when you push commits on all your repos please ? It's more easy to seek and follow versions.
And, for obs-audio-monitor, I builded for Linux and the plugin recognize pulseaudio and find sink devices, do you think it's very incompatible ?

Thanks.

Crackling sound when using "Assign to all" and WASAPI Device failed to start

Hi,
On this one I am not sure if this is my system or another bug.

When doing so this have a crackling sounds and slowness while perf. usage seems acceptable (beside 3 (Logical) cores).
image

Log File excerpt

18:40:08.256: Audio monitoring device:
18:40:08.256: name: Speakers (Intel® Smart Sound Technology (Intel® SST))
18:40:08.256: id: {0.0.0.00000000}.{182439e0-3bb9-40bf-ba0c-952042a7046c}

0.0.0.00000000 is my laptop audio device I use for testing the audio monitoring.

Later I get a bunch of WASAPI error :

18:40:09.508: [win-wasapi: 'Input Audio (Mic)'] update settings:
18:40:09.508: device id: {0.0.1.00000000}.{d9ba5ac3-7bcd-40b1-8dd3-88bf22e41d64}
18:40:09.508: use device timing: 0
18:40:09.533: [win-wasapi: 'Desktop Audio'] update settings:
18:40:09.533: device id: {0.0.0.00000000}.{da1b22ad-2a7c-409e-abad-6e45122b9347}
18:40:09.533: use device timing: 1
18:40:09.534: [WASAPISource::TryInitialize]:[Microphone (NVIDIA Broadcast)] Failed to activate client context: 88890004
18:40:09.534: WASAPI: Device '{0.0.1.00000000}.{d9ba5ac3-7bcd-40b1-8dd3-88bf22e41d64}' failed to start
18:40:09.534: [WASAPISource::TryInitialize]:[Headphones (Intel® Smart Sound Technology (Intel® SST))] Failed to activate client context: 88890004
18:40:09.534: WASAPI: Device '{0.0.0.00000000}.{da1b22ad-2a7c-409e-abad-6e45122b9347}' failed to start

and later : (usually when assigning Audio monitoring source)

18:40:12.535: WASAPI: Device '{0.0.0.00000000}.{da1b22ad-2a7c-409e-abad-6e45122b9347}' failed to start
18:40:12.535: WASAPI: Device '{0.0.1.00000000}.{d9ba5ac3-7bcd-40b1-8dd3-88bf22e41d64}' failed to start
18:40:15.535: WASAPI: Device '{0.0.1.00000000}.{d9ba5ac3-7bcd-40b1-8dd3-88bf22e41d64}' failed to start
18:40:15.535: WASAPI: Device '{0.0.0.00000000}.{da1b22ad-2a7c-409e-abad-6e45122b9347}' failed to start
18:40:18.536: WASAPI: Device '{0.0.1.00000000}.{d9ba5ac3-7bcd-40b1-8dd3-88bf22e41d64}' failed to start
18:40:18.536: WASAPI: Device '{0.0.0.00000000}.{da1b22ad-2a7c-409e-abad-6e45122b9347}' failed to start
18:40:21.536: WASAPI: Device '{0.0.1.00000000}.{d9ba5ac3-7bcd-40b1-8dd3-88bf22e41d64}' failed to start
18:40:21.536: WASAPI: Device '{0.0.0.00000000}.{da1b22ad-2a7c-409e-abad-6e45122b9347}' failed to start
18:40:24.537: WASAPI: Device '{0.0.1.00000000}.{d9ba5ac3-7bcd-40b1-8dd3-88bf22e41d64}' failed to start
18:40:24.537: WASAPI: Device '{0.0.0.00000000}.{da1b22ad-2a7c-409e-abad-6e45122b9347}' failed to start
18:40:27.537: WASAPI: Device '{0.0.1.00000000}.{d9ba5ac3-7bcd-40b1-8dd3-88bf22e41d64}' failed to start
18:40:27.537: WASAPI: Device '{0.0.0.00000000}.{da1b22ad-2a7c-409e-abad-6e45122b9347}' failed to start
18:40:30.537: WASAPI: Device '{0.0.1.00000000}.{d9ba5ac3-7bcd-40b1-8dd3-88bf22e41d64}' failed to start
18:40:30.538: WASAPI: Device '{0.0.0.00000000}.{da1b22ad-2a7c-409e-abad-6e45122b9347}' failed to start
18:40:33.538: WASAPI: Device '{0.0.1.00000000}.{d9ba5ac3-7bcd-40b1-8dd3-88bf22e41d64}' failed to start
18:40:33.538: WASAPI: Device '{0.0.0.00000000}.{da1b22ad-2a7c-409e-abad-6e45122b9347}' failed to start
18:40:36.538: WASAPI: Device '{0.0.0.00000000}.{da1b22ad-2a7c-409e-abad-6e45122b9347}' failed to start
18:40:36.538: WASAPI: Device '{0.0.1.00000000}.{d9ba5ac3-7bcd-40b1-8dd3-88bf22e41d64}' failed to start
18:40:39.539: WASAPI: Device '{0.0.1.00000000}.{d9ba5ac3-7bcd-40b1-8dd3-88bf22e41d64}' failed to start
18:40:39.539: WASAPI: Device '{0.0.0.00000000}.{da1b22ad-2a7c-409e-abad-6e45122b9347}' failed to start
18:40:42.539: WASAPI: Device '{0.0.0.00000000}.{da1b22ad-2a7c-409e-abad-6e45122b9347}' failed to start
18:40:42.539: WASAPI: Device '{0.0.1.00000000}.{d9ba5ac3-7bcd-40b1-8dd3-88bf22e41d64}' failed to start
18:40:45.539: WASAPI: Device '{0.0.0.00000000}.{da1b22ad-2a7c-409e-abad-6e45122b9347}' failed to start
18:40:45.539: WASAPI: Device '{0.0.1.00000000}.{d9ba5ac3-7bcd-40b1-8dd3-88bf22e41d64}' failed to start
18:40:48.539: WASAPI: Device '{0.0.1.00000000}.{d9ba5ac3-7bcd-40b1-8dd3-88bf22e41d64}' failed to start
18:40:48.540: WASAPI: Device '{0.0.0.00000000}.{da1b22ad-2a7c-409e-abad-6e45122b9347}' failed to start
18:40:51.540: WASAPI: Device '{0.0.1.00000000}.{d9ba5ac3-7bcd-40b1-8dd3-88bf22e41d64}' failed to start
18:40:51.540: WASAPI: Device '{0.0.0.00000000}.{da1b22ad-2a7c-409e-abad-6e45122b9347}' failed to start
18:40:54.541: WASAPI: Device '{0.0.1.00000000}.{d9ba5ac3-7bcd-40b1-8dd3-88bf22e41d64}' failed to start
18:40:54.541: WASAPI: Device '{0.0.0.00000000}.{da1b22ad-2a7c-409e-abad-6e45122b9347}' failed to start
18:40:57.541: WASAPI: Device '{0.0.0.00000000}.{da1b22ad-2a7c-409e-abad-6e45122b9347}' failed to start

Audio Monitor Issues in v28

Since updating to OBS 28, sounds played through the Audio Monitor filter seem to get very choppy whenever the volume slider is adjusted. And I haven't identified what else, specifically, causes it, but it sometimes happens without adjusting the volume. Restarting OBS or deleting and re-adding the filter temporarily fixes the problem, but only temporarily. What's worse is that any stuttering that's audible to me through the Audio Monitor filter appears to also be present in the outgoing stream.

In the process of troubleshooting another, seemingly unrelated, issue with the update to v28, I discovered via WinDbg that this plugin is constantly throwing errors that link to something along the lines of "avcore\audiocore\client\audioclient\mmdeviceactivator.cpp(279)\AUDIOSES.DLL!00007FF9B74C6431."

Audio Monitor Dock opens on OBS startup, MacOS

MacOS big Sur, 11.3 Beta (20E5196f)
OBS 26.1.2-g9da6fc67c mac

when opening obs, the audio monitor dock partially opens (the dock is there but nothing in it) even when it is selected to be closed in view > docks. Nothing actually comes up in the window, just the window named "audio monitor" and a grey background
This is better shown in the video attached.
audiomonitor.mov.zip

AdvanceAudioProperties Crashes

I experienced obs crashing anytime I opened the advanced audio properties. Windows 64 bit, Audio monitor version 0.3.2. I also just updated to obs websockets 4.9 release, so I do not know if it is due some weird interaction there.

Missing DB Bars in V0.8.1

Some of my sources show the volume slider but not red/yellow/green DB bar. Plugin V0.8.1 OBS V28.0.1

image

Master Mixer (from pvkiet) and control volume on Track1-6

Goal
Ability to control volume on an OBS Audio Track.
Ability to monitor this audio Track level. (already the case today, this include suggestion for improvment)

Context
One of the feature that is totally missing from OBS ( or this plugin is a way to monitor audio per track or input quickly without going to the advanced audio properties).

One of the great integration to fix this is a work by pvkiet for the OBS Music Edition, but he recently announced that he is dropping the project (he was doing a full fork rather than simply a plugin).

I suggest to implement the following ideas :

  • Headphone Icon to quikly enable / disable audio monitoring onthe "Monitoring devices" set in the settings.

this is a better implementation than proposed at : #22
See #39 for more details on this specific use-case.

  • Allow for direct volume adjustement on the track 1-6
    (I don't think the other features on the master mixer are necessary)

Untitled

Reference of the project from pvkiet : https://github.com/pkviet/obs-studio/wiki/Master-Mixer-and-Inputs-Mixer

Note : This is linked to #40 for UI impact of adding the output slider for this feature

Slider still shows even if device is not available anymore

Behavior (bug)

A slider for audio ouput / monitoring is next to a "track" even when that previously set device is not available anymore.

image

How to reproduce

Launch OBS wtht he plugin.
Enable a/multiple monitoring device to a track.
Close OBS
Disconnect (or disable that device in windows)
Re-launch OBS
In the plugin widget there is a slider for a "non-existing" device.

as tested on OBS 27.1.3 and plugin version 0.7.1

From the log file
15:32:30.418: [WASAPISource::WASAPISource] Device '{0.0.1.00000000}.{d9ba5ac3-7bcd-40b1-8dd3-88bf22e41d64}' not found. Waiting for device
Which, I suspect, is the device it tries to assign.

Workaround

  • hide (menu > track > untick "Show")
  • unhide (menu > track > tick "Show"

Support Push To Talk

As far as I can tell PTT does not work with this filter (sound still gets passed through). It seem that OBS does not actually mute the source when you have PTT active. So it would be great if this filter checked if PTT is active as well and not only if it's muted.

Edit; found a workaround https://github.com/upgradeQ/obs-filter-hotkeys (with another filter that mutes it). I also coped the third option and created a 4th that toggles off rather than on when a button is pushed)

Additions:

      filter.hotkeys["4;" .. source_name .. ";" .. filter_name] = function(pressed)
        if pressed then
          obs.obs_source_set_enabled(v,false)
        else
          obs.obs_source_set_enabled(v,true)
        end
      end

    elseif k:sub(1,1) == "4" then -- for hold hotkeys which start with 4 symbol 
      filter.hk[k] = obs.obs_hotkey_register_frontend(k, k, function(pressed)
        if pressed then filter.hotkeys[k](true)
        else
          filter.hotkeys[k](false)
        end
      end)

Change Icon to a "headset" to identify quickly which is monitor vs output

Simple UI suggestion.

Use a "headset" icon in place of the speaker icon for the monitor output.
This is to avoid confusion between the 2 slider (when you can control monitor & output)

example : https://www.flaticon.com/free-icon/headset_566088?term=headset&page=1&position=36&page=1&position=36&related_id=566088&origin=search

Note : that might be counter intuitive for some users that both use headset. This is not to represent the device type, but the functionnality.

Quick access for Monitoring audio output level + default behaviour

Note : this is part of multipel request for improvment.

Goal :
Quickly have access to monitoring for all audio tracks / source on the default audio monitoring device.
Monitoring is really for monitoring (producer). Extra audio output is really for added devices output.

Implies some rework the UI to streamline this.

Reasoning behind this change (numbered for easier discussion) :

  1. When adding monitoring, the device needs to be explicitly configured for each track & each audio sources
    image

  2. The volume level slider for the main volume output can differ from the "monitoring" audio output.
    This is fine for "extra audio devices" but this is counter-intuitive for monitoring.
    It means that if you want to "monitor" your track or source, you need to ensure tboth sliders are at the same level.

  3. If the device name change, you have to go to 1. all over again. - This Increase misconfiguration risk.
    Here we target only for the monitoring purpose, not the extra audio output (another ticket is for this!)

  4. There is a default settings in OBS for monitoring devices : Let's use it.
    image

Suggested implementations steps:
A : By default enable monitoring on all tracks & all audio source via the "Monitoring device" by default and switching it "off".
This would "pre-configure" monitoring in similar fashion than other similar tools (Vmix, Wirecast, etc).

B : Add a slider specifically to control the output to the "audio Monitoring device", level meter is irrelevant here, the Output level of each source/track you are monitoring is key, and this slider only control the sound level in your monitring device.
(See point C for the reason the meter is not useful for the monitoring device)

C : By default, the output level is the same as the source output level.
You are monitoring a set of sources/track. This is where the semantic in OP is important.

We are listening to a set of source/track to ensure they are outputin correctly. That being the "output" of a track or an extra audio device.
This simplify the UI and you only need to click the relevant icon to monitor the audio. (See "UI/UX section of this post)

D : Make the distinction between Monitoring & Extra Audio Output.

The use of term "Audio Monitoring" is confusing a bit, as adding external audio output are being used in number of ways and purposes. IMHO this should be re-defined for clarity unrelated to use-cases :

  • Monitoring : Used to validate the output level of a given source / track as it is set in the source level output.
  • External Audio output : Used to add an oudio output device to a source/track with its own level control.

(Yes extra audio could be used to "monitor" but this is adding a level of complexity as explain in reason 1. & 2. in intro.)

UI / UX considerations :
Challenges: Depending on screen-size and usage of the plugin this can be taking quite a lot of "space". Below are couple of recommendations for UI optimisation and UX.

  • Use icons over text (especially for monitoring on default device, simply use the headset icon), no need an extra full lsider for each time you are monitoring something. See point 1. 2. and A. B. C.
  • Add the settings cogwheel per track/source where we select extra output devices.
  • Add a "recycle" icon or else that will disable all monitoring on ALL track/sources.

OBS-Audio monitor

Usage example

  • When you need to monitor a track or source, simply click on the headset icon ont he audio Monitoring tab.
  • You can do the same whne you want to monitor a specific extra audio device output in particular.
  • You set your audio monitoring device once in the OBS Settings, or via the cogwheel under the moniroting slider.

Some mockup (these carry more changes request that only this one. There are other tickets for the UI/UX changes.

Question: Expected latency in contrast to standard OBS audio monitoring?

This is not a bug-reporting issue, but a question on some subtle details to get a better understanding what is happening for me: when I do regular OBS audio monitoring (via Advanced Audio Settings) I observe (in ManyCam or SplitCam) that my resulting audio stream is about 50-100ms before the video stream. When I switch to your awesome OBS Audio Monitor filter (which I really like because it can operate after some other audio filters while the regular OBS audio monitoring seems to operate before the filters) I observe that now the audio stream is about 100-150ms behind the video stream.

Those A/V-sync delays are always hard to measure correctly, of course. I've repeated it multiple times, but there are just too many involved parts to be sure. So, I'm better asking for some hints here before seeking further. I've even removed all other audio filters before OBS Audio Monitor. But it looks like there is a noticeable buffering in the audio stream happening when your OBS Audio Monitor is in use. I can compensate for this by delaying the video stream in ManyCam (the next app in my pipeline after OBS), of course. But I would like to know: independent of my particular (rather complex) scene setup: is a noticeable latency caused by OBS Audio Monitor also expected from your side and if yes, what amount of milliseconds do you expect on average? I just want to know whether I should stick with my video delaying (because it is just expected) or seek further because 100-150ms is too much to be caused by just OBS Audio Monitor alone. Do you have an opinion?

In my personal opinion that the use of a filter like OBS Audio Monitoring inherently has to cause some more latency for the resulting audio stream (in contrast to regular OBS audio monitoring), because OBS does a lot more things between the regular audio monitoring and the stage where the filters are applied. But 100-150ms IMHO is more than I would expect here, except your OBS Audio Monitor filter uses a rather large internal buffering...

Once a time when I adjust the volume of track it crashes. [Audio-monitor: 0.6.1]

Unhandled exception: c0000005
Date/Time: 2021-02-22, 12:28:53
Fault address: 7FF81954DD9C (c:\program files\obs-studio\obs-plugins\64bit\audio-monitor.dll)
libobs version: 26.1.1 (64-bit)
Windows version: 10.0 build 17763 (release: 1809; revision: 1790; 64-bit)
CPU: AMD Ryzen 5 3600 6-Core Processor

Thread 2C84 (Crashed)
Stack EIP Arg0 Arg1 Arg2 Arg3 Address
0000003CE3CFF370 00007FF81954DD9C 0000018021A19900 0000000000000001 0000003CE3CFF560 0000017FE4D5C300 audio-monitor.dll!audio_monitor_audio+0x1c
0000003CE3CFF460 00007FF81954ABF0 0000000000000002 0000000000000001 0000000000000000 0000017FE4D00550 audio-monitor.dll!AudioOutputControl::OBSOutputAudio+0xae0
0000003CE3CFF690 00007FFFFE51D5CD 0000001B9D93B980 0000000000000015 0000000002BE0400 00000AC98E4FC5A2 obs.dll!input_and_output+0x3ad
0000003CE3CFF910 00007FFFFE51CFF9 0000000000000015 0000017FE2A02A20 0000000000000000 0000000000000000 obs.dll!audio_thread+0xf9
0000003CE3CFF960 00007FF823CF5924 0000000000000000 0000017FE28F9080 0000000000000000 0000000000000000 w32-pthreads.dll!ptw32_threadStart+0x74
0000003CE3CFF9E0 00007FF832EB268A 0000000000000000 0000000000000000 0000000000000000 0000000000000000 ucrtbase.dll!0x7ff832eb268a
0000003CE3CFFA10 00007FF834307974 0000000000000000 0000000000000000 0000000000000000 0000000000000000 kernel32.dll!0x7ff834307974
0000003CE3CFFA40 00007FF8360FA2D1 0000000000000000 0000000000000000 0000000000000000 0000000000000000 ntdll.dll!0x7ff8360fa2d1

Output levels reset after OBS restart

After restarting OBS all of my outputs are reset to 100% (thought visually the fader is still latched to where it was last).

My fix has been to move the fader slightly and then back into place. I've only tested this on Windows and with VB-Audio virtual cables and my Mix-pre3

Delay default audio monitor output

I'm noticing a delay of a second from when I play song and the output is played in the audio monitor.

This is happening in two different Macs, is it happening to other people?

Screen Shot 2021-03-27 at 22 27 34

The track of the file itself goes first, and a second after the "track 1" plays.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.