Mapping a MIDI Controller for JD-Xi

Forum for the JD-Xi Keyboard.

Mapping a MIDI Controller for JD-Xi

Postby andypandy » 03:33, 17 October 2016

Hi. First time poster here!

I am in need of a hero. Someone who looks at a MIDI Implementation chart and laughs at the simplicity of it. Because whenever I look at it.... I feel like a helpless rowboat rocking in a stormy sea of hexidecimals.

Seriously... I have no idea what I'm doing here.

The idea was simple. Bought a Roland A-500 Pro to use as a MIDI Controller to use as an extension for my JD-Xi. I love the synth and what I can do with it, but I wanted larger keys and to map out some of Tone edits that you can only access by diving into the menu.

I took a crack at it, and two days of serious head-scratching later I feel like I've come no closer to figuring out how to assign functions from my JD-Xi to the knobs, sliders, and buttons on my A-500.

Honestly I'm not even sure where to start. I've been trying to learn how to work with Sys Ex messages, and have been trying to figure out the correct address, and calculate the checksum. To be honest, I'm not even sure if this is the right direction. I find the manual instructions in both the A-500's manual and the JD-Xi implementation guide to be seriously convoluted and ultimately indecipherable.

So I really need some help from someone who knows what they're doing. Maybe pointed in the direction of a really straight-forward tutorial, or even just a step by step example through assigning just ONE function so I can replicate the process for the other ones.
Posts: 17
Joined: 01:17, 12 October 2016

Re: Mapping a MIDI Controller for JD-Xi

Postby baz55 » 18:36, 17 October 2016

Which parameters of the JD-XI do you want to map to the controls of the A500?
Posts: 105
Joined: 19:13, 26 July 2015

Re: Mapping a MIDI Controller for JD-Xi

Postby andypandy » 19:44, 17 October 2016

Well, the idea is to split the A500 to serve as a controller for both Digital Synth 1 and Digital Synth 2 and use the JD-Xi for the Analog part. So I'd like to include parameters on the A500 to handle simple controls, but for each separate part. So these are some of the parameters I want:

Digi Synth 1: Volume(or Amp/env level), Cutoff, Resonance, Modulation, Mono/poly switch/ portamento switch

Digi Synth 2: Volume(or Amp/env level), Cutoff, Resonance, Modulation, Mono/poly switch/ portamento switch

This way I can split the A500 and control both parts separately. Can it be done?
Posts: 17
Joined: 01:17, 12 October 2016

Re: Mapping a MIDI Controller for JD-Xi

Postby baz55 » 01:25, 18 October 2016

JDXi Parameter change sysex strings are built as follows (all sysex values in hexadecimal):

Header (8 bytes), this will allways be the same unless you change the Rx/TX Channel in your JD-Xi:
F0 41 10 00 00 00 0E 12

Address (4 bytes), this is the 'address' of the parameter you want to change as listed in the MIDI Implementation Guide

Data (1-4 bytes), this is the actual value you want to set the parameter to, most parameters have only 1 byte of data but a few have 2 or 4 bytes (again this is indicated in the MIDI Implementation Guide).

Footer (2 bytes), this contains the checksum and the end of sysex marker. Thankfully the JD-Xi also accepts sysex strings with incorrect checksum (at least firmware 1.1 does, I haven't tried 1.5 yet) so you can just set the checksum to zero:
00 F7

The address for Digital Synth 1 parameters is:
19 01 xx yy

'xx' is as follows:
00 for the common part parameters
20 for partial 1 parameters
21 for partial 2 parameters
22 for partial 3 parameters
50 for the modify part parameters

'yy' is the actual parameter number

The address for Digital Synth 2 parameters is:
19 21 xx yy
see above for 'xx' and 'yy'

Some examples (these contain the correct checksums, not zero):

set Digital Synth 1 AMP/ENV Level of Partial 1 to 127 (7F hex):
F0 41 10 00 00 00 0E 12 19 01 20 15 7F 32 F7

set Digital Synth 2 Resonance of Partial 1 to 64 (40 hex):
F0 41 10 00 00 00 0E 12 19 21 20 0F 40 57 F7

I hope this helps you to understand JD-Xi parameter change sysex strings better.
With regards to the A500, I have no experience with it so I have no idea how you program these strings for the JD-Xi into the A500.
Posts: 105
Joined: 19:13, 26 July 2015

Re: Mapping a MIDI Controller for JD-Xi

Postby andypandy » 04:00, 18 October 2016

This. Is. Amazing!!

It's so clear and easy to follow. Thank you for breaking it down for me. Before seeing this I found that many of the basic controls can be done via Control Change mapping. Parameters such as volume, modulation, cutoff, resonance, etc. But There are more complex things in the JD-Xi That will need sysex to run on the A-500.

So far I've been having great success with the A500. I can essentially play all four parts at the same time by splitting up the board and assigning the drums to the dynamic pads. Now with your sysex breakdown I should be able to add in the more advanced functions.

Thank you so much again for this guide. Definitely going to save it and refer it it frequently!

You are a hero.

Posts: 17
Joined: 01:17, 12 October 2016

Re: Mapping a MIDI Controller for JD-Xi

Postby brakjoller » 22:32, 18 October 2016

andypandy wrote:Wow.
This. Is. Amazing!!

It's so clear and easy to follow.
You are a hero.

Could not agree more. I had the same problem earlier this year when I bought an old MIDI controller to control the JD-Xi (there are some posts here from that time, when I was still young... :) This post will be a great help to others, I think (I plan to document my "little" MIDI controller project in detail as well sooner or later, to give back some to the community).

The MIDI implementation chart is not for mortals, as I see it. Most of the details are there, but it is too cryptic for someone that has not fiddled with MIDI before (that, or I'm simply too slow.) Especially the SysEx parts are hard to understand. One of the things that I was most confused with was how the addresses were built up in several steps, and this is much more well described above. I got it figured out eventually though and now it's encoded in firmware of my MIDI Fly :)

Thanks, again, baz55!

User avatar
Posts: 47
Joined: 11:33, 16 January 2016
Location: Gothenburg, Sweden

Re: Mapping a MIDI Controller for JD-Xi

Postby andypandy » 06:35, 8 November 2016

An Update

So... After doing a little bit of head scratching and after getting a lot of help from this forum and the Roland customer support line, I've come up with a pretty nifty little two-tier rig for my JD-Xi.

Links are to images:

I discovered that by hooking up to a MIDI controller (I used a Roland A-500 PRO), you can program your knobs and faders to do some really cool things that you can't do on the surface of the JD-Xi on its own, so I thought I would share with you guys what I've learned:

Velcro and Custom Labels
I went into Adobe Illustrator and whipped up some custom labels for my board, laminating them and attached velcro so I can switch them out when I want to make a new control map for my MIDI board (the A-500 lets you switch between multiple maps easily.)

Layering and Splitting Parts
The A-500 Pro lets me choose how and where to split my 45 keys to play whichever part I want. My current setup has the board split between Digital Synth Parts 1 and 2. By using the Dual function I can play both Digital Synth parts at the same time, which can lead to new and interesting sounds that I couldn't play before.

Volume faders!
Now I can control the volume of each part as I play any program, which is great to really customize the sound (Especially for layering the different parts) and get creative with your pattern sequencer on the fly.

Cutoff Knobs for the Digital synth AND DRUMS!
I've assigned three knobs for Cutoff on my MIDI board, so if I use the Analog part on the JD-Xi itself, I can essentially control cutoff for all four parts at once.

EVEN BETTER, I can control the cutoff for the ENTIRE drumkit, which = some hella-sweet filter sweeps for your drum section as the sequencer plays.

Dynamic Pads
The A-500 has 8 pads that are perfect for assigning drum hits that you might want to sprinkle in at a moment's notice. So with this and the Split function, I could play all 4 parts at once... if I had enough hands to do that!

Still so much more to Learn/Try

While what I have so far is a big improvement on functionality, I still haven't mastered how to get SysEx to work or program more complex control functions. But I've learned a lot and look forward to getting even more out of my Roland in the future!

I might start recording videos for Youtube to show the rig in action. So more to come.
Posts: 17
Joined: 01:17, 12 October 2016

Re: Mapping a MIDI Controller for JD-Xi

Postby LARacer » 19:17, 28 October 2017

Hello fellow JD-XI users.

I had a really hard time setting up a midi controller with sysex messages for the JD-XI. I'd never done anything like this before and didn't even know a sysex message was a thing until I bought a Samson Graphite 49 midi controller and learned it couldn't send one. So I sent it back and bought a BCR2000, but that just kept malfunctioning, so I sent it back too.

Then, finally, I bought an A-500Pro, and it worked like a charm. Of course, I had to learn how to decipher the JD-XI midi implementation manual, which was really easy. Not. So I figure since I went to all the trouble, I'd post my final implementation here. Attached is a zip file that contains both the .mid files, which can be loaded directly into the A-Pro editor, and also .html files that show the sysex messages in case someone uses a different controller but still wants to see what I did.

As you will be able to see, there are 9 control maps. Here's what they do:
1-3: for editing digital synth tone 1, parts 1-3
4-6: for editing digital synth tone 2, parts 1-3
7: for editing Analog synth tone
8: for editing digital synth tone 1, all parts combined
9: for editing digital synth tone 2, all parts combined

I haven't messed with editing the drums using the A-500Pro yet.

Hopefully this helps someone. I wish something like this had existed when I was googling for answers. I welcome any suggestions for improvements on this implementation since I'm a total amateur.
(24.05 KiB) Downloaded 29 times
Posts: 2
Joined: 15:58, 28 October 2017

Re: Mapping a MIDI Controller for JD-Xi

Postby DRockstar » 02:36, 30 October 2017

Just wanted to say thank you for your efforts here. I originally assumed that my trusty Novation ReMOTE 49 MK2 controller would work for the JD-Xi, but it can't handle sysex beyond 15 bytes. I am now seriously considering the the a500 Pro controller just for sysex, since this seems to be the only keyboard around that will support the right messages with the right length.
Anyway, I know the amount of effort it takes to do this mapping. Thank you for sharing.


Posts: 4
Joined: 13:49, 11 March 2017

Re: Mapping a MIDI Controller for JD-Xi

Postby LARacer » 05:40, 30 October 2017

Thanks Donovan. I appreciate the feedback.

I'm already finding mistakes in my maps, but maybe I'll post corrections as I find and debug them.

I have to say, the A500Pro is really a good pair to the JD-XI.
Posts: 2
Joined: 15:58, 28 October 2017

Return to JD-Xi Keyboard

Who is online

Users browsing this forum: No registered users and 1 guest