Reply To: SOLVED: What’s wrong in my function

Home Forums General Programming SOLVED: What’s wrong in my function Reply To: SOLVED: What’s wrong in my function

#117096
goodweather
Participant
    • Topics: 45
    • Replies: 550
    • Total: 595
    • ★★★

    Hi,
    dec2hex is indeed returning a string si it will not work in your first example.

    --
    -- Returns HEX representation of a DECimal number
    --
    dec2hex = function(num)
    
        local hexstr = '0123456789ABCDEF'
        local s = ''
    
        while num > 0 do
            local mod = math.fmod(num, 16)
            s = string.sub(hexstr, mod+1, mod+1) .. s
            num = math.floor(num / 16)
        end
        if s == '' then s = '0' end
        return s
    
    end

    Some remarks on very good dnaldoog’s answer:
    – it is a good habit to declare all your modulators at once in some method that you call at panel load then that you refer to the modulators through the variables instead of redoing panel:getModulatorByName() all the time; To identify my modulators, I’m usually using modXXX
    So: modProgram = panel:getModulatorByName(“Program”)
    – you can directly put the getModulatorValue() in the message like
    pnr = CtrlrMidiMessage({0xf0, 0x01, 0x00, modProgram:getModulatorValue(), 0xf7})
    So you spare one variable assignment
    – Using his second proposal allows you to use the dec2hex function:
    local sysexString = “f0 43 10 5c 10 “..dec2hex(modProgram:getModulatorValue())..” f7″
    But this is clearly less straightforward that what I wrote in the bullet point just before

    Have fun!

    Ctrlr