Using Puredata to manipulate MIDI on hardware synthesizer like the Korg Electribe 2

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

Go to the MIDI settings

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…

Who is CakeFolder?

He started creating and sharing music online in 2004, initially under his birth name, on websites such as MacJams.com, garageband.com and icompositions.com releasing 10 tracks that year – some of these were songs he’d written at University in the 90’s on his guitar, and some were new songs.

At the end of 2004 he adopted the artist name ‘cakefolder’, a name he chose because he was storing all his musical ideas on his computer in a folder named ‘cake’. This was after a discussion with his friend Ian which established that everyone likes cake, so he used the name ‘cake’ for the folder. Realising that ‘cake folder’ could be a folder or a person, he adopted it as his artist name. He even designed a silly logo.

The other thing that happened at the end of 2004 was that podcasting exploded, and in April 2005 he released his first podcast. Podcasting was new and exciting, and his podcast saw some early success, being featured in radio and newspapers. Because of this, he concentrated his spare time on his podcasting, and not making music.

Those tracks from 2004 disappeared from the Internet as one-by-one those music hobbyist websites went offline.

In 2011 he started making music again, inspired by his friend james. They started making music together, so james and cakefolder became ‘jamfolder’, a project which lasted from 2011 to early 2013. Some of the jamfolder tracks are still available today on Soundcloud ( https://soundcloud.com/jamfolder )

He also did a few solo tracks during that same period, experimenting with different music-making methods, both hardware and software based. During 2013, while in Germany this morphed into a new project ‘Stahlbürste Darling’, conceived to explore his music making in a German context, either in instrumental format, or spoken (mostly German) lyrics, culminating in his first proper digital release ‘Analog EP’ on December 1st 2013 ( https://itunes.apple.com/de/album/analog-ep/id771149995 ).

The experimentation continued in 2014, and in February 2015, cakefolder created his first full album, ‘Exceptions’.

Various other albums, singles, EPs and remixes followed (full discography below).

He collaborated again with james, now known as ’zx85’ on a few occasions. In 2016 they both appeared as featured artists on a track on each other’s albums (‘Wordgames’ from ‘I don’t understand’ by zx85, and ‘Polygon Road’ from ‘Possibilities’ by cakefolder). In 2017 james mastered ‘Signal kommt’. And in 2019, james remixed and added backing vocals to ‘In an Echo Chamber’.

Other collaborations include the song ‘Rainbow Eyes’ from 2016’s ‘Possibilities‘ with Fiona Dunn as vocalist, and 4 tracks from 2021’s ‘Light’ whose lyrics were adapted from poems by Martin Breedyk.

In 2026 cakefolder came full circle, collaborating once again with his friend Ian, the poet AYM, as they came together to form AYM vs. CakeFolder with their album ‘The Dark & The Light’.

Albums:

2015 ‘Exceptions’ https://cakefolder.bandcamp.com/album/exceptions

2016 ‘Possibilities’ https://sm2n.wordpress.com/2016/04/27/possibilities/

2017 ‘Signal kommt’ https://itunes.apple.com/de/album/signal-kommt/id1294908488

2018 ‘Confidence’ https://sm2n.wordpress.com/2018/03/21/confidence-by-cakefolder-released/

2019 ‘Not Everyone’s Cup of Tea’ https://stahlburstedarl.bandcamp.com/album/not-everyones-cup-of-tea

2021 ‘Light’ https://sm2n.wordpress.com/2021/04/24/light-the-new-album-by-cakefolder/

2023 ‘Ratio’ https://sm2n.wordpress.com/2024/01/25/ratio-an-album-by-cakefolder/

2026 ‘The Dark & The Light’ https://sm2n.wordpress.com/2026/03/24/the-dark-the-light-by-aym-vs-cakefolder-2/

Singles/EPs:

2013 Analog EP https://itunes.apple.com/de/album/analog-ep/id771149995

2018 ‘Angel/Shirt’ https://sm2n.wordpress.com/2018/01/26/cakefolder-angel-shirt-released-today/

2019 ‘In an Echo Chamber (Danger Remix) [feat. Zx85]’ https://sm2n.wordpress.com/2019/01/18/in-an-echo-chamber-danger-remix-feat-zx85/

2025 ‘Downbeat’ https://sm2n.wordpress.com/2025/07/24/downbeat-by-cakefolder/

Remixes:

2017 ‘Anti-social media’ by Restructure https://restructure.bandcamp.com/track/anti-social-media-stahlb-rste-darling-remix

As featured artist:

2016 ‘Wordgames’ https://open.spotify.com/track/6m35UwJGPJlowddfdQQvOF?si=0f6bbe2d0cb043e1

How to programme a TB303 (or similar) from a patch sheet

I made this video Jul 2022, but forgot to post it to my blog.

In this video I demonstrate, in exhaustive detail, how to programme a Roland TB303 (or Behringer TD3, or equivalent) from a patch sheet.

I was given this Behringer td3 as a present. It’s a recreation of the Roland tb303, and the programming method is the same. I watched a few tutorial videos to try and find out how to program it, but everything i made was rubbish, so I thought: I will find out how to use these patch sheets that I’d seen on the internet*. I thought if I can programme one of those into my td3, maybe it will sound half decent.
I tried to figure out how to do it, and I couldn’t find any video tutorials that showed how, so I thought: if I try to work it out, and make a video, then I’ll learn along the way. And hopefully other people might find it useful as well.

* You can find patch sheets by searching for ‘tb303 patch sheet’, but | like to go to a website called http://www.acidboxblues.com/category/acid-pattern-group