MIDI
Besides making awesome visuals, effects and mixers, Wire is also capable of handling and manipulating MIDI and OSC data. In this article we will discuss how to use MIDI in Wire.
You can use Wire to create MIDI effects, custom controllers or simply use MIDI in your patch to have a greater degree of control over your patch.
Setting up MIDI
Before we dive into the plethora of nodes that deal with MIDI we first need to make sure that you are set up to use MIDI in the first place. Make sure you have your MIDI-device plugged in and that you have installed the necessary drivers on your computer.
With that said and done, we open the Wire Preferences Menu under the Wire tab and navigate to the MIDI preferences.
Make sure that your midi device is detected (press refresh if you just connected a new device). To have the device work in Wire the output box should be toggled on.
Tip! Not sure if your MIDI controller is working or not? Fold out the MIDI monitor on the right of the MIDI Preferences. Wire will show you all the MIDI messages it's receiving from all enabled controllers. If you're seeing messages come in here, but Wire is not doing anything with them, something is wrong with your preference settings. If nothing is showing up here, something is wrong with your MIDI controller.
Reading MIDI
To get MIDI into Wire you need the MIDI In node. This node simply receives all MIDI data on all channels and acts as a hub. From here on you want to read out the specific data that your patch needs.
The MIDI Read nodes reads all incoming midi data and outputs the pitch, velocity, cc value, controller and channel. From here on you could use logic nodes to check whether the incoming data is of the right channel or controllers. You can use nodes like Within, Equal and Outside to check ranges of data.
In this patch we check if the pitch is betweeen 5 and 7 and sending out a trigger if true.
The MIDI Filter nodes are there if you require a specific note. If you want your C2 note to do something specific in Wire then these nodes are the nodes you need. Simply specify the pitch and channel and you are ready to rock.
In this patch we start playback of the video when pitch 6(F#-1) is being played.
There is also a section of small nodes that filter one specific data type out of the MIDI In node. The Pitch node only gets the pitch, The CC Value only gets the CC Value etc.. These are nodes you probably won’t need very often but they are there if you do. One exception to this is the Pitch Bend node, this is the only way to gather pitch bend information from a MIDI signal.
Lastly there are the Is CC, Is Pitch Bend and Is On/Off nodes. These can be used to get some boolean logic from your MIDI data.
We check if the incoming signal is a pitch bend if so, we use the pitch bend to modulate the frequency of the Sine. If not the frequency will be 0.25
Writing MIDI
Instead of reading MIDI and make it do happy things in your patch you can also generate MIDI data yourself and send it out by using the MIDI Out node.
You can write a Midi On , Midi Off or CC value using the corresponding nodes. This data can then be picked up by other applications to work some magic. You could create some MIDI delay by using a trigger and then some Delay nodes or create an automatic chord generator or a sequencer using Wire.
A simple midi delay patch.
MIDI Channels
For you MIDI-pro’s out there looking to go polyphonic we have the slightly more advanced MIDI channels node. This node lets you write to MIDI to multiple channels at the same time.