DivingBoard - a DIY hardware MIDI controller I made for the JD-Xi

Forum for the JD-Xi Keyboard.
Post Reply
Penguinator
Posts: 4
Joined: 18:15, 21 October 2022

DivingBoard - a DIY hardware MIDI controller I made for the JD-Xi

Post by Penguinator »

It seems that making control surfaces for the JD-Xi is in vogue- hopefully Roland take notice of this and give us better UIs in the future...

Anyway, I thought it was time to add mine to the bunch. This is the DivingBoard (both in theory and in practice):
DivingBoard.png
DivingBoard.png (1.85 MiB) Viewed 249 times
It's a USB MIDI controller powered by a Raspberry Pi and an Arduino Nano. It can control any parameter on the JD-Xi (CC and Sysex) through a simple 'learn control' procedure that requires no MIDI knowledge whatsoever, and has a customisable layout of controls to suit multiple playing/recording/performing styles and situations. Banks of up to eight controls are stored in a system of directories, and are easy to configure and scroll between depending on what you need. For example, you might want to have access to eight parameters for oscillator control to make detailed changes, or you might want to have just the waveforms and tunings of each oscillator on a single page for quick creation of thick tones. The malleable layout of the DivingBoard lets you do both.

This design seeks to solve problems I've seen with others on this forum and elsewhere:
  • The JD-Xi Manager is fantastic, but being tethered to the computer takes the physical immediacy out of playing.
  • The A-500 Pro does the job and is great if you want a second keyboard, but requires futzing about in software, and a decent investment in gear.
  • Scraunch has the coolest name and adapts existing gear well, but still requires having the gear and spending time setting the software up.
  • The compact Arduino-powered controllers made by Efren are also fantastic, but the controls are set- if you want any control not listed on the front panel, it's back to menu diving. Also, he doesn't seem to be making them anymore.
My design aims to solve all of these problems- the physical controls give you the feeling of playing an instrument rather than using a DAW, the 'learn control' function takes the hassle out of programming, and the LCD means that controls aren't fixed- whatever you want to control can be put wherever you want to put it. The whole thing can be built from scratch for around £65 at the time of writing, requiring only some drilling, soldering and hot-gluing. All of the code I've written is available at my website, which I've linked below.

Here is a demonstration video showing my controller in action:
https://youtu.be/TDUP9Bj4wVw?si=0y3Z2i_vz3JxJllh

Here is my website, with more information (still adding stuff here- build log and DIY guide planned):
https://penguinatron.github.io/DivingBoard.html

The principle of the 'control learning' process is that the JD-Xi has an option to send all parameter changes as Sysex messages (set 'Tx Edit Data' to 'On'). The DivingBoard records these messages and sends them back to the synth in what is essentially a replay attack. Therefore, no detailed breaking down of MIDI messages is required to get results; so long as we have a complete list of the 128 messages used to set a parameter to one of its values, we can just pick the appropriate message to send to the synth, and it'll do what we ask. No checksum calculations are required, as the original message we got already had the correct values. All of this applies to the non-standard parameters too- Delay Time, which can be anything from 1-2000ms, works with this just fine- it's just that our list of messages is longer. Furthermore, as this implementation doesn't require anything specific to the JD-Xi, it could potentially work with other synths with little to no modification to the internal logic. All of this is explained in more detail on my website (link above)

I'm quite proud of what I've managed, but also aware that what I've made is a basic prototype (future goals include increased efficiency through code refactoring, and a desktop based editor to allow editing and deleting of learned controls). If anyone has feedback or criticism, let loose- I want to improve this thing as much as possible, and then hopefully work out a way to share it with everyone who suffers from menu diving.

Thanks for reading :)
Post Reply