Highly Liquid MIDI CPU


I’ve been planning this project for a little while, and have been wrapping up putting the finishing touches on it over the last week or so. It’s a MIDI controller, which I plan to use to control a number of different things within FL Studio. I used 3 MIDI CPUs from HighlyLiquid.com. You can find some additional details of the project here.

I’ve created a mouser parts lists here. There are a few parts I found elsewhere, such as the big red knob, the fader caps, led holders, and the rotary switch. I had the rotary switch on-hand, but it’s a Greyhil 25LB22-H. I got the perfboard, big red knob, and the led holders at Radio Shack. The fader knobs came from here. I need to make some minor adjustments to my ponoko file, but I’ll share that as well for anyone wanting to try this project.

—————————————-

As of right now, I have the first 16 channels of FL’s mixer with the 3 band EQ mapped to two MIDI channels, and am working on creating an FL dashboard to control a modified version of the DSQ32 Reaktor Ensemble, which will take up almost 4 more MIDI channels worth of controls from this bad boy. It’s got a total of 24 encoders, 8 slide pots, 16 buttons, and a MIDI channel select knob. That makes for easy access to a total of 768 different parameters within FL, if I chose to map that many.

—————————————-

When I started this project, I already knew what case I was going to use. If you look through my project pages, you can see that I used the KE-20 for my Roland 505 rehousing project, and I really like the way that one turned out. It was a simple solution, looks really great, and has plenty of room inside.

Next up was to place my mouser order. I wanted a traditional analog mixer style layout. I have a Korg nano-kontrol, but it just doesn’t have enough knobs for my taste and feels like a toy. Big and burly is the name of the game here. After reviewing the hardware and firmware manuals for the MIDI CPU, I came to the conclusion that 8 faders and 24 encoders (3 per fader) was the way to go, and the perfect combination for an analog mixer style layout.

After recieving my mouser order, I made my radioshack run for perfboard, the led holders, and the midi channel select knob. Then I set out to layout all of the controls on the perfboard and marked everything up with a felt pen. I made sure that I had enough room for the 3 MIDI CPUs leftover on the perfboard. This way nothing would be lose inside, and I wouldn’t have to find a good way to mount the CPUs to the case kepping case modification to a minimum. I drilled holes in the perfboard so I could insert the large legs of the controls into the holes, bending them to hold everything permanently in place.

Once the control surface was mocked up to my liking, it was time to make my faceplate design to send to Ponoko. I measured the distance between each fader, the distance between fader and buttons, buttons to each other, fader to encoder, and the distance from encoder to encoder. I also measuredthe opening for the back panel and the holes I’d need for the MIDI connectors, power connector, and power switch. Since my faceplate was going to need to be fairly large I downloaded the p3 template from ponoko to use with inkscape (a free design tool similar to photoshop). I then whipped up some drawings (faceplate and back panel) to my specifications using the proper color and thinkness lines designated on the ponoko template. There was a lot of free space left over on the faceplate. I decided to give some love back to Highly Liquid my copying the sticker John sent with my MIDI CPU order onto the leftover space.

I placed my order with Ponoko and waited what seemed like forever for it to arrive. (There was a long waiting list at the time.) Once I recieved the faceplate and back panel, I got out a Testors paint marker and filled in the engraving on the faceplate. I left the back panel bare. A good technique is to go over the engraving once then let the paint dry for about and hour or two, then give it another coat. Repeat that process several times so that when the paint dries it’s as flush with the non-engraved surface as possible. This’ll make your panel look like it came from a factory if you’re careful about it. It’s a somewhat delicate process, and if you look closely in the images below, you can see that I messed up the “M” in MIDI when the procective paper moved on my first go round. This is the 4th panel I’ve done like this and the first time I ran into such an issue.


Once the paint was completely dry (DO NOT REMOVE THE PAPER EARLY, don’t say I didn’t tell you so if you srew up your faceplate by getting overzealous) you can remove the protective paper. Once I had the paper off, I placed the led holders in thier sockets and stuck the LEDs in place. I then fit the mocked up control surface to the faceplace so that I could mark the perfboard to make some screwholes to hold the whole thing together. I then drilled the holes that I just marked. Once I got the screwholes in place I fit the screws and spacers onto the perfboard. At this point it was time to wire up power and midi to the MIDI CPUs.

First, I fit the male and female SIL headers togther (after breaking them down to the proper size of course), then I soldered the male/male headers to the MIDI CPUs and fit the male/female ones to the perfoard. Once all 3 MIDI CPUs were attached to the perfboard I connected the power on MIDI CPU 2 to the voltger reglator on MIDI CPU 1, MIDI CPUs 2 and 3 were done similarly. I then connected wires for the LEDs to thier respective connections on MIDI CPU 3 and the other end to the LEDs. I used some left over male/male SIL headers for the power on MIDI CPU 1 (since it powers the other 2) and MIDI on all 3 MIDI CPUs (as you can see in the image below).

And in this photo, you can see that I made sure that if I ever need to replace one of the MIDI CPUs, it will me fairly easy to do so.


Here you can see how I made sure I can disconnect each of the 3 MIDI CPUs from each other in case I need to ever reprogram one. There are headers for both power to MIDI CPU 1 (the first inthe chain) and MIDI in and out for each MIDI CPU. MIDI CPUs 2 & 3 are powered via the voltage regulators of MIDI CPUs 1 & 2, respectively.

At this point it was time to test my HEX code. I ran it by John on the Highly Liquid forums, and with a simple correction he said it looked good-to-go. I uploaded the code to each one, then wired up my first button, knob, and encoder. I tested each one to make sure they were wired correctly (they weren’t) then promply made my corrections. All that was left was to copy the wiring to the rest of the controls. Simple!

Lastly, I had to use a dremel to make the edges of the back panel thinner so that they would fit in the back slot of the KE-20 case. I also had to make a slight modification to the cae itself to fit the midi connectors. Once I did so, it fit like a glove, and my new MIDI controller was ready to button up and take on a test drive.

And the obligatory shot of the rat’s nest of wires. I accidentally, messed up the order of my controls when wiring this stuff up. Can you see where? If you look closely, you can see how I was able to get the back panel to fit in the slot on the KE-20 case.


Here you can see that I needed to make a slight modification to the KE-20 case to get the MIDI connectors to fit just right.

—————————————-

For anyone wanting to attempt this project, here’s my hex code for each MIDI CPU:
**********MIDI CPU 1**********

PIN 0 – Button – CC 40
PIN 1 – Button – CC 41
PIN 2 – Button – CC 42
PIN 3 – Button – CC 43
PIN 4 – Button – CC 44
PIN 5 – Button – CC 45
PIN 6 – Button – CC 46
PIN 7 – Button – CC 47
PIN 8 – Button – CC 48
PIN 9 – Button – CC 49
PIN 10 – Button – CC 50
PIN 11 – Button – CC 51
PIN 12 – Button – CC 52
PIN 13 – Button – CC 53
PIN 14 – Button – CC 54
PIN 15 – Button – CC 55
PIN 16 – slide pot – CC 30
PIN 17 – slide pot – CC 31
PIN 18 – slide pot – CC 32
PIN 19 – slide pot – CC 33
PIN 20 – slide pot – CC 34
PIN 21 – slide pot – CC 35
PIN 22 – slide pot – CC 36
PIN 23 – slide pot – CC 37

HEX CODE – (buttons function as toggle switches – momentary switch code is below)

F0 00 01 5D 04 01

00

00 01 56 00 28 00
01 01 56 00 29 00
02 01 56 00 2a 00
03 01 56 00 2b 00
04 01 56 00 2c 00
05 01 56 00 2d 00
06 01 56 00 2e 00
07 01 56 00 2f 00
08 01 56 00 30 00
09 01 56 00 31 00
0a 01 56 00 32 00
0b 01 56 00 33 00
0c 01 56 00 34 00
0d 01 56 00 35 00
0e 01 56 00 36 00
0f 01 56 00 37 00

10 00 04 00 1e 03
11 00 04 00 1f 04
12 00 04 00 20 05
13 00 04 00 21 06
14 00 04 00 22 07
15 00 04 00 23 08
16 00 04 00 24 09
17 00 04 00 25 0A

F7

HEX CODE – (momentary switch code)

F0 00 01 5D 04 01

00

00 00 4c 00 28 7f
00 01 4c 00 28 00
01 00 4c 00 29 7f
01 01 4c 00 29 00
02 00 4c 00 2a 7f
02 01 4c 00 2a 00
03 00 4c 00 2b 7f
03 01 4c 00 2b 00
04 00 4c 00 2c 7f
04 01 4c 00 2c 00
05 00 4c 00 2d 7f
05 01 4c 00 2d 00
06 00 4c 00 2e 7f
06 01 4c 00 2e 00
07 00 4c 00 2f 7f
07 01 4c 00 2f 00
08 00 4c 00 30 7f
08 01 4c 00 30 00
09 00 4c 00 31 7f
09 01 4c 00 31 00
0a 00 4c 00 32 7f
0a 01 4c 00 32 00
0b 00 4c 00 33 7f
0b 01 4c 00 33 00
0c 00 4c 00 34 7f
0c 01 4c 00 34 00
0d 00 4c 00 35 7f
0d 01 4c 00 35 00
0e 00 4c 00 36 7f
0e 01 4c 00 36 00
0f 00 4c 00 37 7f
0f 01 4c 00 37 00

10 00 04 00 1e 03
11 00 04 00 1f 04
12 00 04 00 20 05
13 00 04 00 21 06
14 00 04 00 22 07
15 00 04 00 23 08
16 00 04 00 24 09
17 00 04 00 25 0A

F7

**********MIDI CPU 2**********

PIN 0 – Encoder pin 1 – CC 60
PIN 1 – Encoder pin 2 – CC 60
PIN 2 – Encoder pin 1 – CC 61
PIN 3 – Encoder pin 2 – CC 61
PIN 4 – Encoder pin 1 – CC 62
PIN 5 – Encoder pin 2 – CC 62
PIN 6 – Encoder pin 1 – CC 63
PIN 7 – Encoder pin 2 – CC 63
PIN 8 – Encoder pin 1 – CC 64
PIN 9 – Encoder pin 2 – CC 64
PIN 10 – Encoder pin 1 – CC 65
PIN 11 – Encoder pin 2 – CC 65
PIN 12 – Encoder pin 1 – CC 66
PIN 13 – Encoder pin 2 – CC 66
PIN 14 – Encoder pin 1 – CC 67
PIN 15 – Encoder pin 2 – CC 67
PIN 16 – Encoder pin 1 – CC 68
PIN 17 – Encoder pin 2 – CC 68
PIN 18 – Encoder pin 1 – CC 69
PIN 19 – Encoder pin 2 – CC 69
PIN 20 – Encoder pin 1 – CC 70
PIN 21 – Encoder pin 2 – CC 70
PIN 22 – Encoder pin 1 – CC 71
PIN 23 – Encoder pin 2 – CC 71

HEX CODE

F0 00 01 5D 04 01

00

00 00 14 00 3c 11
01 00 14 00 3c 11
02 00 14 00 3d 12
03 00 14 00 3d 12
04 00 14 00 3e 13
05 00 14 00 3e 13
06 00 14 00 3f 14
07 00 14 00 3f 14
08 00 14 00 40 15
09 00 14 00 40 15
0a 00 14 00 41 16
0b 00 14 00 41 16
0c 00 14 00 42 17
0d 00 14 00 42 17
0e 00 14 00 43 18
0f 00 14 00 43 18
10 00 14 00 44 19
11 00 14 00 44 19
12 00 14 00 45 1a
13 00 14 00 45 1a
14 00 14 00 46 1b
15 00 14 00 46 1b
16 00 14 00 47 1c
17 00 14 00 47 1c

F7

**********MIDI CPU 3**********

PIN 0 – Encoder pin 1 – CC 72
PIN 1 – Encoder pin 2 – CC 72
PIN 2 – Encoder pin 1 – CC 73
PIN 3 – Encoder pin 2 – CC 73
PIN 4 – Encoder pin 1 – CC 74
PIN 5 – Encoder pin 2 – CC 74
PIN 6 – Encoder pin 1 – CC 75
PIN 7 – Encoder pin 2 – CC 75
PIN 8 – Encoder pin 1 – CC 76
PIN 9 – Encoder pin 2 – CC 76
PIN 10 – Encoder pin 1 – CC 77
PIN 11 – Encoder pin 2 – CC 77
PIN 12 – Encoder pin 1 – CC 78
PIN 13 – Encoder pin 2 – CC 78
PIN 14 – Encoder pin 1 – CC 79
PIN 15 – Encoder pin 2 – CC 79
PIN 16 – Encoder pin 1 – CC 80
PIN 17 – Encoder pin 2 – CC 80
PIN 18 – Encoder pin 1 – CC 81
PIN 19 – Encoder pin 2 – CC 81
PIN 20 – Encoder pin 1 – CC 82
PIN 21 – Encoder pin 2 – CC 82
PIN 22 – Encoder pin 1 – CC 83
PIN 23 – Encoder pin 2 – CC 83

HEX CODE

F0 00 01 5D 04 01

00

00 00 14 00 48 11
01 00 14 00 48 11
02 00 14 00 49 12
03 00 14 00 49 12
04 00 14 00 4a 13
05 00 14 00 4a 13
06 00 14 00 4b 14
07 00 14 00 4b 14
08 00 14 00 4c 15
09 00 14 00 4c 15
0a 00 14 00 4d 16
0b 00 14 00 4d 16
0c 00 14 00 4e 17
0d 00 14 00 4e 17
0e 00 14 00 4f 18
0f 00 14 00 4f 18
10 00 14 00 50 19
11 00 14 00 50 19
12 00 14 00 51 1a
13 00 14 00 51 1a
14 00 14 00 52 1b
15 00 14 00 52 1b
16 00 14 00 53 1c
17 00 14 00 53 1c

F7

—————————————-

Here is the Reaktor ensemble and FL dashboard I’m controlling. LINK To use these in FL studio, add an FL dashboard to your project and open the preset state file as a preset from that dashboards menu (little triangle in the upper left of the dashboard). Set the output port on the dashboard to an unused channel (example: 20). Add Reaktor to your FL project and import the ensemble included in the .zip. Then click the gear in the upper left corner of the Reaktor instance (next to the little triangle) and set the input MIDI port to the same as the output port for the dashboard (example: 20). Now, when you manipulate the dashbaord controls, the corresponding controls on the Reaktor ensemble UIs should respond in kind. Now, map the controls on the dashboard to your MIDI controller in the usual way.

Feel free to shoot me a note for any additional details. I’m sure I left out a few things.

Leave a Reply

%d bloggers like this: