Talk to other MIDI Designer users about MIDI Designer, iOS MIDI and related topics. Or share layouts, pages, and ideas.

Also check out the Facebook Group.

Of course, if you want to send us an email, feel free.

MIDI Designer
Design your perfect MIDI controller for iPad, iPhone and iPod touch.
How to Send Roland JX-305 "nibbles" 2 values in sysex message - MIDI Designer Q&A

How to Send Roland JX-305 "nibbles" 2 values in sysex message

+1 vote
asked Feb 23, 2015 in Advanced by async (130 points)
First thing to do is put learn those two commands on two buttons and then hit them sequentially, or have MD do it for you by grouping them under a supercontrol button. Use no 'V' for this test.

Then we can see if they actually mean something.
Thank You for the quick reply.

I gave it a try and it works, I made a super control button that activates two other buttons, one for each sysex string.
Hitting the super control always gets me back to the same waveform value so that works as expected.It seems you need both strings as without the second string you cant access the full range of values. Hitting each button on its own will also change the waveform to its own value.

So how would I then set this up on a slider for example to be able to scroll between waveforms?

Thanks again for helping me with this.

1 Answer

+1 vote
This is a mathematical trick by Roland. I don't know why they do it like that, but I guess they have a reason. bbbb can have a range from 0-15. aaaa is aaaa times 128 in which aaaa is a number from 0 to 15. So aaaa will have a multiple of 128 and bbbb will have a range of 0 to 15

So basicallly you will have sets of ranges

First set is 0-15

Second set is 128-143

Third set is 256-271

Etc

 

So you need to do the following:

 

The V in your sysex needs to be 2 bytes.

Then copy and paste the following list into your Used Named Ticks->Edit menu.

 

0 1 1
1 2 2
2 3 3
3 4 4
4 5 5
5 6 6
6 7 7
7 8 8
8 9 9
9 10 10
10 11 11
11 12 12
12 13 13
13 14 14
14 15 15
15 16 16
128 17 17
129 18 18
130 19 19
131 20 20
132 21 21
133 22 22
134 23 23
135 24 24
136 25 25
137 26 26
138 27 27
139 28 28
140 29 29
141 30 30
142 31 31
143 32 32
256 33 33
257 34 34
258 35 35
259 36 36
260 37 37
261 38 38
262 39 39
263 40 40
264 41 41
265 42 42
266 43 43
267 44 44
268 45 45
269 46 46
270 47 47
271 48 48
384 49 49
385 50 50
386 51 51
387 52 52
388 53 53
389 54 54
390 55 55
391 56 56
392 57 57
393 58 58
394 59 59
395 60 60
396 61 61
397 62 62
398 63 63
399 64 64
512 65 65
513 66 66
514 67 67
515 68 68
516 69 69
517 70 70
518 71 71
519 72 72
520 73 73
521 74 74
522 75 75
523 76 76
524 77 77
525 78 78
526 79 79
527 80 80
640 81 81
641 82 82
642 83 83
643 84 84
644 85 85
645 86 86
646 87 87
647 88 88
648 89 89
649 90 90
650 91 91
651 92 92
652 93 93
653 94 94
654 95 95
655 96 96
768 97 97
769 98 98
770 99 99
771 100 100
772 101 101
773 102 102
774 103 103
775 104 104
776 105 105
777 106 106
778 107 107
779 108 108
780 109 109
781 110 110
782 111 111
783 112 112
896 113 113
897 114 114
898 115 115
899 116 116
900 117 117
901 118 118
902 119 119
903 120 120
904 121 121
905 122 122
906 123 123
907 124 124
908 125 125
909 126 126
910 127 127
911 128 128
1024 129 129
1025 130 130
1026 131 131
1027 132 132
1028 133 133
1029 134 134
1030 135 135
1031 136 136
1032 137 137
1033 138 138
1034 139 139
1035 140 140
1036 141 141
1037 142 142
1038 143 143
1039 144 144
1152 145 145
1153 146 146
1154 147 147
1155 148 148
1156 149 149
1157 150 150
1158 151 151
1159 152 152
1160 153 153
1161 154 154
1162 155 155
1163 156 156
1164 157 157
1165 158 158
1166 159 159
1167 160 160
1280 161 161
1281 162 162
1282 163 163
1283 164 164
1284 165 165
1285 166 166
1286 167 167
1287 168 168
1288 169 169
1289 170 170
1290 171 171
1291 172 172
1292 173 173
1293 174 174
1294 175 175
1295 176 176
1408 177 177
1409 178 178
1410 179 179
1411 180 180
1412 181 181
1413 182 182
1414 183 183
1415 184 184
1416 185 185
1417 186 186
1418 187 187
1419 188 188
1420 189 189
1421 190 190
1422 191 191
1423 192 192
1536 193 193
1537 194 194
1538 195 195
1539 196 196
1540 197 197
1541 198 198
1542 199 199
1543 200 200
1544 201 201
1545 202 202
1546 203 203
1547 204 204
1548 205 205
1549 206 206
1550 207 207
1551 208 208
1664 209 209
1665 210 210
1666 211 211
1667 212 212
1668 213 213
1669 214 214
1670 215 215
1671 216 216
1672 217 217
1673 218 218
1674 219 219
1675 220 220
1676 221 221
1677 222 222
1678 223 223
1679 224 224
1792 225 225
1793 226 226
1794 227 227
1795 228 228
1796 229 229
1797 230 230
1798 231 231
1799 232 232
1800 233 233
1801 234 234
1802 235 235
1803 236 236
1804 237 237
1805 238 238
1806 239 239
1807 240 240
1920 241 241
1921 242 242
1922 243 243
1923 244 244
1924 245 245
1925 246 246
1926 247 247
1927 248 248
1928 249 249
1929 250 250
1930 251 251
1931 252 252
1932 253 253
1933 254 254
1934 255 255
answered Feb 23, 2015 by ezb (5,640 points)
Killer response ezb. Im trying to wrap my head around that first paragraph but I think I kinda get it. When I was first trying to get this working i was only able to access values  0 -15 so definitely think your onto something here.

Gonna try this as soon as i can and will reply. i take it i can just "learn" the first address/data string and populate the named tick list as you said and hopefully it will figure out the second address that lives below it in the address map.

neat stuff.
Thanks again to all who replied.
Wow! Thanks ezb for saving the day... I'm really glad that we can get this working with named ticks. Quite amazing.
I encountered the same situation in the JV-1080 layout I am working on and that is how I solved it.
@async From what I see in the 305 manual the sysex messages needs 1 byte for the checksum. This means that the byte before F7 is the checksum byte. And the 2 bytes before the checksum byte will be the V.
So your syxex message you will have to enter will be something like bla bla 03 V, I think.

Let me know how it goes.
Ok, I imported the named ticks and "learned" the sysex string from my synth and gave my "V" two bytes.  I am currently able to navigate through the entire "B" bank of tones but only "B"

It still looks as though its only working with the first  address (10 03). I need to figure out how to get it to add the (10 01) address so I can navigate all banks.

Ezb, after reading your post again the math in the first paragrapgh makes sense to me so im definelty making progress im just not sure how to get it to use the second address/string. Gonna ponder this one for a bit and try a few things, any advice on this? should i manually add the second address in a single string?
Yes, my sysex string looks like this
41 10 00 0b 12 02 00 10 03 V
with the V replacing 2 values and my sysex string is set to Roland Two-Byte Model ID. I will try it with a one byte checksum
So bank B has 255 tones?

I don't understand the other address (10 01) yet.

Show me your sysex message you have entered.

And show me the complete line of your second output (the one with 10 01) in it.
Ok. Your sysex string is ok. Now I am curious about the one byte checksum.
OK, I can naviagte  through any bank i set it to manually on the JX305 first. So if i set my JX305 to a tone in bank C i can navigate all of bank C, same goes for the other banks, Im confused, will keep trying.
How many elements are there in a bank?

And how many banks do you have?
Bank A has 254
Bank B has 251
Bank C has 131

My synths output looks like this while i change tones.
F0 41 10 00 0B 12 02 00 10 03 00 00 6B F7
F0 41 10 00 0B 12 02 00 10 01 00 02 6B F7
F0 41 10 00 0B 12 02 00 10 03 00 01 6A F7
F0 41 10 00 0B 12 02 00 10 01 00 02 6B F7
F0 41 10 00 0B 12 02 00 10 03 00 02 69 F7
F0 41 10 00 0B 12 02 00 10 01 00 02 6B F7

I am sending
41 10 00 0B 12 02 00 10 03 V
Roland-Two-Byte Model ID
2 Bytes in value.

Any other checksum type gave an error on the synth.
Ok. I took a look in the manual. It seems like it works similar to the JV-1080.

The second address (10 01) is your wave group (== bank)

Your selecting of a wave (10 03) works (that was your original problem)

You will have to make another knob for the bank select.

This knob will have the following sysex message.

41 10 00 0B 12 02 00 10 01 V

Roland-Two-Byte Model ID
1 byte in value

Your knob will have your banks names A, B and C and maybe another one (since the midi value range in the spec is 0-3).
Yes, Each sound/patch/part (whatever you call it) is made up of four waveforms that roland calls "tones"
the sysex string i am sending changes the first of the four tones on part 1 of the synth.
Hope that makes sense.
The 10 in the address means the first tone 12 = 2, 14 = 3, 16 = 4.


Hope that makes sense.
It makes sense now. The JV-1080 works on the same principle.
You have to choose a bank and then you can step through the waves of that bank.

You won't be able to go through all the waves with 1 knob. You will need an extra knob so you can select the bank. You will have to repeat that for the other tones too so you will get 4 bank knobs and 4 wave select knobs.
This is my synth starting on the the first tone in bank A and going up.
    F0 41 10 00 0B 12 02 00 10 03 00 01 6A F7
    F0 41 10 00 0B 12 02 00 10 01 00 01 6C F7
    F0 41 10 00 0B 12 02 00 10 03 00 02 69 F7
        F0 41 10 00 0B 12 02 00 10 01 00 01 6C F7
    F0 41 10 00 0B 12 02 00 10 03 00 03 68 F7
    F0 41 10 00 0B 12 02 00 10 01 00 01 6C F7
    F0 41 10 00 0B 12 02 00 10 03 00 04 67 F7
    F0 41 10 00 0B 12 02 00 10 01 00 01 6C F7
    F0 41 10 00 0B 12 02 00 10 03 00 05 66 F7
    F0 41 10 00 0B 12 02 00 10 01 00 01 6C F7
    F0 41 10 00 0B 12 02 00 10 03 00 06 65 F7
    F0 41 10 00 0B 12 02 00 10 01 00 01 6C F7
    F0 41 10 00 0B 12 02 00 10 03 00 07 64 F7
    F0 41 10 00 0B 12 02 00 10 01 00 01 6C F7
    F0 41 10 00 0B 12 02 00 10 03 00 08 63 F7
    F0 41 10 00 0B 12 02 00 10 01 00 01 6C F7
    F0 41 10 00 0B 12 02 00 10 03 00 09 62 F7
    F0 41 10 00 0B 12 02 00 10 01 00 01 6C F7
    F0 41 10 00 0B 12 02 00 10 03 00 0A 61 F7
    F0 41 10 00 0B 12 02 00 10 01 00 01 6C F7
Ok. And what messages do you get with bank B and going up?
WOW. Ok that makes sense. Might even make things more manageable.
Thanks so much for taking the time to help me with this. Ive been searching the web all over and not sure i could have figured this out on my own.
One more thing, Have you had any issue with the accuracy of using a slider for something like this. Even the slightest tick in midi designer causes the values to jump huge amounts inside the synth. Using high precision does not seem to help. Will keep playing.

Cheers!
Bank B Messages

        F0 41 10 00 0B 12 02 00 10 03 00 01 6A F7
        F0 41 10 00 0B 12 02 00 10 01 00 02 6B F7
        F0 41 10 00 0B 12 02 00 10 03 00 02 69 F7
        F0 41 10 00 0B 12 02 00 10 01 00 02 6B F7
        F0 41 10 00 0B 12 02 00 10 03 00 03 68 F7
        F0 41 10 00 0B 12 02 00 10 01 00 02 6B F7
        F0 41 10 00 0B 12 02 00 10 03 00 04 67 F7
            F0 41 10 00 0B 12 02 00 10 01 00 02 6B F7
        F0 41 10 00 0B 12 02 00 10 03 00 05 66 F7
        F0 41 10 00 0B 12 02 00 10 01 00 02 6B F7
        F0 41 10 00 0B 12 02 00 10 03 00 06 65 F7
        F0 41 10 00 0B 12 02 00 10 01 00 02 6B F7
        F0 41 10 00 0B 12 02 00 10 03 00 07 64 F7
            F0 41 10 00 0B 12 02 00 10 01 00 02 6B F7
        F0 41 10 00 0B 12 02 00 10 03 00 08 63 F7
        F0 41 10 00 0B 12 02 00 10 01 00 02 6B F7
        F0 41 10 00 0B 12 02 00 10 03 00 09 62 F7
    F0 41 10 00 0B 12 02 00 10 01 00 02 6B F7
        F0 41 10 00 0B 12 02 00 10 03 00 0A 61 F7
        F0 41 10 00 0B 12 02 00 10 01 00 02 6B F7
        F0 41 10 00 0B 12 02 00 10 03 00 0B 60 F7
        F0 41 10 00 0B 12 02 00 10 01 00 02 6B F7
        F0 41 10 00 0B 12 02 00 10 03 00 0C 5F F7
            F0 41 10 00 0B 12 02 00 10 01 00 02 6B F7
Hmm I think I get it. there is one value in the second string that changes to reflect the bank.
regarding huge jumps: you could make a "stepper" which is any momentary button supercontrol of your slider/knob/XY
Also: turn on long throw, which helps, too...
I do know that when you start sliding something and you slide far to the left and go up and down you can get more precision on the slider. Also the option Long Throw will give you more accuracy.

I always use momentary buttons with sliders and knobs. That's what I prefer. That way I can easily go one selection up or down.

Here is what you can do

1. Create a momentary button + and make it a super control.
2. Create a momentary button - and make it a super control.
3. Make your wave knob (for example) a sub control of momentary buttons + and -.
4. In the Super Control options of button - choose inverted.

Now you can step up and down in your knob.
@Admin. Ha, ha. You were too fast for me. :)
@async. Hmm, strange that the byte that changes for the bank is the one I didn't expect. This will make your bank sysex message change.

41 10 00 0B 12 02 00 10 01 00 V

Roland 2-byte checksum (I think)

1 byte
Im definetly going to try the increment buttons, as well as playing with the min and max values. Definetly made some progress on this today.

EZB, ADMIN, thank you both for your time and effort. So cool that I can reach out like this and get a helping hand. Gonna Keep working and look forward to sharing my project when its complete!
Looking forward to your project. It might cost you some time, but in the end you will have a killer controller that will give you a lot of joy.
So glad I found this. I though I was toasted with my roland gear. Howeve, I wish this could be added as type of the value (the same as we have the ”LSBFirst" button. We already have nice roland check sum that works beautiful...
Roland basically ignores the higher nibble in in each byte and this only apply when you V is 2+ bytes ~ 255 ticks. All Roland gear works like this. I recall the old Peavey Midi controller called PC1600 had this option for value. And roland use this for 3-4 bytes …So for value = 3bytes the 3bytes would translate like this

00 00 00
00 00 01
00 00 02

00 00 0f
00 01 00
00 01 01

00 0f 0f
01 00 00
01 00 01

this is simpler to implement than the roland checksum
Can you please add it to the next release ? The named ticks is a workaround that just makes bigger template slower due to unnecessary translation
This is an exciting find. So is this mutually exclusive with LSB first? That way the LSB first toggle becomes a value type picker field
The reason why I mentioned the "LSB first", was just to ask you to add a button next to “LSB First" that would be named eg: “Roland Nibbles” that would do this Roland thingy magic without a need of the long 256 rows of tick copy-paste. (hope in the next version:))
BTW I ran into a situation where the PCM Drum selection sysex for the roland JD-XI is around 466 values. Thus I needed to turn on V=3 bytes. I needed to do a bit more magic for the 3rd byte. I noted that when you generate the V you do this AAAAAAABBBBBBBCCCCCCC using only 7 bits of each byte. So I had to add 16386 when I went over 255+7 something like this
....
1928    248    Rock OHH
1929    254    808 Cymbal 2
1930    255    808 Cymbal 3
1931    256    909 CrashCym
1932    257    909 Rev Cym
1933    258    MG Nz Cym
1934    259    707 CrashCym
1935    260    626 CrashCym
16384    261    Crash Cym 1
16385    262    Crash Cym 2
16386    263    Rock Crash 1
16387    264    Rock Crash 2
.....

Funny thing that for this i used the table of values so tick worked GREAT
Thanks for this amazing app, I have 6+ physical Midi controllers and this app will replace all of them :)
Really glad that my original question helped get this discussion going. It's an honer to help the Midi Designer community and the answers I got from the users here were very helpful.

That said i feel bad i stopped working on my JX-305 controller, I started making the controller without a real plan and soon became overwhelmed by the shear amount of controls this synth had, without a plan i found things got messy fast.

Im hoping to get back into it soon and take a more organized approach. Im still not sure how to approach MIDI channel changing when using sysex and using a super control to change channels seemed like i would have to drag every button, knob and slider in my app into the super control and i was hoping there was a more streamlined approach.

Hope to have something to share with the community soon, I think the JX-305 is a pretty cool synth and its lots of fun controlling it via midi designer.
...