Resource icon

obs-midi-mg 3.0.3

dj divz

New Member
thanks for the info. I still could not find amy type of procedure on which steps yo select to make it work. I'm experimenting but not getting anywhere
 

dj divz

New Member
is it possible to make the plugin more simplify like the obs-midi 0.9.3 ALPHA - 3.66. it's just much easier to understand, the BETA plugin I'm lost on how to setup my controller.. Binding?
 

josiealexdaisy

New Member
When I am creating an action for custom filter settings, how do I determine the filer setting I want assigned? All I can choose is the source and filter, but nothing about which value in the filter.
 

nhielost

Member
nhielost updated obs-midi-mg with a new update entry:

obs-midi-mg v3.0.0 Beta 2

obs-midi-mg v3.0.0 Beta 2 is now available.​

Here are some refreshments to the 3.0.0 beta. Please review the old changes as well as these changes, and as always leave any questions, suggestions, or issues you may have in the OBS forum.

Additions:​

  • More UI navigation and structure changes!
    • The UI has been revamped again to decrease complicated UI movement...

Read the rest of this update entry...
 

josiealexdaisy

New Member
Amazing update! So much more convenient and intuitive.

I'm still have issues targeting which setting in the custom filter settings I want to map. It could be user error, but nothing is popping up prompting me to select a setting. I am on Macos and Obs Midi 3.0 Beta 2.
 

Attachments

  • Screenshot 2024-01-17 at 2.04.05 PM.png
    Screenshot 2024-01-17 at 2.04.05 PM.png
    19.6 KB · Views: 34

josiealexdaisy

New Member
Sorry to bug, normally wouldn't do this but I have a performance using OBS next week. Can any one tell me if there is something I should be doing differently?
 

tomwho

New Member
I'm trying to make a SmartPad on my Rodecaster Pro II toggle a video source in a scene on and off. I have set the binding in the midi plugin to toggle the video source, and on the Rodecaster I set the button to Latching so that when I press the button it lights up, and then when I press it again the light goes out. I want that button to toggle the video source on when pressed, then off again when pressed again. But it won't work. See the screen caps for settings details.

The button will only work if I set the State to "Show" instead of "Toggle", but then I have no way of toggling it off unless I use another button to turn it off, but, I was hoping to be able to toggle this video source on and off with the same SmartPad button. Is there a way I can do this? Thanks!
 

Attachments

  • Screenshot 2024-01-19 at 4.56.05 PM.png
    Screenshot 2024-01-19 at 4.56.05 PM.png
    102.1 KB · Views: 36
  • Screenshot 2024-01-19 at 4.56.19 PM.png
    Screenshot 2024-01-19 at 4.56.19 PM.png
    209.1 KB · Views: 30

redred

New Member
OK installed and opened and I am greeted by Bindings, Devices, Messages, Actions and Preferences.
I want to bind a key on my arturia key step to transition to a certain scene in obs.
I go to devices and my arturia is there, good good good.
I go to bindings and add a new one, select the device (only one).
then there's "Messages". Why would I want to send anyone a message? is it an e-mail? is it sms? message in chat on twitch?
then I go to add an action. I can choose from 3 buttons. an = button. a "MIDI" button and an "adjust?" button. first one has a digit value, second 2 digit value, third also 2 numbers but in a different layout.
What do any of these mean? I just wanna bind a button to something in OBS. Does one need to finish sound engineering for that?
Is there a tutorial for this anywhere that's not from 4 years ago with old interface?
 

Photochopped

New Member
I'm trying to make a SmartPad on my Rodecaster Pro II toggle a video source in a scene on and off. I have set the binding in the midi plugin to toggle the video source, and on the Rodecaster I set the button to Latching so that when I press the button it lights up, and then when I press it again the light goes out. I want that button to toggle the video source on when pressed, then off again when pressed again. But it won't work. See the screen caps for settings details.

The button will only work if I set the State to "Show" instead of "Toggle", but then I have no way of toggling it off unless I use another button to turn it off, but, I was hoping to be able to toggle this video source on and off with the same SmartPad button. Is there a way I can do this? Thanks!

In case you were still having issues with this, set up the pad on your Rodecaster like this (use Momentary, not latching):
rodecentral.png


And set up the midi in the OSB plugin like this:
OBS_MIDI.png


Let the mapping in the plugin handle the toggling of the camera.
 

lookeypl

New Member
OK installed and opened and I am greeted by Bindings, Devices, Messages, Actions and Preferences.
I want to bind a key on my arturia key step to transition to a certain scene in obs.
I go to devices and my arturia is there, good good good.
I go to bindings and add a new one, select the device (only one).
then there's "Messages". Why would I want to send anyone a message? is it an e-mail? is it sms? message in chat on twitch?
then I go to add an action. I can choose from 3 buttons. an = button. a "MIDI" button and an "adjust?" button. first one has a digit value, second 2 digit value, third also 2 numbers but in a different layout.
What do any of these mean? I just wanna bind a button to something in OBS. Does one need to finish sound engineering for that?
Is there a tutorial for this anywhere that's not from 4 years ago with old interface?
It is confusing but it unfortunately is the terminology that is used around the MIDI standard.

A "message" is an easier way to say "MIDI message". Think of it as a single chunk of communication between your device and your PC - for example you push a button on your MIDI controller and it sends a MIDI message to your PC.

We differentiate between Input and Output MIDI messages. Input is as described above - message sent from your device to your PC as a result of a button press, or a slider being changed, or a potentiometer being rotated. Every single interaction with your MIDI device like that produces a message. Output, on the other hand, is sent from your PC to your device. Something happens on your PC (as an example, you switch a scene in OBS) and that will send a message to your MIDI device to make it react in some way.

As a quick example of both of these: I pick a button on my Akai APC Mini device, and I want it to mute my microphone audio source in OBS. The button on the APC Mini also has a light in it, so I also want the button to light up to tell me that my mic is muted and to turn the light off when it is unmuted. In obs-midi-mg it would look as three separate messages bindings:
- Input message from my button to trigger "Toggle Source Mute" action in OBS
- Output message from my Mic Audio Source being muted in OBS to light up the button light on APC Mini
- Output message from my Mic Audio Source being UNmuted in OBS to turn off the button light on APC Mini

As for obs-midi-mg technicalities and what each action means, the difference between =, MIDI and "Adjust" - all of these are available in obs-midi-mg docs: https://github.com/nhielost/obs-midi-mg/blob/master/docs/operations.md

Last but not least - because there's as many types, models and makes of MIDI devices as you can possibly imagine, each of them will have a different way of addressing messages (those are the "Channel" and "Note #" on the Message area). For that, neither me, nor obs-midi-mg devs or anyone here can help you. You have to find specs for your MIDI device, read what they mean, how the buttons are addressed and direct obs-midi-mg accordingly. For my APC Mini I found this diagram: https://www.bome.com/wp-content/uploads/cma_attachments/1494878547803_APC-Mini.png and used it to "program" obs-midi-mg and APC Mini according to my preferences. Also remember that "Listen Once..." button is there to help you figure out at least the Input message part easily.

Good luck!
 

fundamental

New Member
Totally excited about this:
"Media Sources time actions will now update based on the length of the source being played"

I'm gonna check it out right now!!!! :)
 

fundamental

New Member
Returning to comment on this tweak:
"Media Sources time actions will now update based on the length of the source being played"
It does update and this is awesome! I did notice that for some reason, the max value doesn't correspond to the end time of the video but more like within maybe 10% (???) of the end. No matter, it overcomes the issued of scrubbing past the end of the video which is a really nice tweak. Love to see how the developer is improving this utility!
 

fundamental

New Member
Returning once more to the topic of the tweak:
"Media Sources time actions will now update based on the length of the source being played"
This does seem to be working correctly for most videos. I think maybe it's not a bug but maybe has to do with encoding or key frames or something like that.

Anyway, huge improvement!!!!!
 

Newfiekanata

New Member
Using a diy Arduino controller. Misterdeck with the FkeysMIDI.ino if anyone is familiar. Link https://www.printables.com/model/134529-misterdeck. I can see my sliders changing the values in the setup page but nothing is changing in obs. Anyone able to help? I can post screenshots if needed just let me know! Thanks for the work, I appreciate it immensely. User error is my guess, typical lol.
 

lcalder

Member
I'm on a Mac M2 ARM. I tried the v3.0.0 beta 2 and OBS just crashes upon launch. I tried deleting the json file, but it still crashes instantly.

I'm including the Problem Detail and System Configuration issued for the Apple report and you can see the obs-midi-mg appearing just at the top of the log. I'm not sure how to read this, but maybe it is helpful for you. I've attached the full crash log as well.
-------------------------------------
Translated Report (Full Report Below)
-------------------------------------

Process: OBS [68822]
Path: /Applications/OBS.app/Contents/MacOS/OBS
Identifier: com.obsproject.obs-studio
Version: 30.1.0 (8011269129)
Code Type: ARM-64 (Native)
Parent Process: launchd [1]
User ID: 501

Date/Time: 2024-02-27 00:11:16.3890 -0800
OS Version: macOS 14.3.1 (23D60)
Report Version: 12
Anonymous UUID: 64846405-422C-478B-7A2F-3964EE521069

Sleep/Wake UUID: 9D9CB0AA-2C6F-4AF0-A7F9-504B7F760D47

Time Awake Since Boot: 470000 seconds
Time Since Wake: 26330 seconds

System Integrity Protection: enabled

Crashed Thread: 0 Dispatch queue: com.apple.main-thread

Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000
Exception Codes: 0x0000000000000001, 0x0000000000000000

Termination Reason: Namespace SIGNAL, Code 11 Segmentation fault: 11
Terminating Process: exc handler [68822]

VM Region Info: 0 is not in any region. Bytes before following region: 4344758272
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
UNUSED SPACE AT START
--->
__TEXT 102f7c000-103340000 [ 3856K] r-x/r-x SM=COW ...nts/MacOS/OBS

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 CoreFoundation 0x184155438 CF_IS_OBJC + 24
1 CoreFoundation 0x18400da10 CFStringGetCString + 84
2 obs-midi-mg 0x131632f3c libremidi::(anonymous namespace)::get_string_property(unsigned int, __CFString const*) + 84 (helpers.hpp:32)
3 obs-midi-mg 0x131632da8 std::__1::optional<std::__1::conditional<false, libremidi::input_port, libremidi::output_port>::type> libremidi::observer_core::to_port_info<false>(unsigned int) const + 164 (observer.hpp:84)
4 obs-midi-mg 0x1316327bc libremidi::observer_core::get_output_ports() const + 136 (observer.hpp:111)
5 obs-midi-mg 0x131631fec libremidi::observer_core::observer_core(libremidi::observer_configuration&&, libremidi::coremidi_observer_configuration&&) + 620 (observer.hpp:57)
6 obs-midi-mg 0x131631ccc libremidi::observer_core::observer_core(libremidi::observer_configuration&&, libremidi::coremidi_observer_configuration&&) + 12 (observer.hpp:25) [inlined]
7 obs-midi-mg 0x131631ccc std::__1::__unique_if<libremidi::observer_core>::__unique_single std::__1::make_unique[abi:v15006]<libremidi::observer_core, libremidi::observer_configuration, libremidi::coremidi_observer_configuration>(libremidi::observer_configuration&&, libremidi::coremidi_observer_configuration&&) + 24 (unique_ptr.h:714) [inlined]
8 obs-midi-mg 0x131631ccc std::__1::unique_ptr<libremidi::observer_api, std::__1::default_delete<libremidi::observer_api>> libremidi::make<libremidi::observer_core, libremidi::coremidi_observer_configuration>(libremidi::observer_configuration&&, libremidi::coremidi_observer_configuration&&) + 24 (observer.hpp:24) [inlined]
9 obs-midi-mg 0x131631ccc libremidi::observer_configuration auto libremidi::make_observer<libremidi::observer_configuration>(libremidi::observer_configuration, std::__1::any)::'lambda'<typename $T>(std::__1&)::operator()<libremidi::core_backend const>('lambda'<typename $T>(std::__1&)) + 84 (observer.cpp:16) [inlined]
10 obs-midi-mg 0x131631ccc libremidi::observer_configuration auto libremidi::make_observer<libremidi::observer_configuration>(libremidi::observer_configuration, std::__1::any)::'lambda'(auto&&...)::operator()<libremidi::core_backend const&, libremidi::dummy_backend const&>('lambda'(auto&&...)) const + 104 (observer.cpp:21)
11 obs-midi-mg 0x131631608 decltype(std::declval<std::__1::any>()(std::declval<libremidi::core_backend const&>(), std::declval<libremidi::dummy_backend const&>())) std::__1::__invoke[abi:v15006]<auto libremidi::make_observer<libremidi::observer_configuration>(libremidi::observer_configuration, std::__1::any)::'lambda'(auto&&...), libremidi::core_backend const&, libremidi::dummy_backend const&>(std::__1::any&&, decltype(std::declval<std::__1::any>()(std::declval<libremidi::core_backend const&>(), std::declval<libremidi::dummy_backend const&>()))&&...) + 16 (invoke.h:394) [inlined]
12 obs-midi-mg 0x131631608 decltype(auto) std::__1::__apply_tuple_impl[abi:v15006]<auto libremidi::make_observer<libremidi::observer_configuration>(libremidi::observer_configuration, std::__1::any)::'lambda'(auto&&...), std::__1::tuple<libremidi::core_backend, libremidi::dummy_backend> const&, 0ul, 1ul>(std::__1::any&&, std::__1::tuple<libremidi::core_backend, libremidi::dummy_backend> const&, std::__1::__tuple_indices<0ul, 1ul>) + 16 (tuple:1789) [inlined]
13 obs-midi-mg 0x131631608 decltype(auto) std::__1::apply[abi:v15006]<auto libremidi::make_observer<libremidi::observer_configuration>(libremidi::observer_configuration, std::__1::any)::'lambda'(auto&&...), std::__1::tuple<libremidi::core_backend, libremidi::dummy_backend> const&>(std::__1::any&&, std::__1::tuple<libremidi::core_backend, libremidi::dummy_backend> const&) + 16 (tuple:1798) [inlined]
14 obs-midi-mg 0x131631608 auto libremidi::make_observer<libremidi::observer_configuration>(libremidi::observer_configuration, std::__1::any) + 32 (observer.cpp:21) [inlined]
15 obs-midi-mg 0x131631608 libremidi::observer::observer(libremidi::observer_configuration const&) + 168 (observer.cpp:32)
16 obs-midi-mg 0x131600444 MMGMIDI::MMGMIDI(QObject*) + 160 (mmg-midi.cpp:196) [inlined]
17 obs-midi-mg 0x131600444 MMGMIDI::MMGMIDI(QObject*) + 196 (mmg-midi.cpp:203)
18 obs-midi-mg 0x1315f5978 MMGConfig::load(QString const&) + 244 (mmg-config.cpp:50)
19 obs-midi-mg 0x131607dbc obs_module_load + 468 (obs-midi-mg.cpp:59)
20 libobs 0x105730360 load_all_callback + 376
21 libobs 0x105730110 obs_find_modules2 + 1828
22 libobs 0x105730490 obs_load_all_modules2 + 64
23 OBS 0x1030a44e0 0x102f7c000 + 1213664
24 OBS 0x102ff8adc 0x102f7c000 + 510684
25 OBS 0x102ffd318 0x102f7c000 + 529176
26 dyld 0x183c250e0 start + 2360
 

Attachments

  • OBS-midi-mg crash log.txt
    126.8 KB · Views: 8
  • 2024-02-27 00-09-08.txt
    6.1 KB · Views: 6
  • 2024-02-27 00-09-21.txt
    6.3 KB · Views: 5
  • 2024-02-27 00-09-43.txt
    6.3 KB · Views: 4

TMBGeeks

New Member
Great plugin!

Feature Suggestions:
• Would love to see folders and organization options because my bindings are really piling up and I'm only on a ~40 key MIDI controller.
• Multiple actions per button would help in two ways, #1 obviously for doing more than one thing on a button press and #2 for doing 2 different actions on different filters/sources based on velocity rather than just the ability to toggle one thing off and on.
• Multiple buttons per binding would really be helpful so you could use an end key like a "Shift" to double your options and make extra use out of the quickly identifiable keys.

Question:
I need help understanding the Toggle mode for Velocity since it doesn't add a second action, can anyone show me an example of use?
 
Last edited:

dj divz

New Member
I'm on a Mac M2 ARM. I tried the v3.0.0 beta 2 and OBS just crashes upon launch. I tried deleting the json file, but it still crashes instantly.

I'm including the Problem Detail and System Configuration issued for the Apple report and you can see the obs-midi-mg appearing just at the top of the log. I'm not sure how to read this, but maybe it is helpful for you. I've attached the full crash log as well.
-------------------------------------
Translated Report (Full Report Below)
-------------------------------------

Process: OBS [68822]
Path: /Applications/OBS.app/Contents/MacOS/OBS
Identifier: com.obsproject.obs-studio
Version: 30.1.0 (8011269129)
Code Type: ARM-64 (Native)
Parent Process: launchd [1]
User ID: 501

Date/Time: 2024-02-27 00:11:16.3890 -0800
OS Version: macOS 14.3.1 (23D60)
Report Version: 12
Anonymous UUID: 64846405-422C-478B-7A2F-3964EE521069

Sleep/Wake UUID: 9D9CB0AA-2C6F-4AF0-A7F9-504B7F760D47

Time Awake Since Boot: 470000 seconds
Time Since Wake: 26330 seconds

System Integrity Protection: enabled

Crashed Thread: 0 Dispatch queue: com.apple.main-thread

Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000
Exception Codes: 0x0000000000000001, 0x0000000000000000

Termination Reason: Namespace SIGNAL, Code 11 Segmentation fault: 11
Terminating Process: exc handler [68822]

VM Region Info: 0 is not in any region. Bytes before following region: 4344758272
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
UNUSED SPACE AT START
--->
__TEXT 102f7c000-103340000 [ 3856K] r-x/r-x SM=COW ...nts/MacOS/OBS

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 CoreFoundation 0x184155438 CF_IS_OBJC + 24
1 CoreFoundation 0x18400da10 CFStringGetCString + 84
2 obs-midi-mg 0x131632f3c libremidi::(anonymous namespace)::get_string_property(unsigned int, __CFString const*) + 84 (helpers.hpp:32)
3 obs-midi-mg 0x131632da8 std::__1::optional<std::__1::conditional<false, libremidi::input_port, libremidi::output_port>::type> libremidi::observer_core::to_port_info<false>(unsigned int) const + 164 (observer.hpp:84)
4 obs-midi-mg 0x1316327bc libremidi::observer_core::get_output_ports() const + 136 (observer.hpp:111)
5 obs-midi-mg 0x131631fec libremidi::observer_core::observer_core(libremidi::observer_configuration&&, libremidi::coremidi_observer_configuration&&) + 620 (observer.hpp:57)
6 obs-midi-mg 0x131631ccc libremidi::observer_core::observer_core(libremidi::observer_configuration&&, libremidi::coremidi_observer_configuration&&) + 12 (observer.hpp:25) [inlined]
7 obs-midi-mg 0x131631ccc std::__1::__unique_if<libremidi::observer_core>::__unique_single std::__1::make_unique[abi:v15006]<libremidi::observer_core, libremidi::observer_configuration, libremidi::coremidi_observer_configuration>(libremidi::observer_configuration&&, libremidi::coremidi_observer_configuration&&) + 24 (unique_ptr.h:714) [inlined]
8 obs-midi-mg 0x131631ccc std::__1::unique_ptr<libremidi::observer_api, std::__1::default_delete<libremidi::observer_api>> libremidi::make<libremidi::observer_core, libremidi::coremidi_observer_configuration>(libremidi::observer_configuration&&, libremidi::coremidi_observer_configuration&&) + 24 (observer.hpp:24) [inlined]
9 obs-midi-mg 0x131631ccc libremidi::observer_configuration auto libremidi::make_observer<libremidi::observer_configuration>(libremidi::observer_configuration, std::__1::any)::'lambda'<typename $T>(std::__1&)::operator()<libremidi::core_backend const>('lambda'<typename $T>(std::__1&)) + 84 (observer.cpp:16) [inlined]
10 obs-midi-mg 0x131631ccc libremidi::observer_configuration auto libremidi::make_observer<libremidi::observer_configuration>(libremidi::observer_configuration, std::__1::any)::'lambda'(auto&&...)::operator()<libremidi::core_backend const&, libremidi::dummy_backend const&>('lambda'(auto&&...)) const + 104 (observer.cpp:21)
11 obs-midi-mg 0x131631608 decltype(std::declval<std::__1::any>()(std::declval<libremidi::core_backend const&>(), std::declval<libremidi::dummy_backend const&>())) std::__1::__invoke[abi:v15006]<auto libremidi::make_observer<libremidi::observer_configuration>(libremidi::observer_configuration, std::__1::any)::'lambda'(auto&&...), libremidi::core_backend const&, libremidi::dummy_backend const&>(std::__1::any&&, decltype(std::declval<std::__1::any>()(std::declval<libremidi::core_backend const&>(), std::declval<libremidi::dummy_backend const&>()))&&...) + 16 (invoke.h:394) [inlined]
12 obs-midi-mg 0x131631608 decltype(auto) std::__1::__apply_tuple_impl[abi:v15006]<auto libremidi::make_observer<libremidi::observer_configuration>(libremidi::observer_configuration, std::__1::any)::'lambda'(auto&&...), std::__1::tuple<libremidi::core_backend, libremidi::dummy_backend> const&, 0ul, 1ul>(std::__1::any&&, std::__1::tuple<libremidi::core_backend, libremidi::dummy_backend> const&, std::__1::__tuple_indices<0ul, 1ul>) + 16 (tuple:1789) [inlined]
13 obs-midi-mg 0x131631608 decltype(auto) std::__1::apply[abi:v15006]<auto libremidi::make_observer<libremidi::observer_configuration>(libremidi::observer_configuration, std::__1::any)::'lambda'(auto&&...), std::__1::tuple<libremidi::core_backend, libremidi::dummy_backend> const&>(std::__1::any&&, std::__1::tuple<libremidi::core_backend, libremidi::dummy_backend> const&) + 16 (tuple:1798) [inlined]
14 obs-midi-mg 0x131631608 auto libremidi::make_observer<libremidi::observer_configuration>(libremidi::observer_configuration, std::__1::any) + 32 (observer.cpp:21) [inlined]
15 obs-midi-mg 0x131631608 libremidi::observer::observer(libremidi::observer_configuration const&) + 168 (observer.cpp:32)
16 obs-midi-mg 0x131600444 MMGMIDI::MMGMIDI(QObject*) + 160 (mmg-midi.cpp:196) [inlined]
17 obs-midi-mg 0x131600444 MMGMIDI::MMGMIDI(QObject*) + 196 (mmg-midi.cpp:203)
18 obs-midi-mg 0x1315f5978 MMGConfig::load(QString const&) + 244 (mmg-config.cpp:50)
19 obs-midi-mg 0x131607dbc obs_module_load + 468 (obs-midi-mg.cpp:59)
20 libobs 0x105730360 load_all_callback + 376
21 libobs 0x105730110 obs_find_modules2 + 1828
22 libobs 0x105730490 obs_load_all_modules2 + 64
23 OBS 0x1030a44e0 0x102f7c000 + 1213664
24 OBS 0x102ff8adc 0x102f7c000 + 510684
25 OBS 0x102ffd318 0x102f7c000 + 529176
26 dyld 0x183c250e0 start + 2360
I thought I was the only one this has been happening too.. lol. I haven't heard from no-one to troubleshoot the problem, hopefully they can have this fix
 
Top