This is a companion blog post to my YouTube video from last year “How to control all of the parameters of the Korg Electribe 2 using MIDI“:
In this video I showed a proof of concept for using a standalone MIDI controller, the Akai MIDIMIX, to externally control 43 parameters on my Korg Electribe 2 hardware synthesizer, to make it much better for live performance. The video also briefly shows how I used Puredata on my computer to map and route the MIDI CC’s, but that’s was just a stepping stone: I have subsequently removed the computer from the setup, and instead I am using a USB MIDI Host interface, the CME H2MIDI Pro.
One viewer of this video asked me whether I could go into more detail about the Puredata spider’s web I showed in the video, and how that works. They also mentioned they are new to Puredata, so I’m going to attempt to explain from a newcomer’s point of view.
The most helpful thing I can do first is to show you the actual Puredata patch from the video… so here’s a high-resolution screenshot of that full patch. You should be able to download it and/or zoom right in. There’s a lot there… so I’ll break it down for you step by step…

Step 1
Install Puredata from https://puredata.info/
Step 2
Step 3
Assign your input MIDI device (in my case it’s the Akai MIDI Mix), and your output MIDI device (I’m using a MIDISPORT 4×4, but alternatively I could have plugged in the Electribe directly via USB).

Step 4
Start a new patch and put your first object: a ctlin, which is the input from the MIDI controller. It has 3 outputs. Put 3 number objects and connect those to the 3 outputs. These number objects display the values that are received from your MIDI controller when you move any control. I also put 3 comment objects so I could put labels next to each number.

Experiment by turning the various knobs and moving sliders on your MIDI controller, and observe what happens to the numbers. For any knob you move, the value might move between 0 and 127, but the controller number and channel stay the same. The next knob will do the same thing, but for a different controller number or channel.
In my case, the default settings on my Akai MIDIMIX, I found that the first knob on the top left sends values from 0 to 127 for controller number 16 on channel 1. The knob below that does the same but for controller number 17. The next knob down sends controller number 18, and the fader at the bottom sends controller number 19. And moving to the right, to the second column of knobs, the top knob sends controller number 20, still on channel 1. I found everything coming in from my Akai MIDIMIX was coming in on channel 1, so I didn’t need to route the channel input to anything in my Puredata patch.
Therefore, the first thing to do is isolate each knob or fader into a vertical lane on the Puredata patch. One approach would be to use a select object…
Step 5
Put a new object ‘sel 16′ and connect the first input to the output of the controller number. Put a bang button below that and connect its input to the first output of the ‘sel 16’ object.

‘sel’ is short for ‘select’. ‘sel 16’ is a select object looking for the constant 16. If it detects a 16 on its input then it will send a bang message to the first output. (I chose 16 because that is the controller number for the first knob on the top left of my MIDIMIX. Check the data you’re seeing on your ctlin object. If the knob you’re trying to use is transmitting on a different controller number then you should select that number instead of 16.)
The bang button should fill in black to indicate that a bang has been received, which indicates that the select object did receive a 16, so that is the correct knob.
Below the bang button, put a new int object (integer), and connect the first input to the output of the bang button, and connect the second input to the output of the value object. Finally put a number object below and connect that to the output of the int object. This number object then displays the value which was sent through the desired controller number. I then added a comment object so I could label this number as ‘knob 1a’.
What we now have is a working patch which successfully isolates the knob position for one specific knob on our MIDI controller, and it ignores all the other knobs and faders. We can route this position value to wherever we want it to go, for example, we might want to send it to the filter cutoff frequency for one of the synth parts on a Korg Electribe. And we can repeat this pattern to all the other knobs and faders, by creating additional vertical lanes.
Step 6
Edit the ‘sel 16‘ object, adding the number ’17’, so it becomes ‘sel 16 17‘. Notice that it gains an extra output. That new output will send a bang message when the number 17 is received, which in my case is when the knob I’m calling ‘knob 1b’ is adjusted.

Then drag a selection box around the bang button, the int object, the number object and the comment. You can then use the copy and paste functionality to create a duplicate set of objects for our 2nd vertical lane. Connect the 2nd output of the ‘sel 16 17‘ object to the input of the new bang button.
Now we have two vertical lanes successfully routing the knob values for two separate knobs. Now let’s send the first one to an output.
Step 7
Put a new object ‘ctlout‘ at the bottom of the first vertical lane. This ‘ctlout‘ object is an output for a MIDI interface. It looks very similar to the ‘ctlin‘ object we had at the top, right? It has 3 inputs with the same layout as before: value, controller number, and channel.
Connect the output from the ‘knob 1a’ number into the first input of your ‘ctlout’.

We’re going to need to bang in some numbers for controller number and channel. Create a ‘loadbang‘ object. This will send a bang message when the patch is loaded. Connect that to a new bang button and then connect that to two new ‘message’ objects. I’ve chosen the number 74 for the first message, as that is the controller number for filter cutoff on the Electribe, and number 1 for the second message, as that is the channel I want to send the MIDI message to, so it will go to Synth Part number 1 on the Electribe. Connect the messages to the relevant inputs on your ‘ctlout’ and now we have a full chain from the MIDI input at the top, through to our MIDI output at the bottom. Test it and prove that it works!
We have successfully isolated one knob on our MIDI controller, and have chosen which controller number and channel we want it to control on the MIDI output.
We can repeat this process by completing the 2nd vertical lane (for ‘knob 1b’ I chose to control Oscillator Edit which is controller number 82), and then carrying on the same pattern for the 3rd, 4th, and so on.
I’m going to stop here for now, and come back soon to cover how I use the buttons to switch on and off MFX per part.
To be continued…





