Mapping a MIDI Controller for JD-Xi
Mapping a MIDI Controller for JD-Xi
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.
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.
Re: Mapping a MIDI Controller for JD-Xi
Which parameters of the JD-XI do you want to map to the controls of the A500?
Re: Mapping a MIDI Controller for JD-Xi
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?
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?
Re: Mapping a MIDI Controller for JD-Xi
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.
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.
Re: Mapping a MIDI Controller for JD-Xi
Wow.
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.
-Andy.
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.
-Andy.
- brakjoller
- Posts: 56
- Joined: 11:33, 16 January 2016
- Location: Gothenburg, Sweden
Re: Mapping a MIDI Controller for JD-Xi
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).andypandy wrote:Wow.
This. Is. Amazing!!
It's so clear and easy to follow.
...
You are a hero.
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!
/Mathias
Re: Mapping a MIDI Controller for JD-Xi
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:
http://i.imgur.com/XiQtPlB.jpg
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
http://imgur.com/0ou0Ie5
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
http://imgur.com/HmXuodf
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!
http://imgur.com/c9hPoVI
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!
http://imgur.com/7Q6I1Aa
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
http://imgur.com/z4RDNp2
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
http://imgur.com/9GDAMKX
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.
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:
http://i.imgur.com/XiQtPlB.jpg
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
http://imgur.com/0ou0Ie5
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
http://imgur.com/HmXuodf
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!
http://imgur.com/c9hPoVI
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!
http://imgur.com/7Q6I1Aa
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
http://imgur.com/z4RDNp2
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
http://imgur.com/9GDAMKX
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.
Re: Mapping a MIDI Controller for JD-Xi
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.
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.
- Attachments
-
- A500Pro_JDXI.zip
- (24.05 KiB) Downloaded 506 times
Re: Mapping a MIDI Controller for JD-Xi
LARacer,
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.
Peace,
Donovan
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.
Peace,
Donovan
Re: Mapping a MIDI Controller for JD-Xi
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.
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.
Re: Mapping a MIDI Controller for JD-Xi
Awesome info. I was shopping for controlling my jd xi and I was pondering between bcr 2000, arturia beatstep Pro and a800 pro.
I guess it ll have to be the a800.
Do you still use it after 5 years?
Can you please guide me how to implement it?
Thanks
I guess it ll have to be the a800.
Do you still use it after 5 years?
Can you please guide me how to implement it?
Thanks
Re: Mapping a MIDI Controller for JD-Xi
Also looking for a controller for my JD-xI
Do you guys think a novation sl mk2 or a novation remote would be able to control the jd-xi by sending the right sysex messages?
I like the A800 but the novation has fatar keybed and better integration with Live which i also use.
Do you guys think a novation sl mk2 or a novation remote would be able to control the jd-xi by sending the right sysex messages?
I like the A800 but the novation has fatar keybed and better integration with Live which i also use.
Re: Mapping a MIDI Controller for JD-Xi
Hi andyandypandy wrote: ↑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:
http://i.imgur.com/XiQtPlB.jpg
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
http://imgur.com/0ou0Ie5
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
http://imgur.com/HmXuodf
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!
http://imgur.com/c9hPoVI
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!
http://imgur.com/7Q6I1Aa
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
http://imgur.com/z4RDNp2
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
http://imgur.com/9GDAMKX
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.
Still waiting for those videos of your amazing rig :)
Also could you give us a look at your control map code?
Thank you
Thank you
Re: Mapping a MIDI Controller for JD-Xi
In the end, i am doing it myself, first from the A800 controller.
Big task for me but learning on the way and hoping to sell a few to support my work.
Are there still people interested?
Big task for me but learning on the way and hoping to sell a few to support my work.
Are there still people interested?
Re: Mapping a MIDI Controller for JD-Xi
Yep, there’s definitely still interest. I have Roland A-300 and more midi control maps would be great. Please keep us posted here
on your progress.
on your progress.