openstatic.org

Midi Control Change Tool

This utility allows you to observe MIDI control change messages in real-time, and associate rules with them. You can also transmit MIDI messages to other devices via rules.

**UPDATE 11/22/2019**
i've added an internal web server, and api. Right now its pretty simple, but one benefit is i've implemented Javascript's MidiAccess API. When connectiong to the Midi Control Change tool (via chrome/firefox) local midi devices will register with the server. The websocket API also allows for registering your own virtual midi sources for use with this tool. Documentation will be available in the near future.

How do I use it?

Simply launch the app and check off what MIDI devices you want to listen to, as you play with the physical controls on your device, those controls will appear in the "Midi Controls" section. Each control represents a channel and a control change number. Simply double-click or right click on a control to change its name, and create rules.

Creating a rule

"Rules" are a way to create mappings from your MIDI Controls to an event

  • 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
    • 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
  • 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
    • {{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)

Port Mapping

Recently i added the ability to create port mappings which will transmit all short messages from any input device to any output device. Clock and SysEx messages are ignored. All you need to do is go to the MIDI menu and select "Create Port Mapping" Select your source device and destination device and hit "Save"


Download

Latest Build: December 07 2019 02:01:34 PM EST


MidiTools.exe
(Windows)

MidiTools.app
(OSX)

midi-tools-1.0-SNAPSHOT.deb
(Ubuntu/Debian)

midi-tools-1.0-SNAPSHOT.jar
(Anywhere)

About

MidiTools was written in pure java. The exe provided was generated using the launch4j maven plugin.

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.