Midipipe Tutorial

Midipipe is a great little utility program which works like a virtual midi port. It allows you to alter your incoming or outgoing midi messages.
The problem is that it isn’t exactly straight forward for those of us who aren’t midi programmers and have to look up what a NRPN is, myself included. For this tutorial, I will be discussing how I created a NRPN to midi CC converter by using Midipipe which allows me to use my Korg Electribe ESX as a midi controller for virtually any DAW.

You can Download Midipipe here…http://subtlesoft.square7.net/SubtleSoft/MidiPipe.html

First it is important to say that if you use this free utility it is donationware, so please donate what you can.
For my example I will be dealing with my Korg Electribe ESX. It is a super intuitive, hands on music workstation which allows you to manipulate various parameters of your sound or sample without any menu diving. What I like is that you press the Sound Selector button for the tone you want to warp, then start spinning knobs. I wanted this ease of use with Ableton, wherein Drum Rack would have maybe a dozen samples loaded and I could easily manipulate each one like I do with the ESX. Unfortunately, the ESX sends NRPN data for each knob. The NRPN numbers are logically laid out however. The other downside is that all the drum tones send on the same midi channel.

So here I am, wanting to send individual midi CC messages on separate midi channels out of the Electribe to the DAW. For instance, drum 1 sends its volume knob automation (midi CC#7) out channel 1, drum 2 sends it volume automation out channel 2 and so on, for all the knobs and switches for every drum tone.
The way that I was able to get this particular “pipe” as it is called by the software to work is to create multiple parallel pipes within midipipe to get it to send the correct midi channel out. If you open up the Korg ESX Midipipe file below and look at each pipe, you can see that each “pipe” is a duplicate of each other, yet the resultant output channel is different for each pipe and the NRPN of each drum tone knob is different.
Like I said, I had to learn about NRPN data before I could figure out how to make a working pipe, but I will sum up what I learned for you.

Midi CC #99 sends out a message called the MSB (most significant byte) and Midi CC #98 sends out a message called the LSB (least significant byte) and Midi CC #6 sends out the actual value of the knob. So basically instead of a simple message like “Midi CC knob 10 is at value X”, you get a longer “address” for the knob or switch. You get a message like “Midi CC knob 12/36 (MSB/LSB) is set to whatever value Midi CC#6 just said”. Not to difficult.
Within Midipipe, you can create a pipe which translates this data for you and spits out proper Midi CC messages. First you set up a brand new pipe. From the left column grab a Midi input process and drag it to the right column. Now you can select the midi input you want to be listening to. After that, I like to put an A-list process, so again find it in the left column and drag it to the right column after the midi in. This is a processor which tells you all the midi information being received by the midi port you are listening to. I found it useful to disable the monitoring of timing messages within the A-list because the Korg Electribe sends midi clock constantly. Now create a duplicate of this A-list tool (look int the edit menu above) which we can put just before the output in order to make sure that the Midipipe is properly modifying the message. Now in the left column grab a midi output and pull it to the right column at the end of the list. Assign your midi output to the IAC driver, or to Midipipe’s virtual output. Now you should have a working pipe which gets signal in and sends it out, but it does nothing to filter or convert messages.

We need to put a Message Converter in the right column between the two a-list tools. Now select the first A-list and twiddle the knob you want to change and it should give you some message like
MSB 99 12
LSB 98 36
Midi CC 6 62
This tells you both the MSB an LSB number and the value. Now select your Message Converter and on the left hand IN column, choose NRPN and in the first pull down choose 12 and in the second pulldown choose 36. (These pulldowns are your MSB and LSB number selectors). On the right hand column you will see the OUT choices. Choose to output Midi CC message and set it to a message number that you like. There is some standardization of this, so it helps to pull up a list of that if you can, like Midi CC #74 is filter cutoff. At the bottom right is a selector for which midi channel you want to send the particular midi CC out on and a strange box which says “set fill data byte to…” Check the box to activate these options, choose your midi channel then set the fill byte to 127. I don’t know why you set the fill byte, but it has to be done. Now select the A-list just before the output and twiddle the knob that you just mapped. If everything is correct, you should be getting a simple midi CC message on the channel which you assigned in the Message Converter.
Repeat this process for each knob. Look at the first A-list to figure out the MSB and LSB, duplicate the last Message Converter tool in the chain/pipe and set the appropriate MSB , LSB and midi CC. You should be set.
If you are a glutton for punishment like me, and you are trying to set up something where you have way more knobs than available midi CC numbers, you have to get creative. To create my midipipe file, I duplicated each pipe, then re-assigned each MSB, LSB, and midi CC # for each drum, but for each drum I selected a different midi output channel. Midipipe seemed to send the original NRPN along with the midi CC when I had my controller assigned to a different midi channel than what the resultant midi CC was, so I had to fix that. I created a Control Split near the end of the chain which receives midi CC #99 and sends it to a midi channel other than the channel that I want the resultant midi CC on. I duplicated that tool twice and told one to send midi CC#98 to another midi channel and one to send midi CC#6 to the same channel. Then I created a midi filter in each pipe as to allow only the data on the midi CC channel through and turn off all other midi data. This then cancelled the duplicate NRPN data and the end result was a clean NRPN to midi CC converter.
Now whenever I want to use my Electribe, I start up Midipipe, as well as my DAW and I choose the midi port “IAC” and everything works great. Now all I have to do is set up an Ableton template where Drum Rack has all the knobs mapped. Fun!
I hope that you get some idea of how powerful this program is and find a use for your own studio. Again, if you end up using Midipipe, please donate. I have a link below for my Midipipe file which translates all the Korg Electribe ESX NRPN data and translates it to midi CC. With some modification it should work for the Electribe EMX as well.

I have created a Midipipe file for the Korg ESX. It is a Zip file with some instructions inside. Good Luck and have fun with this.

Download image


To DOWNLOAD THE FILE, you need to be a follower of my blog (The “Follow/Download” button is in the left sidebar near the top). You will get a confirmation email with your download code.