fbpx
Skip to main content

MIDI Forum

Using SysEx to cont...
 
Notifications
Clear all

Using SysEx to control synth parameters.

7 Posts
3 Users
0 Reactions
10.3 K Views
James
Posts: 4
Active Member
Topic starter
 

Hi there. I’ve been using MIDI to control synths and drum machines for many years but have never before ventured into the world of sysex... until now!
I want to control certain parameters on a synth (JD-Xi) with a hardware sequencer (MC-50) using a sysex message. Excerpt from the address map hopefully attached.

I have managed to create a message to control the first 5 items ... no problem. But then I get stuck.
First thing I’m not too sure about are the ‘reserve’ addresses, but by trial and error I think I just need to input 12 bytes of value 00 to skip past these addresses.

Second (and main) problem is working out what messages I need to input to control the remaining parameters. I presume I need 4 bytes per parameter but not sure what these should be.

I see I have the option to input a value from 12768 to 52768 (-20000 to +20000). But if the parameter only has values from 0 to 127 how does this work... and how do I express a value between 0 and 127 in 4 bytes?

The # is described as having the following meaning in the manual, which I suspect could be important. “Transmission of “#” marked address is divided into some packets. For example, ABH in hexadecimal notation will be divided to 0AH and 0BH, and is sent/ received in this order.”

Also, the second column with all the 0’s and a’s etc. doesn’t mean anything to me. Am I missing something important here?

Any help or direction towards relevant information would be greatly appreciated, as I have been battling with this for some time now!

 
Posted : 16/05/2016 4:24 am
Jan Kučera
Posts: 17
Eminent Member
 

Hi!
Yes I think the second column is actuallly the one that answers your question. Every row is a byte split into 8 bits. '0' is for bits which are always zero, 'a' is a data bit. Therefore, '0aaa aaaa' means you have only 7 bits to control, which gives you values 0-127.

So Parameter 1 and Parameters 2 consist of 4 bytes, where each byte uses only the 4 least significant bits.

If you need to set the value to 0xABCD for example, you will need to send it as 0x0A 0x0B 0x0C 0x0D.

Does it make more sense?
Jan

 
Posted : 16/05/2016 5:37 am
Jan Kučera
Posts: 17
Eminent Member
 

(the order of bytes might also be 0x0C 0x0D 0x0A 0x0B, that is not specified in the picture you posted)

 
Posted : 16/05/2016 5:42 am
James
Posts: 4
Active Member
Topic starter
 

Cheers Jan. I think that's starting to make sense... gives me something to go on anyway! I'll have a mess around and see how I get on.

Thanks again.

 
Posted : 16/05/2016 7:08 am
James
Posts: 4
Active Member
Topic starter
 

Ok I'm still not quite getting this!

I have 4 bytes to use but only the 4 least significant bits... so presumably that mean those 4 bytes need to be between 0 and 15? So how would I then use these bytes to send a decimal value between 0 and 127?

Thanks for your patience!

 
Posted : 16/05/2016 10:48 am
JohnG
Posts: 226
 

If you're using a Windows PC to do this, then try opening the MS calculator. It can usually be found amongst the MS accessories.

In the view menu, change to scientific mode, and you should find that you can work in hexadecimal, decimal, octal and binary.
In decimal mode input your number, let's say 12768, then click on "bin" and you'll have the entire bits you need to input.
Divide them up into groups of seven for setting the a's and b's etc.
That's what I do.
SysExJohn.

 
Posted : 17/05/2016 2:29 am
James
Posts: 4
Active Member
Topic starter
 

Cracked it now... woohoo!

Many thanks John and Jan. Much appreciated.

 
Posted : 17/05/2016 11:26 am
Share: