MIDI is the acronym for "Musical Instrument Digital Interface". It's a protocol that is used for communication between electronic instruments or other digital musical tools.
You can configure a MIDI instrument so that it sends commands to HeavyM. In short, this protocol will allow you to control some features in HeavyM remotely from a controller connected to your computer, usually simply by USB.
Since a MIDI controller usually consists of several types of control elements, you have more possibilities than with a keyboard. And once it is set up, you won't have to touch your computer!
Connecting a MIDI controller
Once you have plugged your device to your computer, head over to the MIDI tab of the Controls Settings window (from Controls → Settings... or in the toolbar) and choose a device from the dropdown list.
If your device is correctly recognized, you'll see values appear in the Channel/Control/Value boxes, when you move a fader or hit a pad. If it doesn't respond, it might be because it is already connected to another app. Indeed, it's not possible to use the same device in multiple programs at once.
Note: for now, you can only use one MIDI controller at a time to HeavyM.
Enabling MIDI Learning
Once your device is set, you can start assigning buttons, faders, pads and anything your controller has to commands in HeavyM. To do so, you have to make the elements in the app interface "learn" which item in your MIDI interface they should react to.
For that, you need to toggle the MIDI Learning interface from the Controls window ("MIDI Learning mode" button) or menu (Controls → Edit MIDI Assignments). A colored overlay will appear over the elements you can map in the interface.
Select an overlay element with your mouse or trackpad (it will be circled in yellow) and just move or hit the control item on your MIDI device that you want to use with it. This will associate the MIDI and interface controls together and you'll see it appear in the list in the Controls Settings window.
Once you're done, you can simply toggle the Learning mode off with the same button/menu or with [Esc].
If your controller supports MIDI Out, assigned LED pads reflect changes made in the interface (as of 2.11). For instance, for compatible controllers, pads take the color of the sequence they are assigned to in HeavyM, or if a toggle is assigned, its pad lights up when turned on.
Note: you can assign the same MIDI control to multiple commands at the same time. For example, one single button on your device can be linked to multiple effect toggles, so that when you hit it, all these effects turn on at once!
To edit the assignments, just turn on the Learning mode again. Then, simply select the desired assignment and trigger the new MIDI control you want to use.
There are 3 possibilities to delete assignments:
- When the Learning mode is ON, select an overlay and hit [Delete/Backspace]. This will remove the selected assignment.
- Right-click on a single assignment in the table in the Controls window and click on the "Delete assignment" option. This will remove the selected assignment.
- Use the "Delete all assignments" button above the table in the Controls window. This will remove all MIDI assignments in the project.
The MIDI assignments you set are directly saved in your .hm project file.
Each assignement you configure has a set of settings, as you can see in the assignments table of the Controls window.
For MIDI assignments, you can edit:
- The Toggle behavior: if checked, your MIDI button or pad will work as a "toggle" button, if not, it will work as a "push" button on this assignment. Here is an example for the two states, for instance with a MIDI pad assigned to a slider in HeavyM:
- Toggle is checked: if you press & release the pad, it will set the slider to the max value. If you press & release it again, it will set it to the min value. And so on.
- Toggle is unchecked: if you press the pad, it will set the slider to the max value. When you release it, it will set it to the min value.
- The Range: this setting appears on sliders or spinboxes for instance. By setting a Min and a Max, you can override the range of the interface element in HeavyM. For example if you set the range to 1 - 15 for the Thickness of the Border effect, when you move the fader you have assigned to it the values will only vary between 1 and 15 no matter how hard you move your fader!