Tips on building a SysEx-sending knob box/controller?

I have a Roland Alpha Juno 2 on the way, and I want to build something like a clone of the PG-300 programmer so I can control it via knobs and faders. As far as I understand, I can’t use a normal knob-box PCB since they typically only send CCs, but the Alpha Junos require SysEx control.

I came across this video:

And something like that is what I am aiming for. My idea would be more compact, but I’d still like to use faders for certain parameters, and at this point I’d like to have a controller for each available parameter like the PG-300.

Is SysEx any harder to deal with than MIDI CCs?

It looks like the PG-300 has 36 controls, many of which aren’t faders but are actually multi-position switches. I like how the person in the video solved this by using a single button to scroll through them.

I know another option is the BCR2000 but I would prefer to have something purpose built if it isn’t too difficult.


MIDIbox NG can do all of that and then some!

Sending sysex message a little more involving than sending a CC, but not much. In addition, for Roland devices you typically need to calculate and send check sum. However all this is pretty straightforward.

Did you consider CC to Sysex translator? Normal knob box sends CCs to something like MidiBUD with a special firmware that receives CCs and translates them to Roland sysexe messages? I wanted to build something like this and control it from Roland GAIA which has all the knobs and sliders for subtractive synth control, but useless sound engine, however other projects got me distracted.

Both of these are giving me some things to research. I admit that I find MIDIbox to be somewhat daunting, or at least it seems there is a steep learning curve.

I didn’t think about a translator yet. I don’t have much in the way of controllers right now so I would still need to build something from scratch or buy a CC knob box to modify, but I am not ruling anything out.

I did, however, just come across this!
MIDIbox based JuControl

The main difference is that Ju Control uses encoders, but my naive brain presumes it wouldn’t be too difficult to use ‘AIN’ instead of ‘DIN’ modules for some of the inputs and then modify the existing code to read pots instead of encoders? I don’t particularly want or need the additional LCD screen which would simplify copying this project a little bit.

The big downfall for me is that the midibox code is more or less open source, so the barrier for entry is decently high, since knowledge is assumed.

I’d wager this is why we don’t see that many projects involving their stuff, since it has a steep learning curve(but once you have mastered one, the rest should be really easy), and looks a lot like a big fort from the outside.
With my limited interaction with the MBers, they have seemed more than friendly enough, I just haven’t gotten around to anything more advanced than a GM5x5x5 midi interface yet, although I do have three boards from the encoder+LED driver board run… Actually looking to do a project similar to yours, but with an Akai Miniak, since its editing is extremely bad. :frowning:

joshuagoran The way the Alpha Juno’s and the MKS-50 deal with SysEx is really very straightforward. There’s just a single message (it’s called Individual Tone Parameter in the MIDI Implementation documentation at the back of the manual) you send for each parameter change where you basically just put in the parameter and value numbers. There’s no checksum calculation involved askvitekp suggested.

The only thing you need to do is send out what’s on this line and plug in the parameter number and value, both listed in the right-side column on page 48 of the manual (you can ignore the parameter.type in that line of my code and just put in 0x20 as the Juno’s deals with tone parameters only).

You could try with the OctoPot Rev2 and write your own firmware. If interested i have a Prototype Board available……

Not DIY, but for me the Novation Zero SL MkII is the perfect controller for the Alpha Juno’s. Works out of the box, because they have a factory template for the MKS-50.

i second fcd72.

i build a arcade button midi controller and a whole bunch of other picaxe stuff since fcd27 introduced me to picaxe.
i have tried arduino aswell but i find it even easier and i get faster results with picaxe.
looking at the octopod rev1 hardware and firmware helped me get started a lot.

@fcd72 How many prototype boards do you have available?

Enough but the firmware is far from being finished….

@fcd72 Can’t promise I’ll have a lot of time for it, but I’m happy to help out with firmware development. The only thing needed is that weird USB-to-minijack cable, right? At the very least I’d like to write a simple Alpha Juno editor based on the one I’ve already have running on node.js.

You can get a cable here and you will need a 40x2 - the rest is strictly available from the big R. Id suggest you get some 28x2 and 1 or 2 20x1, too….

Now I have many options! I tried all the software editors I could find with no satisfactory results on a Mac. Either crashes (JunoControl), doesn’t auto update on screen with patch changes (AU-300).

@fcd72: would Octopot need separate firmware for SysEx use, or would it be able to switch modes between CC and SysEx sending so I could use it for my SixTrak as well?

Problem is you are limited to 4k code size. Sounds tiny but PicAxe Basic is a mighty language, so you are well able to cram the OctoPots functionality in this. Albeit it will not be enough to run 2 totally different Softwares for CC and SYSEX (sending these is not the point, making it fully editable is the problem for SysEx…)

So you could use the OctoPots Framework (Display Drivers, UI Drivers for Pots, LEDs, Buttons, MIDI Merging and thru) and write your own firmware.

I think you question aimed to if you need to reflash the Firmware each time you want to use it either as CC or dedicated SysEx controller, right?

As the PicAxe has 4 different separate Memory Slots for 4 Different Programs ill include a Bootloader routine with which you can easily switch between the 4 Slots on Startup/Reset. Slot 0 will run the OctoPot Firmware and you are free to run whatever you like in the remaining 3 Slots.

If you promise to share code and ideas with thijs (who seems to volunteer to to do a aJuno SysEx Editor) ill send you a ProtoBoard - which would be great as i have both Synths :wink:

I’ll work on this in the open on GitHub so sharing is fine. Just don’t expect any miracles; I won’t have a huge amount of time to work on this in the coming months.

@thijs, joshuagoran
i need shipping infos :wink:

@fcd72 Sending simple SysEx such as used on these Junos should be pretty easy to make editable since these messages are mostly static byte arrays with only a single dynamic entry that has to be updated when you turn the pot.

Problem is making the whole sysex string editable in a way thats fun to use on a 2x16 Display and fits in the firmware size. The UI on the Octopot is clearly designed to tweak, not to program the unit.
A fixed AlphaJuno / SixTrak Editor should be no problem at all.

@fcd72 I agree that it would be hard to design a nice UI for this.