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 9 years, 3 months ago by Hecticcc. Reason: code tags
    • This reply was modified 9 years, 3 months 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 48 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