Home

Awesome

Attention!

As of this commit, miditoobs is officially deprecated and will be/is publicly archived.

miditoobs started in 2017 in a gutefrage.net thread (a german version of quora) with a very basic but functional first commit on Sep 17, 2017. Back then there were basically no tools to do what miditoobs did, this sparked the initial development. Now the codebase (mostly the setup) is fairly outdated and a big patchwork of years of adding stuff. Also the complete lack of any abstraction would make migrating to obs-websocket 5 a complete rewrite of everything, which would also break every single config file out there.

A big thanks to every single person who relied on it over the years and everyone who contributed to the project in any form.

If you are looking for alternatives have a look at the Resources List in the OBS forum. The current version of miditoobs will continue to work as long as the OBS project provides obs-websocket v4 compat versions of the websocket plugin (Which probably is still a few months as of writing this).


Original Readme from here on

Midi OBS what???

This script lets you use one or multiple MIDI controllers (like the Novation Launchpad, Ableton Push, Akai LPD or the Korg nanoPAD to mention a few) to switch scenes, start/stop recording/streaming, control volume/filter settings/gain/opacity/t-bar/delay/transition time and more in obs-studio.

If you want to play it safe, use the latest release. If you want to use the latest features then just clone the master branch.

Requirements

Setup Part 1

If you want to install all packages in one go, run pip install -r requirements.txt

Setup Part 2 OBS Websocket

Setup Part 3

Available for buttons:

Available for faders/knobs:

Important note about all controls that involve a scene:

In OBS, scenes are also sources, so all the filter controls and TakeSourceScreenshot will also work on scenes. They will be part of the list that you are prompted with in the setup. For a detailed description of most of the commands see the obs-websocket protocol documentation

Device Management

If you run the setup another time after the initial configuration you will get a dialog at startup where you can select if you want to go to the device management (1) or just continue adding new button/fader assignments with the already configured devices (2). If you select 1, you have a few options:

Understanding input scaling

A MIDI value can be something between 0-127. That is a very limited number.

You will only be asked for Input Scale setup if it's required for the function(SetSourcePosition, SetSourceRotation, SetSourceScale, SetSyncOffset, SetTransitionDuration, SetGainFilter).

The first value you have to enter(lower output value) is the value that will be sent when the fader is sending a 0. The second value you have to enter(higher output value) is the value that will be sent when the fader is sending a 127. The range between the 2 numbers will be interpolated linearly.

Some limitations might apply to the range you can use (see the comments above in the action list above).

"Bidirectional mode" !!ADVANCED/EXPERIMENTAL

THIS IS ONLY FOR ADVANCED USERS THAT ARE COMFORTABLE EDITING CONFIG FILES

If you enable the "bidirectional" mode while setting up SetCurrentScene or SetPreviewScene the script will try to open the input device as an output device and listen for Preview or Program scene change events. It will then send out a note_on or control_change event on midi channel 0 to the same note or control channel that is setup for the specific scene.

The bidirectional mode for the ToggleMute function sends out a note_on with velocity 0 or 2 depending on the mute state and might only work on the AKAI APC mini.

This default approach might not work for some devices like the X-Touch Mini that have different notes/cc values for the same button depending if the data is coming in or going out. In this case you have to add a value named "out_msgNoC" to the config.json file for the button you want to light up with the right note/cc number. To change the default channel you need to add a value named "out_channel" to config.json file.

If the midi out port for your device has a different name then the input port this will also not work without modifying the config.json file. For that first use the device configuration as mentioned above to add another device (could be one with a completely different name, this only saves you the work of manually adding the whole device which you could also do). Then add a value called "out_deviceID" to the button mapping entry with the value set to the id of the output device you just created. Also make sure that the output device name is the right one.

To manually check which MIDI device are available for input/output, run python then paste:

import mido
mido.get_ioport_names()
mido.get_input_names()
mido.get_output_names()

If you want to know more, take a look at the original pull request

Updating MIDItoOBS

As MIDItoOBS is just running from the folder you move/download it into, updating the program itself is (most of the time) as easy as downloading it again like mentioned in Setup Part 3.

I highly recommend that you do not overwrite your existing files but rather backup the folder as is (including the config.json) and start with the freshly downloaded files in a new folder. Then just copy your config.json from the old backup folder into the new folder. Then try to run it.

It can and will happen from time-to-time that I introduce some changes that make the config no longer work with the new program version. As I don't have a changelog yet (which is definitely on the todo list) there is not really any way for you to know. Sometimes I announce such changes on the very top of this readme file. If it no longer works, feel free to open an issue or contact me (See Troubleshooting).

Running MIDItoOBS on another computer in the network

Setting up "macros" (optional)

You can assign unlimited different actions to the same button. There is no guided GUI way to do this right now so this requires editing the config. (Sounds harder then it is)

Using it (!Very important!)

Command line options

You can call the main.py and the setup.py with the following command line options:

Troubleshooting/Support

A user has reported that under certain circumstances the script(setup and main) will crash after start on Windows with "ImportError: DLL load failed: The specified module could not be found". If this happens to you, please install the Visual C++ Redistributable from Microsoft. Make sure you get the x86 version if you are using python 32-bit (Which is default) (Download)

Contributors

I had never imagined that so many people would contribute something to the project. Thanks to everyone who submitted a bug report or pull request.

Special thanks to:

Tested on/with

Let me know if you had success with your device.

This project is not affiliated with the OBS Project or obs-websocket