Home › Forums › General › Using Ctrlr › Demo panel for MIDI receive/transmit routines › Reply To: Demo panel for MIDI receive/transmit routines
October 14, 2017 at 6:25 am
#73188
there is this also, for sending a patch to the device:
--
-- Called when a modulator value changes
--
SendFullTone = function(modulator, newValue)
if tChar ~= nil then
label = panel:getModulatorByName("lblPhTtl"):getComponent()
PatchName = label:getProperty("uiLabelText")
if PatchName == "" then
PatchName = tostring(pNumber)
label:setPropertyString ("uiLabelText", PatchName)
end
if PatchName ~= "*Roland MKS-50*" then
TransName = ""
addspace = 0
b = 0
for l=1,10 do
char = string.sub(PatchName,l,l)
if char=="%" then char="@" end -- % causes issues.
charNum = TranslateStr(string.format(char))
if tonumber(charNum) > 63 then -- this is for special charicters that are skipped.
addspace = addspace + 1
else
TransName = string.format("%s%s", TransName, string.format(" %.2x", charNum))
end
end
while b < addspace do
TransName = string.format("%s%s", TransName, string.format(" %.2x", 62)) -- adding blank spaces at the end if characters are not available.
b = b + 1
end
---------------- Tone Transmit ------------------
PatchCommand = "F0 41 35 00 23 20 01"
PatchCommand = AddHexCommand("DcoEvMd", tostring(PatchCommand))
PatchCommand = AddHexCommand("VcfEvMd", tostring(PatchCommand))
PatchCommand = AddHexCommand("VcaEvMd", tostring(PatchCommand))
PatchCommand = AddHexCommand("DcoPuls", tostring(PatchCommand))
PatchCommand = AddHexCommand("DcoSaw", tostring(PatchCommand))
PatchCommand = AddHexCommand("DcoSub", tostring(PatchCommand))
PatchCommand = AddHexCommand("DcoRnge", tostring(PatchCommand))
PatchCommand = AddHexCommand("DcoSbLv", tostring(PatchCommand))
PatchCommand = AddHexCommand("DcoNse", tostring(PatchCommand))
PatchCommand = AddHexCommand("VcfHpf", tostring(PatchCommand))
PatchCommand = AddHexCommand("ChrsOF", tostring(PatchCommand))
PatchCommand = AddHexCommand("DcoLfo", tostring(PatchCommand))
PatchCommand = AddHexCommand("DcoEnv", tostring(PatchCommand))
PatchCommand = AddHexCommand("DcoAftr", tostring(PatchCommand))
PatchCommand = AddHexCommand("DcoPwm", tostring(PatchCommand))
PatchCommand = AddHexCommand("DcoPwRt", tostring(PatchCommand))
PatchCommand = AddHexCommand("VcfFrq", tostring(PatchCommand))
PatchCommand = AddHexCommand("VcfRes", tostring(PatchCommand))
PatchCommand = AddHexCommand("VcfLfo", tostring(PatchCommand))
PatchCommand = AddHexCommand("VcfEnv", tostring(PatchCommand))
PatchCommand = AddHexCommand("VcfFolw", tostring(PatchCommand))
PatchCommand = AddHexCommand("VcfAftr", tostring(PatchCommand))
PatchCommand = AddHexCommand("VcaLvl", tostring(PatchCommand))
PatchCommand = AddHexCommand("VcaAftr", tostring(PatchCommand))
PatchCommand = AddHexCommand("LfoRate", tostring(PatchCommand))
PatchCommand = AddHexCommand("LfoDly", tostring(PatchCommand))
PatchCommand = AddHexCommand("EnvT1", tostring(PatchCommand))
PatchCommand = AddHexCommand("EnvL1", tostring(PatchCommand))
PatchCommand = AddHexCommand("EnvT2", tostring(PatchCommand))
PatchCommand = AddHexCommand("EnvL2", tostring(PatchCommand))
PatchCommand = AddHexCommand("EnvT3", tostring(PatchCommand))
PatchCommand = AddHexCommand("EnvL3", tostring(PatchCommand))
PatchCommand = AddHexCommand("EnvT4", tostring(PatchCommand))
PatchCommand = AddHexCommand("EnvFolw", tostring(PatchCommand))
PatchCommand = AddHexCommand("ChrsRt", tostring(PatchCommand))
PatchCommand = AddHexCommand("BndRange", tostring(PatchCommand))
PatchCommand = string.format("%s%s%s", PatchCommand, TransName, " F7")
panel:sendMidiMessageNow(CtrlrMidiMessage(PatchCommand))
end
end
end
so this shows how the outgoing bulk message is put together
-and presumably would let you write *.syx files for a patch
library.
don’t yet understand ‘PatchCommand = string.format(..’ etc.
what is "%s%s%s"
?
fascinating stuff for the midi fan. apologies if this is longwinded 🙂