MIDItoOBS icon indicating copy to clipboard operation
MIDItoOBS copied to clipboard

GUI interface

Open cpyarger opened this issue 4 years ago • 8 comments

This seems to be a great plugin, But configuration would be much easier with a GUI,

cpyarger avatar Jan 21 '20 21:01 cpyarger

I know, i've been doing some research on how i could accomplish this, but i'm not a frontend dev, so building a python gui would have to be done by someone else. But i'm thinking about/planning something that can do the same thing (even more) and has a GUI. But i have no ETA on that.

lebaston100 avatar Jan 21 '20 21:01 lebaston100

I am going to take a look into what needs to be done for this. It has been a long time since I have done any python programming though, so it will probably be slow going.

cpyarger avatar Jan 21 '20 21:01 cpyarger

I'm not expecting anything from anyone, but if someone volunteers for it i happily take the offer.

lebaston100 avatar Jan 22 '20 16:01 lebaston100

https://github.com/cpyarger/Midi2OBS-Configurator is what I have so far. I am having some issues.

cpyarger avatar Jan 22 '20 21:01 cpyarger

if you are able to look over it and make any changes you think will help that would be much appreciated. Currently, I have it set up so that it will detect midi values, Those get tossed into a table. only once, and are filtered by note or CC when listening (i was unable to figure out how to query for both existing notes and CCs without the filtering based on the dropdown. I do apologize for the lack of commenting in the code.

cpyarger avatar Jan 23 '20 08:01 cpyarger

It's starting to look like something. That's the point where i have zero knowledge. Have never used qt before. Also no apologizing for not commenting, i'm guilty here too. So somethings i see "missing" that MIDItoOBS can do is having multiple devices and macro support (or basically binding multiple actions onto a single midi input action). I guess you would have to write out some basic description on how everything should look and feel. Maybe having the list in the main windows but then having a popup window for editing with only the options that are needed for the action. A way to refresh all the lists that the scrpt pulls from obs(manual or automatic). These are just some ideas i got while looking at it.

lebaston100 avatar Jan 24 '20 19:01 lebaston100

Currently, I am leaving Multi-Device support hanging until I finish getting the interface done and have it working. with a single device. I decided to use the MIDO callback function for handling messages as they come in, unfortunately, that breaks multi-device support as the messages don't contain a device ID.

Macro support will be worked on after Multi-Device is working.

With my current iteration of the code, you can see where I am starting to head towards the software. I plan to integrate both halves of MidiToOBS into the GUI application. If a command does not exist in the application, it will be added. If it is not fully setup, for example, a fader connected to SetVolume without having a volume chosen, any incoming MIDI messages are ignored. If that line is fully setup you will see it controlling OBS.

Before multi-device is working, I plan to add a MIDI feedback option. I want to see my faders move when I adjust the volume in OBS, and want to see my buttons showing which scene is actually active.

I have moved away from making raw WebSocket calls and have started using https://github.com/Elektordi/obs-websocket-py Most of the work already exists there, and it already has the ability for me to register callback hooks for me to get started on feedback,

cpyarger avatar Feb 25 '20 12:02 cpyarger

Awesome. So Multi-device functionality is basically provided by creating a new instance of the DeviceHandler class for every controller and then binding it to the same callback, but handing over the device id on creation. But only the main.py does it like that, for the setup it's still the other way.

If you want you can make this a totally independent application that has nothing to do with this one. That way you are not limited by my version.

I might have mentioned this somewhere already but i would have device feedback implemented if i had the hardware to test with.

I on my part started building a new "Version" of MIDItoOBS from scratch in nodejs that can intregrate in a already existing gui platform. Keeping it vague because i don't have a timeframe for it and don't want anybody waiting for it. It won't make the old version obsolet but will rather be another system for more advanced users. For that i'm also using a wrapper.

lebaston100 avatar Feb 25 '20 13:02 lebaston100