Hi guys,
I wasn’t satisfied with having the patches not named in my synth for me, and so I added a patch_save_callback into the synthdefinition, which gets called as you save a patch.
From within my synthdefinition (Korg_MS2000-gj.lua):
local patch_name_char_map = {
[" "] = 32,
["!"] = 33,
['"'] = 34,
["#"] = 35,
["$"] = 36,
["%"] = 37,
["&"] = 38,
["'"] = 39,
["("] = 40,
[")"] = 41,
["*"] = 42,
["+"] = 43,
[","] = 44,
["-"] = 45,
["."] = 46,
["/"] = 47,
["0"] = 48,
["1"] = 49,
["2"] = 50,
["3"] = 51,
["4"] = 52,
["5"] = 53,
["6"] = 54,
["7"] = 55,
["8"] = 56,
["9"] = 57,
[":"] = 58,
[";"] = 59,
[" ["="] = 61,
[">"] = 62,
["?"] = 63,
["@"] = 64,
["A"] = 65,
["B"] = 66,
["C"] = 67,
["D"] = 68,
["E"] = 69,
["F"] = 70,
["G"] = 71,
["H"] = 72,
["I"] = 73,
["J"] = 74,
["K"] = 75,
["L"] = 76,
["M"] = 77,
["N"] = 78,
["O"] = 79,
["P"] = 80,
["Q"] = 81,
["R"] = 82,
["S"] = 83,
["T"] = 84,
["U"] = 85,
["V"] = 86,
["W"] = 87,
["X"] = 88,
["Y"] = 89,
["Z"] = 90,
["["] = 91,
["¥"] = 92,
["]"] = 93,
["^"] = 94,
["_"] = 95,
["`"] = 96,
["a"] = 97,
["b"] = 98,
["c"] = 99,
["d"] = 100,
["e"] = 101,
["f"] = 102,
["g"] = 103,
["h"] = 104,
["i"] = 105,
["j"] = 106,
["k"] = 107,
["l"] = 108,
["m"] = 109,
["n"] = 110,
["o"] = 111,
["p"] = 112,
["q"] = 113,
["r"] = 114,
["s"] = 115,
["t"] = 116,
["u"] = 117,
["v"] = 118,
["w"] = 119,
["x"] = 120,
["y"] = 121,
["z"] = 122,
["{"] = 123,
["|"] = 124,
["}"] = 125,
["»"] = 126,
["«"] = 127
}
--Update patch name
function update_patch_name(name)
print("update_patch_name(" .. name .. ")")
local patch_name = {}
for char in name:gmatch"." do
table.insert(patch_name, patch_name_char_map[char])
end
print("UPDATE_PATCH_NAME VALUES -----")
rprint(patch_name)
return patch_name
end
return SynthDefinition {
patch_save_callback = update_patch_name,
id = "KorgMS2000",
...etc...
in class_synthdefinition.lua (insert from line 13 just before self.beta = tbl.beta):
if tbl.patch_save_callback ~= nil and type(tbl.patch_save_callback) == "function" then
print("****** SYNTH DEF HAS CALLBACK ********")
self.patch_save_callback = tbl.patch_save_callback
end
in class_synthdefinition.lua (insert just after line 405 that reads if patch_name ~= nil and patch_name ~= “” then):
if self.patch_save_callback ~= nil then
print("Patch save callback exists... running...")
local number = 0
for i,value in pairs(self.patch_save_callback(patch_name)) do
self.midi:send_sysex(self.sysex_message_template, number, value)
number = number + 1
end
end
How it works is it uses the patch_name_char_map to map letters in the patch name from the save dialog as decimal values for send_sysex, then when you save, it walks through and saves them that way.
I’m not sure if this is portable to all stuff, but thought I would share. I think the map may be able to contain params and values, but I’m still learning lua. Anyway hope it helps someone.
@cornbeast: it would be really good if you had a github repo or something for Guru /> really loving your work my friend!
I’ve attached the file here for MS-2000 owners that are interested, and also updated the original post.