Roland checksum – how to

Home Forums General Using Ctrlr Roland checksum – how to

Viewing 8 posts - 21 through 28 (of 28 total)
  • Author
    Posts
  • #84530
    dnaldoog
    Participant
      • Topics: 4
      • Replies: 480
      • Total: 484
      • ★★

      Hi Human Fly,

      Me too – have been away from ctrlr for a bit. Using the quote tag makes it look like you wrote that, but of course it was a quote from that website, but I had based my original code on that website’s explanation. I’ve looked at the explanation of checksums in three manuals and none mention that adjustment. So if you are still working on the D-110 it will help you.

      Regards.

      #84532
      human fly
      Participant
        • Topics: 124
        • Replies: 1070
        • Total: 1194
        • ★★★★

        i’m going to try out your checksummer.
        warm-up session, to get started again. need to have
        another look at that D-110 again…

        i took what you taught me a few months back with
        _G[ (blabla) ] and other stuff quite long way with
        a subsequent project, where i wanted to try something
        different: have a look at the most recent RX7 pAnel,
        WhICh (sorry got something weird with keyboard going on)
        re-uses the same modulators for many instances of the
        same thing (all 99 drum voices, all 240 key assignments).
        a lot of bodged ideas going on there, nearly knocked into
        shape, not yet reached sending a sysex message to the unit
        (which isn’t here now atm…).

        ha: i want to claim it’s ‘innovative’, in terms of Ctrlr use
        hitherto !! (lol..) -and it does sort of work, which is the
        crazy thing… next step is going to be quite tricky and
        need a workaround that i haven’t thought of anything for yet.
        had some life complications recently so i had to set it aside.

        #84533
        dnaldoog
        Participant
          • Topics: 4
          • Replies: 480
          • Total: 484
          • ★★

          life complications – yes! Know the feeling as do we all I suppose.

          So I think that a checksum is the inverse of a number between 0-127 (which is 128 numbers)
          (Second Hex is Checksum)

          0x00 = 00
          0x01 = 7F**
          0x02 = 7E
          0x40 = 40 64 dec = 128/2
          0x41 = 3F 63 dec
          0x7F = 01 127 dec ** so we are back to the beginning
          0x80 = 00 not checksum 128 (0x80) 128 dec (if this was 0x80 it would be strange)
          0x81 = 7F 129 dec and so the cycle repeats
          0xC0 = 40 192 dec which is 128+64

          so you can see 128 cannot have 128 (0x80) as a checksum

          I think I finally get it!

          #84534
          human fly
          Participant
            • Topics: 124
            • Replies: 1070
            • Total: 1194
            • ★★★★

            umm … where does that hex come from?
            you can’t have 80h, it stops at 7F and then the MSB changes. 😉
            (i remember making this mistake at some point)

            checksums aren’t actually that horrifying. i think the 2nd eddie lotter
            method is by far the easiest. one to go for. in context of Ctrlr, yes
            it’s more difficult perhaps, if you’re building the message on the fly.

            but essentially, if you’re making a mixer map or whatever, you just figure
            out the first checksum in a series, at midi value ‘0’, and then the checksum
            decrements (in hex, hence the old adage about the joys of ‘counting backwards
            in hex’) as either parameter number or value increment.

            if you see what i mean:
            -say you have a list of your parameters, all set to midi value ‘0’:
            you figure out the checksum of parameter #1, and that’s the only one
            you have to calculate, because you can now zoom down the list filling
            in all the follwing checksums sequentially.

            same thing if it’s just one parameter, and you go through the value from
            zero upwards.

            *obvious really* – and you can cheat with midiox like that too, if you’re
            feeling stuck, and are getting something wrong, such as when you have to
            addition addresses for a roland multitimbral unit. – the D-110, for example
            is terribly opaque about its different memory areas(see manual) and at times
            it’s hard to know whether to be using the 02h or 04h prefixed address (can’t
            exactly remember what it was) – so i did cheat by getting the unit to send
            a message, and working it out from that.

            little anecdotal aside: the D-110 is quite interesting in that it has (i’ve
            said this before) separate memory areas for each part, for both ‘tone'(preset)
            and ‘timbre'(..’performance envelope?’), and then also for the patch. meaning
            that you can put edits onto all parts without saving, and all remain active.
            you can even switch the unit off and back on again, and your edits will be
            unchanged. it does however mean that any time you want to hard-save your
            multi setup, you have to do all the saves: one for each tone edited, one for
            each timbre edited, and then the patch(multi). (can this be true? i have not put it
            to the test. i’m realising it might not be possible from the panel. but i’m pretty
            sure it could be via software)

            #84540
            Quimquim
            Participant
              • Topics: 7
              • Replies: 23
              • Total: 30

              human fly is the calculation is for sending a message? If so ctrlr can do it automaticly by using Zy in the message.
              y = the number of bytes before Z to include in the calculation. Here below the 5 bytes
              (18 00 2A 4A and the xx value) will be included in the calculation.
              xx = is the modulator value if it’s not a fixed message

              SysEx,Direct,Direct,-1,-1,F0 41 10 00 00 54 12 18 00 2A 4A xx z5 F7

              Found that trick by digging in a panel.

              (Another example of things to put in a tutorial section, like suggested else where!!!)

              Stay tuned. Quimquim

              #84541
              human fly
              Participant
                • Topics: 124
                • Replies: 1070
                • Total: 1194
                • ★★★★

                tuned in, quimquim 😉
                yep am onto that one.

                i will be confronted with an interesting situation if
                i persevere with current project where sysex messages
                will have to be composed on the fly – so it won’t be
                able to use that box or the built-in checksum calculator.

                hey, i can’t code and don’t know wtf i’m doing 🙂 but it
                has been interesting to try to build the RX7 panel using
                one set of modulators for many parameters. which sort-of
                works with some reliability now.

                you guys are welcome to help out with ideas if you want,
                i don’t feel at all ‘proprietary’ on this, as it is
                experimental. the code is.. a bit messy on first view,
                but in fact it is fairly ‘rigourously'(…) ordered, and i’m
                happy to give pointers on how it hangs together.

                um but the machine in question doesn’t need a checksum.
                *however*: if it did, or if i try the same technique
                to do an 8 part multitimbral module – such as the D-110 –
                then it would be necessary to build the sysex message
                without the onboard Ctrlr sysex box (where zY -zn?- happens)

                now i’m curious as to how dasfaker did his latest JV
                editor…

                #84543
                dnaldoog
                Participant
                  • Topics: 4
                  • Replies: 480
                  • Total: 484
                  • ★★

                  Hi Quimquim,

                  …If so ctrlr can do it automaticly by using Zy in the message.

                  …except when you need to build a sysex string dynamically then you need your own function to create the checksum…but wait!! you can in fact create a sysex message with xx Z5 dynamically and write it to the modulator by writing to “midiMessageSysExFormula“:

                  valA=1
                  valB=76
                  myMess=”F0 41 10 6A 12 03 00 “..string.format(“%02X”,valA)..” “..string.format(“%02X”,valB)..” xx z5 F7″
                  x=panel:getModulatorByName(“SLIDER1”):getComponent()
                  x:getMidiMessage():setPropertyString(“midiMessageSysExFormula”,myMess)
                  #84552
                  Quimquim
                  Participant
                    • Topics: 7
                    • Replies: 23
                    • Total: 30

                    The advantage of the xx Zy formula is that you can put it in a controler ( ex: my keyboard equaliser gain value ) I put it in a slider and when the keyboard send the controler change, the slider react to it exactly like any other CC controler and I also can control this parameter dynamically whit the slider.

                    Naturally it work with only one variable value in the message. For multiple variables we’ll have to proceed the dnal’s way or, If what we want to modify is not a continuous controler it would be possible to put the different combination of values in a combo to select the ones to be included in the message. A bit like I do to send multi messages tone change to my keyboard. I put the values in a combo and then build the msb lsb pc messages from the values in the combo as…
                    NaturalPiano = 000400
                    SuperiorPian = 2F0400
                    ClassicPiano = 000401
                    I display the left part to a display on my panel and use the xxyyzz after the = to build the msb lsb pc tone change messages. Then just have to select the to send in the combo list.

                    Possible to process the same way to build multi variables Sysex messages.

                    The my send tone change method attached.

                    Have fun!!!!

                    Attachments:
                    You must be logged in to view attached files.

                    Stay tuned. Quimquim

                  Viewing 8 posts - 21 through 28 (of 28 total)
                  • The forum ‘Using Ctrlr’ is closed to new topics and replies.
                  There is currently 0 users and 198 guests online
                  No users are currently active
                  Forum Statistics
                  Threads: 2,495, Posts: 17,374, Members: 77,605
                  Most users ever online was 12 on January 22, 2019 3:47 pm
                  Ctrlr