Reply To: Demo panel for MIDI receive/transmit routines

Home Forums General Using Ctrlr Demo panel for MIDI receive/transmit routines Reply To: Demo panel for MIDI receive/transmit routines

    • Topics: 4
    • Replies: 480
    • Total: 484
    • β˜…β˜…

    Well I never looked at the reason for this function, just focusing on the errors you were dealing with and offering a way of fixing those (particular issues), but it seems that all you are trying to do is process the data coming in from the synth.

    I don’t think you need to do all that memoryblock converting or midi:getLuaData():getRange(), gsub() stuff. Needs to be as simple as possible or else all these compilation errors start seeping in as you are finding out.

    If you know a certain midi dump will be say 65 bytes long then:

    myMidiReceived = function(--[[ CtrlrMidiMessage --]] midi)
        local s = midi:getSize()
     if s == 65 then

    …now work out a way of writing into the values of a midi:getLuaData():getByte() to various modulator/components (uiSliders uiCombos etc); that magic moment when you see all the sliders change values on screen!

    You can do this by mapping the position of each byte in midi:getLuaData():getByte() to a table of modulator/Component names.

    This would be the foundation/core of your whole program!!! Everything else should be designed around this central function of Ctrlr πŸ™‚


    "WG_PITCH_COARSE", --  0x00 this would be the name of the Modulator/Component
    "WG_PITCH_FINE", -- 0x01
    "any_mod_name_I_choose", -- 0x10
    -- <em>54 more elements to be listed here</em>
    "TV_ENV_SUSTAIN_LEVEL”, -- 0x39 
    --pseudo code follows untested!!
    for i=5,65-2 do
    --  5 could be the offset from the sysex header F0 41 ?? ?? ??
    -- -2 = ignore checksum and F7 (in the case of Roland Synths)

    This is all untested, but hopefully it will help you understand the core idea of getting data out of the D-110 and into ctrlr. πŸ™‚