akai s2000 sysex help plz

Home Forums General Using Ctrlr akai s2000 sysex help plz

Tagged: , ,

Viewing 20 posts - 21 through 40 (of 56 total)
  • Author
    Posts
  • #8250
    Synthetech
    Participant
      • Topics: 13
      • Replies: 70
      • Total: 83

      Well I kept at it and figured out how to make the slider work.

       

      I used this formula and the ls/ms variables in place…-

      F0 47 00 2A 48 00 00 00 07 00 01 00 ls ms F7

       

      In moments I had a Filter Cutoff/LFO Depth and LFO Rate sliders functioning and adjusting the S2k in real time!

      Woohoo!!  Gentlemen, I do believe I’ve got a good start going here!

      #8257
      atom
      Keymaster
        • Topics: 159
        • Replies: 2945
        • Total: 3104
        • ★★★★★

        Based on this, i opened the Windows->MIDI Calculator in Ctrlr, pasted your hest for filter reso, had a look at the bits, then pasted this as a SysEx formula for a slider with range 0-99, the formula beeing:

        f0 47 00 2a 48 00 00 00 07 00 01 00 ls ms f7
        

        and the slider produces this set of data

        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 00 00 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 01 00 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 02 00 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 03 00 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 04 00 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 05 00 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 06 00 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 07 00 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 08 00 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 09 00 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0a 00 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0b 00 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0c 00 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0d 00 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0e 00 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0f 00 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 00 01 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 01 01 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 02 01 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 03 01 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 05 01 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 06 01 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 07 01 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 08 01 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 09 01 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0b 01 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0c 01 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0e 01 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0f 01 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 00 02 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 01 02 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 02 02 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 03 02 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 05 02 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 06 02 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 08 02 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0a 02 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0b 02 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0e 02 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0f 02 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 00 03 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 01 03 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 02 03 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 03 03 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 04 03 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 05 03 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 06 03 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 07 03 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 08 03 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 09 03 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0a 03 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0b 03 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0d 03 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0e 03 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0f 03 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 00 04 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 01 04 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 03 04 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 06 04 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 07 04 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 09 04 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0b 04 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0d 04 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0e 04 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 00 05 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 02 05 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 03 05 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 04 05 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 06 05 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 07 05 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 08 05 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0a 05 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0b 05 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0c 05 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0d 05 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 0f 05 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 00 06 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 01 06 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 02 06 f7]
        [debug] RAW:[f0 47 00 2a 48 00 00 00 07 00 01 00 03 06 f7]
        
        #8258
        atom
        Keymaster
          • Topics: 159
          • Replies: 2945
          • Total: 3104
          • ★★★★★

          ahhh you beat me to it, good job.

          #8261
          Hecticcc
          Participant
            • Topics: 25
            • Replies: 160
            • Total: 185
            • ★★

            Nice going Synthetech 🙂

            Here’s a little helper script for being able to change the sysex command to select another program / keygroup.

            This is linked to a togglebutton so only two values/options but you can see what is happening.
            For this i assumed the 10’th (and 11’th? – probably split in the same way) bit is the one needing to be changed.

            `

            — Called when a modulator value changes
            — @mod http://ctrlr.org/api/class_ctrlr_modulator.html
            — @value new numeric value of the modulator

            — example of how to change the sysex formula field contents

            sysexswitch = function(mod, value)

            m = panel:getModulatorByName(“modulator-1”):getMidiMessage()

            if value == 0 then m:setProperty(“midiMessageSysExFormula”,”F0 47 00 2A 48 00 00 00 07 00 01 00 ls ms F7″,true)
            elseif value == 1 then m:setProperty(“midiMessageSysExFormula”,”F0 47 00 2A 48 00 00 00 07 00 02 00 ls ms F7″,true) end

            end
            `

            ps, Atom, what does the bool do for setting this property? I tried both false & true and did not notice any change in behaviour.

            • This reply was modified 11 years ago by Hecticcc. Reason: code tags
            • This reply was modified 11 years ago by Hecticcc. Reason: code tags
            #8264
            atom
            Keymaster
              • Topics: 159
              • Replies: 2945
              • Total: 3104
              • ★★★★★

              setProperty() are undoable, this boolean setting should be always set to false but i bound it this way. It really makes no difference what you will set to. It indicate is the operation is undoable or not, but since i have not implemented the undo function it’s just ignored.

              #8267
              Hecticcc
              Participant
                • Topics: 25
                • Replies: 160
                • Total: 185
                • ★★

                Thanks Atom, so to be sure set it to false for future compatibilty issues if/when you decide to implement undo, yes?

                #8268
                atom
                Keymaster
                  • Topics: 159
                  • Replies: 2945
                  • Total: 3104
                  • ★★★★★

                  Well yes keep it false.

                  #8272
                  Synthetech
                  Participant
                    • Topics: 13
                    • Replies: 70
                    • Total: 83

                    It was exciting to see and hear it working for the 1st time.

                     

                    Hecticc, how does that script apply to a slider?  Right now I’m hardset on KeyG. 1/Prog.1

                    Is there some kind of way to make it look your script msg. code?

                     

                    I was thinking…. and I’ve done this before with a lot of time put into it.. I’d like to make a script that will fetch a program or keyg. dump.. well any dump it can use and update all the sliders to the selected prog./keyg. every time you switch over to a different one.

                    Making a panel that could emulate the sample edit functions might prove difficult, I imagine.  It’d be nice if I could at least reverse the sample.. I’m guessing wave edits is a bit out of scope for Ctrlr?

                    I’d be happy if I could numerically loop/end/start/loop point, Reverse, attenuate volume.. just about everything that could be edited from the S2k’s tiny LCD.

                    I’ll have to sniff out those commands too, if they are even there in the 1st place.

                     

                    Exciting stuff.. head is already turning on how to do the GUI.

                     

                    -Blaine

                    #8273
                    atom
                    Keymaster
                      • Topics: 159
                      • Replies: 2945
                      • Total: 3104
                      • ★★★★★

                      There is a wave viewer component that you can load sample data to, it will display the waveform. I didn’t add editing capabilities, it’s not beyond the scope of Ctrlr, it’s just not a priority.

                      Remember you can always use the custom component with LUA a draw your own waveforms and add stuff like loop markers and allow the user to change them, it can be done with Lua, you can always check out the rendering demo in the Panels section to check out some of the stuff that Lua can do in Ctrlr, and believe me you can do a lot more.

                      #8275
                      Hecticcc
                      Participant
                        • Topics: 25
                        • Replies: 160
                        • Total: 185
                        • ★★

                        You have to attach the script to a modulator; also note that the decision-making values should be fetched from other modulators that set the number of the program/keygroup you want to target.

                        The script is not complete for selecting the correct keygroup and programs like it is now because the part number is also a ms/ms splits, the numbers of the selection will have to be re-calculated by Ctrlr.

                        Also imo it will be “easier” to do this all in inside Lua instead of messing with the sysex formula of all modulators, from what i can tell there’s 4 variables, 3 of which are ms/ls splits.

                        Can you provide some strings where different parts and keygroups are selected/edited? If i know those i can try and cook something up.

                        #8276
                        Synthetech
                        Participant
                          • Topics: 13
                          • Replies: 70
                          • Total: 83

                          a sample wave and loop editor panel would be awesome

                          hectic, I’ll get a good look at those strings tonight and post them in here

                          #8277
                          atom
                          Keymaster
                            • Topics: 159
                            • Replies: 2945
                            • Total: 3104
                            • ★★★★★

                            For those less used parameters that define regions or voice you could use global variables in the formula, that’s what they’re for.

                            #8293
                            Synthetech
                            Participant
                              • Topics: 13
                              • Replies: 70
                              • Total: 83

                              Hecticcc,

                              Here’s what I got when I did filter changes in Program 1, Program 2 and Keygroups in various numbers.

                              Program 1
                              KeyG. 1  Filter value 96
                              065C57C0   1   2     F0  Buffer:    15 Bytes   System Exclusive
                              SYSX: F0 47 00 2A 48 00 00 00 07 00 01 00 00 06 F7

                              KeyG. 2 Filter value 97
                              065E4CE7   1   2     F0  Buffer:    15 Bytes   System Exclusive
                              SYSX: F0 47 00 2A 48 00 00 01 07 00 01 00 01 06 F7

                              KeyG. 3 Filter value 98
                              065F16EF   1   2     F0  Buffer:    15 Bytes   System Exclusive
                              SYSX: F0 47 00 2A 48 00 00 02 07 00 01 00 02 06 F7

                              Keygroup 36 Filter value 99
                              065FD4B9   1   2     F0  Buffer:    15 Bytes   System Exclusive
                              SYSX: F0 47 00 2A 48 00 00 23 07 00 01 00 03 06 F7

                              Program 2
                              KeyG. 1 Filter Val. 91
                              SYSX: F0 47 00 2A 48 01 00 00 07 00 01 00 0B 05 F7

                              KeyG. 2 Filter Value 92
                              SYSX: F0 47 00 2A 48 01 00 01 07 00 01 00 0C 05 F7

                              KeyG. 27 Filter Value 93
                              SYSX: F0 47 00 2A 48 01 00 1A 07 00 01 00 0D 05 F7

                              Here’s a snippet from the info on sysex from here-
                              http://lakai.sourceforge.net/docs/s2800_sysex.html

                              “Receive Keygroup Header bytes
                              0xF0 MIDI System Exclusive identifier
                              0x47 Akai Manufacturer code
                              cc MIDI Exclusive channel
                              0x2A Operation code
                              0x48 S1000 Model identity
                              pp,PP Program number
                              kk Keygroup (0x7f indicates all keygroups in program)
                              oo,oo Byte offset into header
                              nn,nn Number of bytes of data
                              ln,hn First byte (nibbled)
                              ..,.. further data
                              0xF7 End of Exclusive message”

                              with that info above, you can follow the bytes.
                              It looks like it is mixed in areas that are nibblized/4bits and lsb is first, msb 2nd.
                              I think Program # is nibbled, as is “byte offset into header” , “Number of bytes”, and finally the Value bytes themeselves at the end.
                              Other bytes, like Keygroup # are normal bytes.

                              When you go down to “Accessing Keygroup Header bytes”
                              you will find the “Offset” byte values that correspond to the parameter/edit
                              Like Filter Cutoff Freq. is,
                              “FILFRQ” and it’s Offset # is 7 bytes.

                              By changing that 7 to a “C” (Offset of 12), I was able to dial in the Prog.1/KG1 Env. 1 Attack Value and it immediately began to work.

                              Look at that page really close.. I think I see ways to access the hard/ZIP drives for directories/volumes.

                               

                              Atom-  I need to learn on how to use Global variables.. I’ve heard  them being used many times before.. How I got this far w/out using them yet is beyond me, but I never could catch on how to set them up and use them.

                              #8296
                              atom
                              Keymaster
                                • Topics: 159
                                • Replies: 2945
                                • Total: 3104
                                • ★★★★★

                                Well the keygroup value looks like a good candidate for this, change your formula to:

                                F0 47 00 2A 48 00 00 k0 07 00 01 00 ls ms F7

                                add another slider to the panel, give it a range that equals the amount of key groups on the sampler, change it’s property named “Modulator attached to global varaible” to “0”, this slider will now change the keygroup for all controls with that formula. There are 16 global variables you can use k0-kf

                                #8334
                                Synthetech
                                Participant
                                  • Topics: 13
                                  • Replies: 70
                                  • Total: 83

                                  Thanks atom that information looks very helpful.

                                  I got to messin around with the Akai last night a little more and have begun to start figuring out more SysEx coding.
                                  I managed to get it to send dumps for key groups and for programs.
                                  I also think I found a dump message for the raw sample itself

                                  #8379
                                  Synthetech
                                  Participant
                                    • Topics: 13
                                    • Replies: 70
                                    • Total: 83

                                    OK.. making a little headway.

                                    I just tried to make a trigger pad.  How do I make a uiButton act like a key on a keyboard?  So it’s like a momentary switch.

                                    This could be real helpful for making a Phrase Sampler out of the S2k and make the GUI have an MPC appearance.

                                    #8400
                                    atom
                                    Keymaster
                                      • Topics: 159
                                      • Replies: 2945
                                      • Total: 3104
                                      • ★★★★★

                                      This can be done, i’ll provide an example tomorrow.

                                      #8402
                                      Synthetech
                                      Participant
                                        • Topics: 13
                                        • Replies: 70
                                        • Total: 83

                                        Thanks Atom.. I was going nuts trying to get the uiButton to work like that and it always acted like a latching switch everytime…

                                        #8420
                                        atom
                                        Keymaster
                                          • Topics: 159
                                          • Replies: 2945
                                          • Total: 3104
                                          • ★★★★★

                                          It looks like i spoke to soon. I had to make a small change to allow the buttons to get triggered on mouse down events, i added this and i’ll post a nightly build today,

                                          #8424
                                          Synthetech
                                          Participant
                                            • Topics: 13
                                            • Replies: 70
                                            • Total: 83

                                            can you make it so that a right click will cause it to latch and a left click will be a momentary switch like a keyboard ?
                                            and right clicking again while it is latched will cause it to unlatch

                                          Viewing 20 posts - 21 through 40 (of 56 total)
                                          • The forum ‘Using Ctrlr’ is closed to new topics and replies.
                                          There is currently 0 users and 88 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