distinct hide/show hotkeys across separate instances of same source are rebound to match/duplicate the first instance when OBS is reloaded

d0ped0g

New Member
Hi,

Long story short: if you set up hotkeys to show/hide individual source instances within a scene, if you have multiple instances of the same source, yet assign distinct hotkeys - it will work until you restart OBS studio. But as soon as you restart OBS studio, it will double-up the hotkeys such that the different instances no longer have separate distinct hotkeys, but the second/third/forth/etc instances will instead have their older distinct hotkeys removed, and instead replaced with new hotkeys matching that of the first instance.

Not sure if I explained that very well, so here's a before and after of a scene I have. (please ignore the fact that there is also an "old" version of the scene in these examples, in case that is speculated as a possible source of the error - as none of my other 44 presets/scenes have an "old" version, and share exactly the same problem as this one)

BEFORE:
obsstudio-beforerestart.png


AFTER:
obsstudio-afterrestart.png


In the above menus, the sources appear in reverse order as they appear on the source list within OBS studio: (doesn't really matter but thought it would be worth noting in case there's any confusion as to which distinct hotkey is being erased/replaced by it's namesake's one)
obs-sourcelist.png


As you can see, the hotkeys to hide/show the second instances (i.e. the lowest in the third pic) of the "Preset 01 - FULLSCREEN" and "Preset 01 - ZOOM" scenes within the scene I'm in "Preset 01: Montreal Assembly 856 for Zellersasn (G1:1)" has changed from "U" and "I" to "P" and "[" respectively. (matching the hotkeys assigned to the first instances)

Likewise the same issue is happening within the "MASTER SCENE - WEBCAMS + LIGHTNING WAVE" scene, which all the preset scenes use. Here is a before image of the hotkey menu for this scene:
masterscene-before.png


And after I restart OBS:
masterscene-after.png


As you can see, after quitting out of OBS and loading it back up again, the second (remembering that the above list is in reverse order) instances of Webcam 1 and Webcam 2 (both of which aren't "scene" sources, but "video capture device" sources - both Logitech c920s) have had their unique/distinct hide/show scene hotkeys replaced by duplicate hotkeys matching the first instance of these sources ('9' becoming '-' and '0' becoming '='), and as a result are no longer unique/distinct from one-another.

Is this a bug? Or a known issue? Is it being worked on? Will it be fixed in the future? And if so, when might that be?

The problem I have is that I am already juggling roughly 200-300+ scenes to do what I'm trying to do in OBS, and if I can't have unique hide/show hotkeys for different scenes, I'll have to duplicate all the different "FULLSCREEN" and "ZOOM" scenes in order to facilitate this. I'd really really rather not have to create 2 new scenes for every "Master Preset Scene" I have (i.e. the scene that has all the subscenes for a given preset, that is typically being switched between) as doing so would create a lot more workload every time I have to make even slight changes.

In order to contextualize what I'm doing in OBS:

I'm trying to set my OBS up to do music streams with a relatively complicated set of OBS scenes - 200-300+ scenes in total. (most of which are embedded in the main scenes I'm switching between, which consist of 45 "presets") The number of presets is likely to expand and every preset has around 5-6 scenes associated with it for now. (including its main scene)

I have a camera on a birds-eye rig looking down on a table of music gear (mostly guitar effects pedals). All these devices are permanently powered on, but I am using a MIDI foot controller to control a "loop switcher" which chooses which effects are engaged/disengaged. (by cutting the rest out of the signal chain and only allowing the "loops" which contain the devices I want to use to be "open", the rest of which are closed/bypassed)

I have also got this same midi controller hooked up to the computer, and based on the messages it receives, will automatically switch to a scene displaying on the livestream which particular equipment is engaged. (I am doing this via setting each preset's unique midi message in MIDIOX to trigger a unique keypush, which is set as a hotkey to switch between scenes in OBS)

I am displaying the relevant preset information by using a fullscreened image of the entire table-top with the unused sections greyed out (so requires a custom scene for different greyed out sections), a zoomed view of the active equipment (i.e. using the same birds eye cam footage, but only a section of it - the active section - zoomed in to fullscreen this section), and a custom text panel displaying this information. (as well as an audio visualizer underneath)

So currently I have 45 preset scenes (a number that will grow in the future), which generally is displayed as a 2x2 grid of 16:9 panels (so, each are 960x540, on a 1080p canvas), each panel displaying something different, depending on what is being shown/hidden.

Here's an example of the footage of the "Preset 01" scene, in case it's hard to visualize:
(for some reason it wont let me embed this image, so here's a link: https://imgur.com/a/n89bY01)

Each of these "preset scenes" also have a distinct individual "entire table" scene associated with it (e.g. "Preset 01 - FULLSCREEN"), and a distinct individual "zoomed view" scene associated with it (e.g. "Preset 01 - ZOOM"), each displaying the particular equipment associated with that preset. (in this case, "Preset 01")

I also have a "Master scene" containing all of the scenes/sources that aren't unique to a given preset (i.e. that doesn't change based on what the preset is), which includes 2 webcams (a face/room cam, and one pointed at a pedalboard I have on the ground, which contains my midi controllers and other things), a scene that displays social media URLs + a visualizer, and 3 separate views of a mixer/LFO display device (seen in the bottom-right corner of above image, in imgur link) that is more-or-less ubiquitously relevant between all presets. (as the LFO displays expression pedal readings, and the mixer controls the level of a parallel chain)

So, basically, this setup allows me to turn on/off different sections in the grid, and most importantly while staying within the same scene that gets punched in via the ground controller. This mainly concerns the bottom right corner wherein I am hiding/showing "Webcam 2", the 3 "Mixer/LFO" instances, the social media + audio viz, and the relevant "info display" + viz scene (matching whatever preset it is and displaying this info). I also want to be able to bring up fullscreened images of the "birds eye" view, the "zoom" view (showing a zoomed image of the device engaged in whatever preset i'm on), and both webcams - WITHOUT it forgetting what preset I'm on. (thus, as I said earlier, I want to do this while staying within the same "preset scene", rather than switch to different scenes with fullscreened webcams or whatever). So, if I just want to focus on the settings on a particular device, I can unhide the hidden fullscreened source within the scene, and then hide it again to go back to where I came from. Likewise if I want to just have the face/room cam, or the ground-pedalboard cam.

This is why I have multiple instances of the same source within the same scene. One is a quarter-size version. One is a full-size version. But I want to be able to turn either of these off individually with separate/distinct/unique hotkeys for either. (I'm keeping these hotkeys shared between scenes however, but not between namesake sources within these scenes - such that if I turn something on/off, it will turn on/off within all the different scenes where that hotkey has been applied, such that if I switch between presets it will retain knowledge of what, if anything, has been fullscreened, and what is being shown within the grid)

I had considered going an alternate route and instead of using hide/show to manually trigger different changes within the same preset scene, to have the "source switcher" plugin to do this automatically. This would allow me to put things on a slideshow such that it would switch between sources on the bottom right grid section automatically, and also allow me to have a non-static "zoomed view" in instances where there are multiple devices that need to be displayed, in instances where there are multiple effects on a preset. (so I can cycle through separate fully-zoomed images of them rather than cram a bunch of partially-zoomed in images into the same panel)

While I want to move towards doing that in the future (there's a bug with transitions in that plugin that doesn't make it look particularly slick atm though) I would rather at least have the option to have manual control of whats on screen (while retaining memory of what preset it's on, by not leaving that particular preset scene) via unhiding/hiding sources.

So does anybody know the status of this issue? Is it likely to be resolved? Should I go ahead and make duplicate scenes for all of the things I want unique hotkeys for?

As mentioned, I'd rather not because I have hundreds of scenes already. And would require more work every time I make even a small change to make sure everything is set up correctly.

So it'd be nice to know if this bug (at least, what I presume is a bug) has been raised - and the likelihood it'll get fixed in the near future.
 

d0ped0g

New Member
bumping this as this post got approved quite late and thus buried on page 3 before it could be seen

Anyone know anything about this issue?
 

d0ped0g

New Member
To add to this, I think the issue is with how OBS saves scene collections.

I tried doing an export of the scene file and looking at the relevant information in the text.

Here's a relevant excerpt from the particular scene in question. I did this import when the hotkeys for the second instances of "Preset 01 - FULLSCREEN" and "Preset 01 - ZOOM" were "I" and "U" respectively, like the "before reset" example in the original post above.

Code:
            "hotkeys": {
                "OBSBasic.SelectScene": [],
                "libobs.hide_scene_item.MASTER SCENE - WEBCAMS + LIGHTNING WAVE": [
                    {
                        "key": "OBS_KEY_O"
                    }
                ],
                "libobs.hide_scene_item.Preset 01 - FULLSCREEN": [
                    {
                        "key": "OBS_KEY_BRACKETLEFT"
                    }
                ],
                "libobs.hide_scene_item.Preset 01 - TEXT+VISUALIZER": [
                    {
                        "key": "OBS_KEY_Y"
                    }
                ],
                "libobs.hide_scene_item.Preset 01 - ZOOM": [
                    {
                        "key": "OBS_KEY_P"
                    }
                ],
                "libobs.show_scene_item.MASTER SCENE - WEBCAMS + LIGHTNING WAVE": [
                    {
                        "key": "OBS_KEY_O"
                    }
                ],
                "libobs.show_scene_item.Preset 01 - FULLSCREEN": [
                    {
                        "key": "OBS_KEY_BRACKETLEFT"
                    }
                ],
                "libobs.show_scene_item.Preset 01 - TEXT+VISUALIZER": [
                    {
                        "key": "OBS_KEY_Y"
                    }
                ],
                "libobs.show_scene_item.Preset 01 - ZOOM": [
                    {
                        "key": "OBS_KEY_P"
                    }
                ]
            },
            "id": "scene",
            "mixers": 0,
            "monitoring_type": 0,
            "muted": false,
            "name": "Preset 01: Montreal Assembly 856 for Zellersasn (G1:1)",

I notice that these hide/show hotkeys are saved based on the title of the Source, rather than assigning unique keys (or whatever else might separate these) to separate instances.

As mentioned, assigning unique hotkeys to separate instances appears to work for as long as OBS remains open. However, when it is reset it reverts to duplicates across the different instances of the same source. I assume that, when OBS is closed and reopened, it loads a file similar to this one to retain/remember settings. As you can see from the code above, it saves the hotkeys based on the title of the source, and thus doesn't save the separate instances of said source, and only goes through the list of different source titles.

Is there any plan to change this saving of settings such that it will save hotkeys for every distinct instance of every source? Such that unique hotkeys between them are possible?

Or for simplicity's sake, or the sake of adhering to a specific design philosophy, will it remain as is? (hotkeys only being saved in regards to the name of the source, rather than expanding to different instances of the same source)
 
Top