Home Forums General Panels, Components, Macros Korg Z1 – Negative Values

This topic contains 7 replies, has 4 voices, and was last updated by  valsolo 3 years, 3 months ago.

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
  • #18674



    I am new to the forum, but I have been working with some CTRLR panels for the Waldorf Pulse (easy) and now I wanted to make one for my Korg Z1.

    I decided to use the Korg Prophecy panel as a template due to the architecture being very similar or nearly identical. And I managed to make it work for things like the filter, oscillator type etc. A lot of work to do still.

    But of course I arrived to some parameter with negative and positive values. I read some expression examples and have been trying and trying but I always manage to get my negative values a bit off from what I really need. I spent a lot of hours and I did not manage to make it work properly, so I guess it is down to some serious misunderstanding of how large numbers are expressed in HEX with MSB and LSB.

    Here are the values that I need to obtain:

    OSC 1 SEMItone 
    Sysex Formula: [f0 42 30 46 41 01 30 01 MS LS f7]
    MS LS
    0c 00	 12
    0b 00	 11
    0a 00	 10
    09 00	 9
    08 00	 8
    07 00	 7
    06 00	 6
    05 00	 5
    04 00	 4
    03 00    3
    02 00    2
    01 01    1
    00 00	 0
    7f 7f	 -1
    7e 7f    -2
    7d 7f    -3	
    7c 7f	 -4	
    7b 7f	 -5
    7a 7f	 -6
    79 7f	 -7
    78 7f	 -8
    77 7f	 -9
    76 7f	 -10
    75 7f	 -11
    74 7f	 -12

    I would really appreciate if you could help me out as solving this would mean I can work again in building the much needed Korg Z1 panel. I think that beast with a proper panel would be fantastic.

    Thank you in advance


    enter these values in your modulator’s value contents box


    • This reply was modified 3 years, 10 months ago by layzer layzer.


    Thank you Layzer! I did not use your list, but you pointed me in the right direction. The actual SYSEX formula that works for negatives values in the Korg Z1 is

    lt (modulatorValue, 0, 16383 - (abs(modulatorValue)), modulatorValue)

    Somehow I did not understand properly how the large numbers are translated to MSB and LSB… I would be grateful if you could explain a bit how you obtained the 16383 value.

    Regards and thanx again! Now i am flying with the panel.


    simple, the 7f 7f msb,lsb pair is 16129 in decimal. but 80h*80h is what = 16384
    you would think 16129 would be the value that worked, huh?

    all the korg Z1 is doing is starting with the 7f 7f value and decreasing the msb by one for every negative increment. go figure!

    also, the list i gave would work if you swapped the lsb msb in your sysex string like so…..

    Sysex Formula: [f0 42 30 46 41 01 30 00 LS MS f7

    either way, glad u figured it out!

    • This reply was modified 3 years, 10 months ago by layzer layzer.


    Excellent! I made one mistake, I took 7f7f as a whole in its decimal value (32639) which obviously is wrong. I need to understand a bit better the conversion of hex pairs to decimal.

    But now the posted formula above works for all parameters, -12/12, -50/50 or even -99/99.

    Thank you again!



    Ok I get it now, you multiply the MSB and LSB values!


    Hi, I was trying to create a function based on the midivalue, but just for the hardware control, then I needed the inverse function of modulatorValue.
    Here it is!

    lt (midiValue, 128, midiValue, midiValue – 16384)


    R3 / MOX6 / Electribe2 / Electribe R MkII / Electribe MX / K4R / BCR2000 / XStation61 / XStation25 / Virus Rack / Chameleon / Proteus 2500 / RM1X / KN2600



    How’s it going with the Z1, love to see it as I’ve got a Z1 just lying in a corner unused 🙂

Viewing 8 posts - 1 through 8 (of 8 total)

You must be logged in to reply to this topic.

Comments are closed.