MIDIControl - Control OBS, Soundboard, Twitch chat with MIDI Devices

Free MIDIControl - Control OBS, Soundboard, Twitch chat with MIDI Devices 2.0.1.0

Matias228

New Member
I somehow can't get my apc Mini to show up as a controller anymore...??? Fun thing being is it worked before I Upgraded the software to the latest version, and now it doesn't show up anymore... Whats even worse is that I tried uninstalling the Software and reinstall it, I downgraded to the Version it used to work before, but the same thing it doesn't accept/see the apc mini midi anymore. I can still select it as a device to which it should forward the midimessage to, but it doesn't read midi anymore.
I also deleted the whole Folder after uninstalling, maybe you save some settings somewhere else except in C:\Program Files (x86)\MIDIControl ?
 

Etuldan

Member
I somehow can't get my apc Mini to show up as a controller anymore...??? Fun thing being is it worked before I Upgraded the software to the latest version, and now it doesn't show up anymore... Whats even worse is that I tried uninstalling the Software and reinstall it, I downgraded to the Version it used to work before, but the same thing it doesn't accept/see the apc mini midi anymore. I can still select it as a device to which it should forward the midimessage to, but it doesn't read midi anymore.
I also deleted the whole Folder after uninstalling, maybe you save some settings somewhere else except in C:\Program Files (x86)\MIDIControl ?
All settings are in %Appdata%\MIDIControl (which is not in Program Files or install folder), [WindowsKey] + R, then paste %AppData%\MIDIControl
 
Can you upload here the crash info (not the debug.log file) ?

Annotation 2020-05-22 121028.jpg


See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.TypeLoadException: Could not load type 'OBSWebsocketDotNet.Types.OBSScene' from assembly 'obs-websocket-dotnet, Version=4.2.0.3, Culture=neutral, PublicKeyToken=null'.
at MidiControl.OBSControl.GetScenes()
at MidiControl.EntryGUI.InitControls()
at MidiControl.EntryGUI..ctor()
at MidiControl.MIDIControlGUI.Add_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4180.0 built by: NET48REL1LAST_B
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
MIDIControl
Assembly Version: 1.1.4.3
Win32 Version: 1.1.4.3
CodeBase: file:///C:/Program%20Files%20(x86)/MIDIControl/MidiControl.exe
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4001.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4150.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4180.0 built by: NET48REL1LAST_B
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Newtonsoft.Json
Assembly Version: 12.0.0.0
Win32 Version: 12.0.3.23909
CodeBase: file:///C:/Program%20Files%20(x86)/MIDIControl/Newtonsoft.Json.DLL
----------------------------------------
System.Numerics
Assembly Version: 4.0.0.0
Win32 Version: 4.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------
System.Runtime.Serialization
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4180.0 built by: NET48REL1LAST_B
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Serialization/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll
----------------------------------------
System.Data
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4121.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
NAudio
Assembly Version: 1.10.0.0
Win32 Version: 1.10.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/MIDIControl/NAudio.DLL
----------------------------------------
obs-websocket-dotnet
Assembly Version: 4.2.0.3
Win32 Version: 4.2.0.3
CodeBase: file:///C:/Program%20Files%20(x86)/MIDIControl/obs-websocket-dotnet.DLL
----------------------------------------
websocket-sharp
Assembly Version: 1.0.2.59611
Win32 Version: 1.0.2.59611
CodeBase: file:///C:/Program%20Files%20(x86)/MIDIControl/websocket-sharp.DLL
----------------------------------------
CheckComboBox
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/MIDIControl/CheckComboBox.DLL
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
 

Etuldan

Member
Try to remove xml in install folder (after installation)
Try also to install other .net redistributables, (but 4.7.2 should be OK)

I'm trying ot reproduce on another computer, but not so easy :/
 
Um OK this is weird but I just reinstalled the latest verbose versions over the top of my working installation, and it's not crashing now?? So it seems to be fine?

Just noticing that when a group is hidden, it also individually hides all of the individual layers containtd within that group, rather than just toggling the top group layer itself.

Annotation 2020-05-28 123256.jpg
 

Etuldan

Member
Um OK this is weird but I just reinstalled the latest verbose versions over the top of my working installation, and it's not crashing now?? So it seems to be fine?

Just noticing that when a group is hidden, it also individually hides all of the individual layers containtd within that group, rather than just toggling the top group layer itself.

View attachment 56778
Yay, glad it works !

Yes, that's how it work.
In OBS, if you manually hide/show the group, nothing will be done about sub-scenes. So MIDIControl iterates the subscenes to hide/show all of them.


About your 'initial' issue of MIDI event not working, does it works now ? If no, could you send me the debug.log file ? If yes, you can install the non-verbose version.
 
About your 'initial' issue of MIDI event not working, does it works now ? If no, could you send me the debug.log file ? If yes, you can install the non-verbose version.

OK I've narrowed down what the problem is with the midi note off events. It is detecting them, and if you create a note off event along with a note on event then it all works fine.

The only problem is that if you just send a note off event, you can't use the 'add' tool to detect it - it just ignores that a note event was sent. So you have to send a 'note on' event to get the 'add' screen to get the right settings for the note, then configure the note off action you want.

In a normal midi instrument you wouldn't be able to create a note off event without having first created a note on (obviously) but when you're using midi as cues you can do whatevr you want - so it would be good if it supported a 'midi off' event as a standalone thing, just the same as midi on.
 

Etuldan

Member
Well, indeed, MIDIControl should not be able to declare a noteOff event, as it's already defined in the "On Key Release" of the related NoteOn event.

To be clear :
When you "add" a new key, MIDIControl will detect only the NoteOn, in the "add" screen, you define the actions when this Note is ON, then below, when this Note is OFF (by design)
And it should works.


In your case, just 'emulate' the NoteON event related to the NoteOFF you wanna send, only for the "Add" screen purpose. And define only the actions in the "On Key Release" section.

I made the choice of linking NoteON and NoteOFF (and catching only the ON in the "add" screen), for an easier managment of the SoundBoard ("Stop Sound when Released" will be related to the sound used on the NoteOn Event). So yes, right know, it's impossible to play a sound on a NoteOFF event, by design. But it should be OK to do whatever you want, related to OBS.
 
Fair enough. As I said, it's definitely an unusual scenario. But the way you've designed it is actually really good in terms of reducing the amount of modules one needs to create (ie. just one can be used for both hiding and showing a layer, without having to create separate receiving events as I have done.

Number one on my wish list is still being able to set the current transition mode, as you can with Deckboard:

Annotation 2020-05-29 123023.jpg
 
About transition, do you want MIDIControl able to define and trigger a transition, or only define it (Name and Duration) ?

I think as above with Deckboard makes sense - it can pull the existing transitions in the scene, and set them as a trigger (though it also asks for the duration.

Have you installed Deckboard to see how it works? It has a really nice implementation of Websocket

 

Tixi

New Member
Hello Etuldan,

First of all thank you so much for all your time and effort in this. This seems incredible !

However I can't use your tool :( I was looking for something that allow me to use my Korg nanokontrol studio on OBS. The faders / mute button controlling audio sources. But I'm facing some issues :
- Apparently every button seems to have the same note on my gear (driver problem? different values on the same note ?) so if one of them is assigned, they'll all do the same effect.
- I can't use the same button to switch beetween mute and unmute / show and hide.
- I can't associate the default audio sources in the software (but i think this is due to an older version of OBS when it created by default 1 in and 1 out in the audio section, but not anymore).
- The values of the fader can't match with the virtual fader in OBS.

I'm aware I want to use kinda advance and circumstancial options but if I can help you in any possible way to upgrade your soft, just let me know.
PS : Sorry in advance for my english... I'm just a french baguette ^^
 

Etuldan

Member
Hello Etuldan,

First of all thank you so much for all your time and effort in this. This seems incredible !

However I can't use your tool :( I was looking for something that allow me to use my Korg nanokontrol studio on OBS. The faders / mute button controlling audio sources. But I'm facing some issues :
- Apparently every button seems to have the same note on my gear (driver problem? different values on the same note ?) so if one of them is assigned, they'll all do the same effect.
- I can't use the same button to switch beetween mute and unmute / show and hide.
- I can't associate the default audio sources in the software (but i think this is due to an older version of OBS when it created by default 1 in and 1 out in the audio section, but not anymore).
- The values of the fader can't match with the virtual fader in OBS.

I'm aware I want to use kinda advance and circumstancial options but if I can help you in any possible way to upgrade your soft, just let me know.
PS : Sorry in advance for my english... I'm just a french baguette ^^
Bonjour ! (oui, moi aussi du coup, je vais écrire la suite en anglais par contre, pour que ca puisse servir a tout le monde)

1rst : I'll made a verbose version for you, to help debugging it.
2nd : Well, didn't though about this usecase. Definitly a must have, I'll see for next versions. With my virtual devices, I setup the key as on/off toggle, so I can use the "on release". But on a hardware midi-keyboard, there is no such thing.
3rd : Upgrade OBS and OBS-Websocket plugin and tell me if it fix your issue.
4th : ATM, no fader/volume control is implemented in MIDIControl. Only 'binary' keys.
 

Etuldan

Member
I think as above with Deckboard makes sense - it can pull the existing transitions in the scene, and set them as a trigger (though it also asks for the duration.

Have you installed Deckboard to see how it works? It has a really nice implementation of Websocket

Transition should work with new version !
And if you wanna, on a single key, change transition setting and switch scene, it should also work.
 
Transition should work with new version !
And if you wanna, on a single key, change transition setting and switch scene, it should also work.

This is amazing!!!!

OK two things - it would be really useful to be able to rename the modules after initially adding them. Now it's greyed out, and I don't know how many times I've set one up, then had to delete it because I forgot to add a name.

Here's a sliglhtly more extravagant idea - great idea to have the Transition setting send BEFORE the scene change, but now that makes me wonder how hard it would be to make the element order user changeable? So you could set up a string of the triggers, and order them as you want?

So for example you could set the triggers to be
- Transition Change
- Scene Change
- Transition Change
 
OK I've found a bug. I thought this was a thing, but it's only been confirmed now that I've created a ton of midi events - when loading everything up, none of the triggers work the first time. So each one (including both key up and and down variations) have to be run once each, so as they will work the next time.

This hasn't been an issue when I was originally just using it to hide and show a single layer, but now that I can create events for different scenes and transitions and I've got loads, it's not really practical to do a practice run on them all
 
Top