Digital audio workstations, VST plugins and other audio software can send out MIDI. Grid can receive and process these incoming MIDI messages. This article will show an example configuration made with Grid and Ableton.
The MIDI receive functionality can be accessed through the midi rx event in the system events tab. The midi rx event is where actions can be configured to react to received MIDI data.
Actions triggered by system events are unique to each module. To have a control surface where each module reacts to MIDI, you have configure each module's midi rx event.
Usually the MIDI data sent out by audio software will have the MIDI message in the following format: Command, Parameter 1 (CC or Note), Parameter 2 (CV or Velocity).
The command itself contains the channel information. Control Change 178 means that the MIDI command is 176 and channel is 2.
To enable and see MIDI OUT in action on the DAW's side:
- Enable MIDI OUT for Intech Studio: AC (Grid)
- Map a control element on a Grid controller to a parameter
- You should see a blinking a indicator for sending MIDI OUT
To see results in Grid Editor here are few tips:
Select the control element MIDI mapped
Under system events choose the midi rx event
Add a Codeblock action and call the print function on the variables found in the Local Variables action
<?lua --[[@cb]] print(ch,cmd,param1,param2)?>
The variables defined in the Local Variables action are on the module by default.
Open the debug panel on the left
Upon interacting with the control element's mapping, you should see MIDI data.
Great! Now you have a communication between the DAW and Grid, let's see an actual configuration.
Map control elements 12 and 13 in Ableton on two volume fader, by default when EN16 is plugged in it will be assigned to CC44 and CC45
Remove LED Value actions from the encoder event on control element 12 and 13
Select the System Events tab and the midi rx event
Add a new variable to Local Variable with name lednum
Add Lookup below the Local Variables action
<?lua --[[@glut]] lednum=glut(param1,44,12,45,13) ?>
This Lookup action has a source, in this case the param1, which contains MIDI OUT param1.
Input 44 will be mapped to control element 12
Input 45 will be mapped to control element 13
Assign destination to the lednum variable, for later usage.
Add a LED Value action
- Set the LED Number input to lednum,
- Layer to 2 (encoder turn),
- Set the Intensity to param2 (this is MIDI OUT param2)
The encoder event by default triggers the LED Value action on the mapped control element. In default configuration, this is why you see LED intensity change above the turned encoder. We now mapped the intensity to see changes transmitted by Ableton instead of the encoder itself.
By default, each encoder control element has a minimum LED brightness for both encoder and button events. This is a nicify feature, where the module's LEDs will shine even if turned down. Also an encoder control element has two LED color layers, where the two layers are mixed if used together. For example if you push the encoder while turned up, the two colors and their intensity will be combined to give feedback about the interaction.
To set the minimum to 0 instead of a minimum nicified value, call the led_color_min() function on the init event. The code below will set the minimum led color to none on layer 2, which is the led color layer of the encoder rotation.
<?lua --[[@cb]] led_color_min(num,2,0,0,0) ?>
If you want to zero out both the encoder and button events default color, call the led_color_min() function on both layers, like seen on the image below.