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
Selecting a device
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.
MIDI feedback
As of 2.12.3, you can choose to disable MIDI feedback via the “Enable feedback” checkbox. Prior to this version, it always stays enabled.
Note: feedback is automatically disabled if “loopMIDI” is chosen as a device. There is an infinite loop issue, that is why the option to enable is not available in this case.
Managing Assignments
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.
Adding assignments
- Select an overlay element in the HeavyM interface (it will be circled in yellow.)
- Move the slider or hit the button that you want to assign to it on your MIDI device. 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 and feedback is enabled in HeavyM, assigned LED pads can 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!
Editing assignments
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.
Deleting assignments
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.
Saving assignments
The MIDI assignments you set are directly saved in your .hm project file.
Note: assignments are associated with the name of the device they were created with. If you transfer the project to another computer and use it with the same device, it'll work as long as both computers recognize the device with the same name. This means that it most likely won't work between a Windows and a Mac as they don't use the same naming conventions.
Assignment settings
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!