openstatic.org

openstatic.org

MIDI Tools

(Jump to downloads)

This utility allows you to work with MIDI control change messages from your controller (sliders and knobs), and associate unconventional rules with them. Game controllers supported by jInput are also available as input sources, and every button and analog input is remapped to a MIDI CC. This program is built with a focus on control change messages, however it is a full functional MIDI Router as well when using the "Port Mappings" feature.

Tutorials

**UPDATE 3/05/2022**
I've recently updated the documentation a bit, trying to make usage a bit more clear.

How do I use it?

On the left hand side of the interface you will see a list labeled "MIDI Devices" this will show all detected MIDI Hardware and Game Controllers (as detected by jInput).

  • >> Input only device MIDI Tools can read from this device
  • << Output only device MIDI Tools can write to this device
  • <> Bidirectional device, MIDI Tools can read and write to this device
By Checking off a device you are opening a connection to that device. Allowing MIDI Tools to interact with it.

In the main part of the interface you will see 4 tabs, "Midi Controls", "Control Change Rules", "Port Mappings", "Logger A"..
Midi Controls
This tab will display a list of all the Control Change inputs you are working with, if you are unsure of the mapping of your controlers knobs and inputs, select "Create Control on MIDI input" under the options menu. Once this option is selected any input from the controller will create a Control entry in the list.
Control Change Rules
Actions to be performed when certain conditions are met, see "creating a rule" below
Port Mappings
This allows you to create virtual mappings between MIDI ports, think of it like a patchbay. You can even use this to connect a game controller directly to a MIDI output (assuming you dont want to modify the messages)
Logger A
This is one of two logger output panels for displaying messages or debugging your rules.

Creating a rule

"Rules" are a way to trigger an action under certain types of MIDI input. For instance if you would like to trigger a sound, run a script or call an API when the mod wheel is moved or any knobs are adjusted. In order to create a rule right-click or double click on the control listed in the "MIDI Controls" tab, then click "create rule"

  • Rule Name - This is just a label for the rule
  • Rule Group - A group identifier for this rule, can be used to toggle rules by group
  • Select Control - Midi Control to listen for events on (A control represents a channel and cc#)
  • Select Event - When should this rule trigger?
    • onChange - Whenever there is a change in value, best option if you are looking to detect any change in the slider or knob
    • onSettled - When the value has settled for at least 500ms
    • onHigh (64+) - whenever the value passes the middle of its range in the upperbound direction
    • onLow (63-) - whenever the value passes the middle of its range in the lowerbound direction
    • onIncrease - whenever the value increases
    • onDecrease - whenever the value decreases
    • onSettledIncrease - whenever the value settles higher then the previous value
    • onSettledDecrease - whenever the value settles lower then the previous value
  • Action Type - What Kind of action do you want to take?
    • CALL URL - Make a request to a URL (response is ignored)
      Action Type: specify a url http://www.domain.com/program.php?v={{value}}
    • RUN PROGRAM - Execute a program
      Action Type: specify a program c:\program.exe {{value}}
    • PLAY SOUND - Play a wav file
      Action Type: you may specify a url or local path to a wav file
    • TRANSMIT CONTROL CHANGE - Send a control change Message
      Action Type: Device Name,channel#,cc#,{{value}}
    • ENABLE RULE GROUP - Enable a group of rules
      Action Type: groupname
    • DISABLE RULE GROUP - Disable a group of rules
      Action Type: groupname
    • TOGGLE RULE GROUP - Toggle a group of rules
      Action Type: groupname
    • LOGGER A MESSAGE - Add some text to Logger A
    • LOGGER B MESSAGE - Add some text to Logger B
  • Action Value - Specify the parameters to an Action Type (variables supported below, these will be replaced at the rule's runtime)
    • {{value}} - The value of the MIDI Event (0-127)
    • {{value.inv}} - The inverted value of the MIDI Event (127-0)
    • {{value.old}} - The value previously held by the midi control before the event
    • {{value.old.inv}} - The inverted value previously held by the midi control
    • {{value.change}} - The amount the controls value has changed (-127 to +127)
    • {{value.map(min,max)}} - Remaps the 0-127 value to a new range specified by min/max think of it like the arduino map function
    • {{cc}} - Control change number of the event.
    • {{channel}} - Channel number of the event.

Once you've set all the parameters for your rule. Just click "Create Rule" you can go back and edit a rule at any time just by clicking on it (rules are listed at the bottom of the interface)


Github Project



Downloads

Latest Update: March 08 2022 05:59:57 PM EST

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.