I/O settings don't save in a usable way
Posted: Fri Nov 08, 2019 6:53 pm
I want to discuss an issue I have with the way input/output settings are saved (both in .qxw files and in the Windows registry). I mostly output over ArtNet or E1.31. However, I frequently switch networks, network interfaces, and machines. I'll switch from wired to wireless or vice versa, and also switch between my programming laptop to show machines that will run the project. I'll also sometimes share my .qxw workspace file with coworkers who will use it and edit it on their laptops. The problem is that QLC+ saves the selected input and output based on the "line number". These different machines may have different number of network interfaces, so what is the wireless card on one machine might show up as some disconnected virtual VPN network adapter on another machine. This means that I basically have to adjust the I/O tab settings every time I open the workspace. What's worse is that if I open the workspace on a machine that has fewer interfaces than the one that was selected the machine that previously saved the file, the program will lock up for 10 seconds before opening the file. I'm not sure what the solution to this is. Saving the selected line by interface name or IP instead of enumeration order might help, at least if I'm on the same machine and the interfaces just enumerate in a different order (or one was added) or at least it won't select the wrong interface if it can't find the right one, but obviously this doesn't really help that much since it still won't output correctly if my IP changes or I move to another machine (unless it is by interface name and they're something generic that might be the same on both machines like "Ethernet 1" or something). Perhaps the I/O settings should only be stored per-machine (and also per-workspace filepath) like in the register or the user data directory or something. I'd have to set it up any time I copy/rename the file or move to a new machine and it wouldn't help when I switch between wired and wi-fi, but at least we could pass the file back and forth and that wouldn't mess things up.
One simple thing that might help a little, is only showing connected interface. My machine shows 8 interfaces in QLC right now, but in other DMX software I only see 2 or 3 because they hide all the ones that are disconnected VPN and bluetooth interfaces, wired when I'm on wi-fi and vice versa, etc. It seems like this would at least help a little, so I submitted a pull request for a patch that does this.
The biggest pain-point of this whole thing isn't having to move the check box on the I/O tab all the time, but adjusting the output plugin settings. Where I'm using QLC, we have multiple shows all on the same network that all have their own separate ArtNet/E1.31 DMX interfaces with their own universe. Before we started using QLC, all of them were set to universe 1 because our previous software was unicasting to each device so there was no conflict. When we started QLC, it was broadcasting and the separate shows started affecting each other. Oops. We switched them to use different universes, but now we have to remember what universe number each uses and there are extra steps to configure the plugin every time I need to select another interface. Also, we still can't use universe 1 for any of them because QLC defaults to universe 1 when you enable the output and will start sending and possibly mess things up before you're able to click the configure plugin button and change it. This is especially true because when you start a new file it has remembered the previous plugin used via the registry, but not any of the settings.
As a solution for these things, I have a couple ideas, although maybe someone else has some better ones. I'd like no inputs/outputs to be checked/enabled by default in a new project, I don't think. Maybe even when loading a saved file no output should be enabled automatically and I should have to enable it via the check boxes or a button or something. Maybe it would be ok for it to enable itself automatically in operate mode. Or maybe like I said above, the enabled plugin/line shouldn't be stored in the file but if it is cached on my machine then perhaps it would be ok for it to enable automatically. To make this work, I think the plugin settings should not be based on which line is selected. Each QLC universe should save input and output settings per-plugin (if edited from their defaults) regardless of whether that plugin is enabled or not. You don't really need different settings per-line since you can't have more than one selected (per column) right now anyway. This would allow you to set the ArtNet or E1.31 settings before enabling the output so you always transmit on the correct address/universe and regardless of which interface you select. These settings should save with the file so that the settings will be right for anyone else that uses this file even if they don't have the same set of interfaces I do. For example, I could set the ArtNet broadcast or unicast address and universe number and also the E1.31 universe number without enabling either. Then no matter what computer I use the file on, all I have to do is pick either an ArtNet or E1.31 interface to enable and as soon as I just check the box it will output to the correct universe. How does that sound?
One simple thing that might help a little, is only showing connected interface. My machine shows 8 interfaces in QLC right now, but in other DMX software I only see 2 or 3 because they hide all the ones that are disconnected VPN and bluetooth interfaces, wired when I'm on wi-fi and vice versa, etc. It seems like this would at least help a little, so I submitted a pull request for a patch that does this.
The biggest pain-point of this whole thing isn't having to move the check box on the I/O tab all the time, but adjusting the output plugin settings. Where I'm using QLC, we have multiple shows all on the same network that all have their own separate ArtNet/E1.31 DMX interfaces with their own universe. Before we started using QLC, all of them were set to universe 1 because our previous software was unicasting to each device so there was no conflict. When we started QLC, it was broadcasting and the separate shows started affecting each other. Oops. We switched them to use different universes, but now we have to remember what universe number each uses and there are extra steps to configure the plugin every time I need to select another interface. Also, we still can't use universe 1 for any of them because QLC defaults to universe 1 when you enable the output and will start sending and possibly mess things up before you're able to click the configure plugin button and change it. This is especially true because when you start a new file it has remembered the previous plugin used via the registry, but not any of the settings.
As a solution for these things, I have a couple ideas, although maybe someone else has some better ones. I'd like no inputs/outputs to be checked/enabled by default in a new project, I don't think. Maybe even when loading a saved file no output should be enabled automatically and I should have to enable it via the check boxes or a button or something. Maybe it would be ok for it to enable itself automatically in operate mode. Or maybe like I said above, the enabled plugin/line shouldn't be stored in the file but if it is cached on my machine then perhaps it would be ok for it to enable automatically. To make this work, I think the plugin settings should not be based on which line is selected. Each QLC universe should save input and output settings per-plugin (if edited from their defaults) regardless of whether that plugin is enabled or not. You don't really need different settings per-line since you can't have more than one selected (per column) right now anyway. This would allow you to set the ArtNet or E1.31 settings before enabling the output so you always transmit on the correct address/universe and regardless of which interface you select. These settings should save with the file so that the settings will be right for anyone else that uses this file even if they don't have the same set of interfaces I do. For example, I could set the ArtNet broadcast or unicast address and universe number and also the E1.31 universe number without enabling either. Then no matter what computer I use the file on, all I have to do is pick either an ArtNet or E1.31 interface to enable and as soon as I just check the box it will output to the correct universe. How does that sound?