New Tool (2.8): Jx Programmer

Note! JX Programmer is now replaced by Guru

Guru thread

[s]I have made a tool for editing sounds on the Roland synthesizers JX-8P, MKS-70, and JX-10 (Super JX).

Not of much use unless you have any of those synths, but a lovely tool if you have one. With Renoise MIDI mapping niceness and patch saving.


This looks really nice and with a clear UI. Well done!

Any chance of a full screenshot? There only appears to be cropped ones on the linked page.

Yo! Thanks.

The UI was quite a struggle. At first I tried to make it look a bit more like Rolands hardware programmer PG-800 (Picture). With vertical sliders and knobs, but it turned out to be a headache trying to understanding the layout principles of ViewBuilder enough to do something else than stuff that “looks Renoise” (vertical sliders ;) ).

Added a screenshot to the page now. And here it is:

Hey, looks really great!

I have an mks-70. Will test this tool with it soon :)
Did notice you have named this a “patch” while in the old Roland language this is actually a “Tone”?
The MKS-70 is like two jx-8s where the patch contains one or two tones and other patch data like tone crossfading, split etc.
Not a big deal. Just mentioning something you probably already know…

There was a bug in earlier firmware versions of mks-70 preventing you from editing both tones in a patch from midi/pg at the same time. You had to manually change between Tone A and Tone B for editing on the front panel. This was fixed in the last 1.08 update.
So it is possible to edit both tones at once now.

Do you have a jx-10/mks-70 yourself?

Wow, really impressive.
Unfortunately I do not own one of these synths.

But I wonder if it is possible to create a tool concerning a general approach for controlling synths. A tool where I can load a custom xml-template or similar of a special hardware synth; the tool creates then a gui automatically based on that template.
Just similar to Duplex.

Thanks, well actually I only have th JX-8P, so I just assumed jx-10/mks-70 would work the same :slight_smile:

But with your help we can make it work!


Thanks! That’s a really good idea!

I think there are other tools out there that kinda does this or similar stuff, for example this VSTi(?):

But if this tool would be tightly integrated with Renoise, so that you can use commands, automation etc, maybe storing the patches in the song then it would become something you won’t find elsewhere.

The sysex library tool i likely one of building blocks for this, and probably duplex. Anyway, I’m not the person to do it, so anyone feel free to pick it up :slight_smile:


I’ll be glad to help. If I can.

I just tested it with my mks-70. The sysex do get sent. But the synth does nothing with it.
I also have a kiwitechnics patch editor for this synth (as well as the pg800 laying around here somewhere), and with that controller it do respond to sysex perfectly. So I’m not doing something wrong here it seems.

So I did a quick monitoring of the sysex being sent, tweaking the filter cutoff to zero:

Renoise JX Programmer:
SYSX: F0 41 36 00 21 20 01 22 00 F7

Kiwitechnics Patch Editor:

  • Tweaking Tone A only mode:
    SYSX: F0 41 36 00 24 20 01 22 00 F7

  • Tweaking Tone B only mode:
    SYSX: F0 41 36 00 24 20 02 22 00 F7

In additional the kiwitechnics also have a tweaking both tones mode, just sending sysex for both at once, quite handy.

So hopefully it seems like this could be an easy fix? :)

Edit: Ok, lazy me did have a look and changed the sysex in the script from 21 to 24, and success!

So here are some obvious suggestions:

Make a toggle for Tone A, Tone B, and Both editing.

Great tool! Having fun right now :walkman:

seems like a lovely tool indeed !

i have a JX-8P with PG-800 controller, can’t wait to try this tool out

thanks a lot for sharing this tool :)

Allright, so 21 / 24 must be the “model id”.

Do you mean the other command toggle which voice is being edited?

Sure, toggle button will be great. And maybe a dropdown for selecting model, or send to models.

Also maybe the xml patch/tone files (maybe I should rename them) should save both voices.


Yo. Hmm never thought of that scenario, this tool is made as a substitute for us who dont have the PG-800. Don’t know if you can midi map those sysex messages, or if the PG-800 is even sening MIDI at all :-/

But do let me know.


Could perhaps be switching between two “screens”. One Tone A and another Tone B. When using Both you perhaps see the last Tone screen you used, but any new edits will affect both tones.

In the JX10/mks70 the “Patch” is the two tones (sometimes also called upper/lower tones) and a bunch of other parameters.
Here is a picture of the “Patch” editor from Midi Quest:

3130 mks-70 patch editor.gif

And some additional info from Midi Quest about the MKS-70:

Ok, starting to get a grip of this somewhat now after analyzing messages and collecting and merging info from various blogs and manuals.

So in this message:

F0 41 36 00 21 20 01 22 7F F7

F0 is start of sysex
41 is manufacturer id for Roland
36 is “Operation code”. 36 = individual parameters, 35 = all parameters (used to send the values of all parameters at once)
21 is the model. 21 = JX8P, 24 = JX10/MKS70
20 is “level”. 20 = tone, 30 = patch
01 is “group”. 01 = tone A, 02 = tone B
22 is the parameter
7F is the value
F7 is end of sysex

The JX8P also uses the term “patch”. The patch is bank and tone number plus all the parameters/settings that are not the tone: bend range, portamento, poly/unison/solo mode etc.

So, then I need to figure out how to implement this in the tool.

If we look at the PG-800, it has no patch editing features, I guess you select which tone you are currently editing in the synth?

How about patch for waldorf micro q ???))))) thnx

Yes, the PG is limited as you can only edit a single tone. All other parameters you have to program on the synth it self, or use software/sysex.
I know the Patch/Tone can be confusing, because of the limitations synths had at the time, with midi just being invented and the way they needed to save on expensive memory and hardware cost in general.

So all patches in the patch bank share the same tone bank. Changing for instance tone #12 in the tone bank memory will also change all other patches that use this tone.
So it’s always a good idea to save entire banks when working with these old Roland midi analogs. You have to keep track of what tones and patches you edit within a bank or you can easily unintentionally change common used Tones.

If you just want to ‘replace’ the PG, then the current JX Programmer will do just fine. However it would be really great to be able to edit the Patch parameters as well from the Renoise JX :)

Ok I see, so in case of the JX10 the entire “patch” makes the resulting “sound”, whereas the with the JX8P the “sound” is pretty much the “tone”.

So for the JX10 you want load and save presets that are complete and not just 50% of the “sound”, though being able to edit just the tone, PG-800 style, is still good.

Since I don’t have a JX10 I will have a bit trouble making that implementation without seeing the result, and it also turns in to a bigger project.

So, for now, I will make the ability to select in the UI which tone you are editing A or B, and also to load and save tone A or B as a file.

So, the possibility to save/edit entire patch, selection for synth model and different UI, are future improvements.

But then maybe, as Cie suggested, make a “Duplex”-like tool for mapping synths is the best idea. I’ve been thinking about that, it’s actually a cool idea. Maybe an XML-file to decribe the synth.


The ‘Duplex-style synth mapper’ idea has been floated around before (mxb had a look at it once), I hope you do have a go at it Cornbeast, it would be a fantastic tool!

Thanks for that link to that interesting project ctrlr. I had a look at this some years ago, but it definately evolved. Basically it is exactly what I meant I think. I will try it.
A renoise native tool would have its advantages though.

Would be great.

Added support for JX-10/MKS-70 and editing of two tones. Renamed patches to tones, since it was confusing.

Thanks to Pysj for shedding light on and testing JX-10.


is there any chance you could do AJ1/AJ2?

Nothing planned right now, but not impossible in the future. I am thinking about creating this universal synth mapper tool… but nothing planned yet.

But you could easially do it yourself by copying my code an replacing the values, I can point you in the right direction.