@werckmeister/compilerjs 1.4.5-dev-912 → 1.4.5-dev-915
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"path": "chords/default.chords", "data": "-------------------------------------------------------------------------\n-- Here you can define your chord symbols, containing its degrees and its semitones.\n-- A degree in parantheses specifies chord adjunct degrees. \n-- Those degrees are not being rendered, unless your force them to appear using a leading !.\n-- see https://werckme.github.io/manual#adjunct-chord-tones\n-------------------------------------------------------------------------\nX: I=0 (II=2) III=4 (IV=5) V=7 (VI=9) (VII=11)\nXmin: I=0 (II=2) III=3 (IV=5) V=7 (VI=9) (VII=10)\nX-: I=0 (II=2) III=3 (IV=5) V=7 (VI=9) (VII=10)\nX/7: I=0 (II=2) III=4 (IV=5) V=7 (VI=9) VII=-2\nX-/7: I=0 (II=2) III=3 (IV=5) V=7 (VI=9) VII=-2\nX/maj7: I=0 (II=2) III=4 (IV=5) V=7 (VI=9) VII=-1\nX/5: I=0 (II=2) III=4 (IV=5) V=-5 (VI=9) (VII=10)\nX-/5: I=0 (II=2) III=3 (IV=5) V=-5 (VI=9) (VII=11)\nX/4: I=0 (II=2) III=4 IV=-7 V=7 (VI=9) (VII=10)\nX7/4: I=0 (II=2) III=4 IV=-7 V=7 (VI=9) VII=10\nX-/4: I=0 (II=2) III=3 IV=-7 V=7 (VI=9) (VII=10)\nX-/3: I=0 (II=2) III=-9 (IV=5) V=7 (VI=9) (VII=10)\nX/3: I=0 (II=2) III=-8 (IV=5) V=7 (VI=9) (VII=11)\nX/2: I=0 II=-10 III=4 (IV=5) V=7 (VI=9) (VII=11)\nX-7b5/b5: \tI=0 (II=2) III=3 (IV=5) V=-6 (VI=9) VII=10\n-------------------------------------------------------------------------\nXsus4: I=0 (II=2) (III=4) IV=5 V=7 (VI=9) (VII=11) \nX7sus4: I=0 (II=2) (III=4) IV=5 V=7 (VI=9) VII=10\nX9sus4: I=0 II=2 (III=4) IV=5 V=7 (VI=9) (VII=11)\nXsus2: I=0 II=2 (III=4) (IV=5) V=7 (VI=9) (VII=11)\n-------------------------------------------------------------------------\nX6: I=0 (II=2) III=4 (IV=5) V=7 VI=9 (VII=11)\nX-6: I=0 (II=2) III=3 (IV=5) V=7 VI=9 (VII=11)\nX-6/9: I=0 II=2 III=3 (IV=5) V=7 VI=9 (VII=11)\n-------------------------------------------------------------------------\nX7: I=0 (II=2) III=4 (IV=5) V=7 (VI=9) VII=10\nXmin7: I=0 (II=2) III=3 (IV=5) V=7 (VI=9) VII=10\nX-7: I=0 (II=2) III=3 (IV=5) V=7 (VI=9) VII=10\nXmaj7: I=0 (II=2) III=4 (IV=5) V=7 (VI=9) VII=11\nXmaj7b5: I=0 (II=2) III=4 (IV=5) V=6 (VI=9) VII=11\nX-7b5: I=0 (II=2) III=3 (IV=5) V=6 (VI=9) VII=10\nXmaj7#11: I=0 (II=2) III=4 IV=6 (V=7) (VI=9) VII=11\nX7b5: I=0 (II=2) III=4 (IV=5) V=6 (VI=9) VII=10\nX07: I=0 (II=2) III=3 (IV=5) V=6 (VI=8) VII=9\nX7#5: I=0 (II=2) III=4 (IV=5) V=8 (VI=9) VII=10\nX7#5#9: I=0 II=3 III=4 (IV=5) V=8 (VI=9) VII=10\n-------------------------------------------------------------------------\nX2: I=0 II=2 (III=4) (IV=5) V=7 (VI=9) (VII=11) \nX9: I=0 II=2 III=4 (IV=5) V=7 (VI=9) VII=10\n-- to distinguish between Xb9 (Xflat and 9) and Xb9 (X and flat 9)\n-- we write Xflat9 for the latter.\nXflat9: I=0 II=1 III=4 (IV=5) V=7 (VI=9) (VII=11) \nXsharp9: I=0 II=3 III=4 (IV=5) V=7 (VI=9) (VII=11) \nXmin9: I=0 II=2 III=3 (IV=5) V=7 (VI=9) VII=10\nX-9: I=0 II=2 III=3 (IV=5) V=7 (VI=9) VII=10\nXminAdd9: I=0 II=2 III=3 (IV=5) V=7 (VI=9) (VII=10)\nX-add9: I=0 II=2 III=3 (IV=5) V=7 (VI=9) (VII=10)\nXmaj9: I=0 II=2 III=4 (IV=5) V=7 (VI=9) VII=11\nX7#9: I=0 II=3 III=4 (IV=5) V=7 (VI=9) VII=10\nX7b9: I=0 II=1 III=4 (IV=5) V=7 (VI=9) VII=10\nXmaj7b9: I=0 II=1 III=4 (IV=5) V=7 (VI=9) VII=11\n-------------------------------------------------------------------------\nX11: I=0 (II=2) III=4 IV=5 V=7 (VI=9) VII=10\n-- to distinguish between Xb11 (Xflat and 11) and Xb11 (X and flat 11)\n-- we write Xflat9 for the latter.\nXflat11: I=0 (II=2) III=3 IV=4 V=7 (VI=9) (VII=11)\nXsharp11: I=0 (II=2) III=4 IV=6 (V=7) (VI=9) VII=10\nXmin11: I=0 (II=2) III=3 IV=5 V=7 (VI=9) VII=10\nX-11: I=0 (II=2) III=3 IV=5 V=7 (VI=9) VII=10\nXmaj11: I=0 (II=2) III=4 IV=5 V=7 (VI=9) VII=11\n------------------------------------------------------------------\nX13: I=0 (II=2) III=4 (IV=5) V=7 VI=9 VII=10\nXflat13: I=0 (II=2) III=4 (IV=5) (V=7) VI=8 (VII=11)\nXsharp13: I=0 (II=2) III=4 (IV=5) (V=7) VI=10 (VII=11)\nXmin13: I=0 (II=2) III=3 (IV=5) V=7 VI=9 VII=10\nX-13: I=0 (II=2) III=3 (IV=5) V=7 VI=9 VII=10\nXmaj13: I=0 (II=2) III=4 (IV=5) V=7 VI=9 VII=11"}, {"path": "lua/com/com.lua", "data": "local _inspect = require \"lua/com/inspect\"\n\nlocal MidiSchluesselCOffset = 60\nParameterValueNoTag = '__noTagValue'\n\nfunction istable(t) return type(t) == 'table' end\nfunction isnumber(t) return type(t) == 'number' end\nfunction inspect(x) return print(_inspect(x)) end\nfunction dump(x) print(inspect(x)) end\n\n\nfunction checkLegacyNamedParams(params, ...)\n local args = table.pack(...)\n for k, v in pairs(params) do\n if contains(args, v) then\n local msg = \"Error: legacy named parameter with the argument '\" .. v .. \"'. \"\n msg = msg .. \" Use this expression instead: _\" .. v .. \"=...\" \n error(msg)\n end\n end\nend\n\n-- returns the minimum amount of semitones between the relative pitches x and y.\n-- e.g.: from c(0) to b(11) = -1\nfunction relpitchdiff(x, y)\n x = x % 12\n y = y % 12\n if math.abs(x-y) < 6 then\n return -(x-y)\n end\n if x < 6 then \n x = x + 12 \n end\n if y < 6 then\n y = y + 12\n end\n return -(x-y)\nend\n\n-- [a, 1, b, 2, c, 3] => {a=1, b=2, c=3}\n-- @deprecated use the native named parameter feature: _name=value\nfunction tokeyvalue(args)\n assert(#args % 2 == 0)\n local result = {}\n for i=1, #args, 2 do\n result[ args[i] ] = args[i+1]\n end\n return result\nend\n\nfunction toMidiPitch(pitch)\n return MidiSchluesselCOffset + pitch.pitch + (pitch.octave * 12)\nend\n\nfunction deepcopy(o, seen)\n seen = seen or {}\n if o == nil then return nil end\n if seen[o] then return seen[o] end\n \n local no\n if type(o) == 'table' then\n no = {}\n seen[o] = no\n \n for k, v in next, o, nil do\n no[deepcopy(k, seen)] = deepcopy(v, seen)\n end\n setmetatable(no, deepcopy(getmetatable(o), seen))\n else -- number, string, boolean, etc\n no = o\n end\n return no\nend\n\nfunction contains(table, value)\n if table == nil then\n return false\n end\n for k, v in pairs(table) do\n if v == value then\n return true\n end\n end\n return false\nend\n\n-- https://stackoverflow.com/questions/1426954/split-string-in-lua#1426970\nfunction split(pString, pPattern)\n local Table = {} -- NOTE: use {n = 0} in Lua-5.0\n local fpat = \"(.-)\" .. pPattern\n local last_end = 1\n local s, e, cap = pString:find(fpat, 1)\n while s do\n if s ~= 1 or cap ~= \"\" then\n table.insert(Table,cap)\n end\n last_end = e+1\n s, e, cap = pString:find(fpat, last_end)\n end\n if last_end <= #pString then\n cap = pString:sub(last_end)\n table.insert(Table, cap)\n end\n return Table\n end\n\nfunction FilterEventsByTagName(events, tagName)\n local result = {}\n for _, event in pairs(events) do\n if contains(event.tags, tagName) then\n table.insert(result, event)\n end\n end\n return result\n end"}, {"path": "lua/com/globals.lua", "data": "I = 1\nII = 2\nIII = 3\nIV = 4\nV = 5\nVI = 6\nVII = 7\n\nDegreeStringValues = {\n I = I,\n II = II,\n III = III,\n IV = IV,\n V = V,\n VI = VI,\n VII = VII\n}\n\nMajorScaleSemitones = {\n I = 0,\n II = 2,\n III = 4,\n IV = 5,\n V = 7,\n VI = 9,\n VII = 11\n}\n\nC = 0\nCIS = 1\nDES = 1\nD = 2\nDIS = 3\nES = 3\nE = 4\nFES = 4\nF = 5\nFIS = 6\nGES = 6\nG = 7\nGIS = 8\nAS = 8\nA = 9\nAIS = 10\nBES = 10\nB = 11\nCES = 11\n"}, {"path": "lua/com/inspect.lua", "data": "local inspect ={\n _VERSION = 'inspect.lua 3.1.0',\n _URL = 'http://github.com/kikito/inspect.lua',\n _DESCRIPTION = 'human-readable representations of tables',\n _LICENSE = [[\n MIT LICENSE\n\n Copyright (c) 2013 Enrique Garc\u00eda Cota\n\n Permission is hereby granted, free of charge, to any person obtaining a\n copy of this software and associated documentation files (the\n \"Software\"), to deal in the Software without restriction, including\n without limitation the rights to use, copy, modify, merge, publish,\n distribute, sublicense, and/or sell copies of the Software, and to\n permit persons to whom the Software is furnished to do so, subject to\n the following conditions:\n\n The above copyright notice and this permission notice shall be included\n in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n ]]\n}\n\nlocal tostring = tostring\n\ninspect.KEY = setmetatable({}, {__tostring = function() return 'inspect.KEY' end})\ninspect.METATABLE = setmetatable({}, {__tostring = function() return 'inspect.METATABLE' end})\n\nlocal function rawpairs(t)\n return next, t, nil\nend\n\n-- Apostrophizes the string if it has quotes, but not aphostrophes\n-- Otherwise, it returns a regular quoted string\nlocal function smartQuote(str)\n if str:match('\"') and not str:match(\"'\") then\n return \"'\" .. str .. \"'\"\n end\n return '\"' .. str:gsub('\"', '\\\\\"') .. '\"'\nend\n\n-- \\a => '\\\\a', \\0 => '\\\\0', 31 => '\\31'\nlocal shortControlCharEscapes = {\n [\"\\a\"] = \"\\\\a\", [\"\\b\"] = \"\\\\b\", [\"\\f\"] = \"\\\\f\", [\"\\n\"] = \"\\\\n\",\n [\"\\r\"] = \"\\\\r\", [\"\\t\"] = \"\\\\t\", [\"\\v\"] = \"\\\\v\"\n}\nlocal longControlCharEscapes = {} -- \\a => nil, \\0 => \\000, 31 => \\031\nfor i=0, 31 do\n local ch = string.char(i)\n if not shortControlCharEscapes[ch] then\n shortControlCharEscapes[ch] = \"\\\\\"..i\n longControlCharEscapes[ch] = string.format(\"\\\\%03d\", i)\n end\nend\n\nlocal function escape(str)\n return (str:gsub(\"\\\\\", \"\\\\\\\\\")\n :gsub(\"(%c)%f[0-9]\", longControlCharEscapes)\n :gsub(\"%c\", shortControlCharEscapes))\nend\n\nlocal function isIdentifier(str)\n return type(str) == 'string' and str:match( \"^[_%a][_%a%d]*$\" )\nend\n\nlocal function isSequenceKey(k, sequenceLength)\n return type(k) == 'number'\n and 1 <= k\n and k <= sequenceLength\n and math.floor(k) == k\nend\n\nlocal defaultTypeOrders = {\n ['number'] = 1, ['boolean'] = 2, ['string'] = 3, ['table'] = 4,\n ['function'] = 5, ['userdata'] = 6, ['thread'] = 7\n}\n\nlocal function sortKeys(a, b)\n local ta, tb = type(a), type(b)\n\n -- strings and numbers are sorted numerically/alphabetically\n if ta == tb and (ta == 'string' or ta == 'number') then return a < b end\n\n local dta, dtb = defaultTypeOrders[ta], defaultTypeOrders[tb]\n -- Two default types are compared according to the defaultTypeOrders table\n if dta and dtb then return defaultTypeOrders[ta] < defaultTypeOrders[tb]\n elseif dta then return true -- default types before custom ones\n elseif dtb then return false -- custom types after default ones\n end\n\n -- custom types are sorted out alphabetically\n return ta < tb\nend\n\n-- For implementation reasons, the behavior of rawlen & # is \"undefined\" when\n-- tables aren't pure sequences. So we implement our own # operator.\nlocal function getSequenceLength(t)\n local len = 1\n local v = rawget(t,len)\n while v ~= nil do\n len = len + 1\n v = rawget(t,len)\n end\n return len - 1\nend\n\nlocal function getNonSequentialKeys(t)\n local keys, keysLength = {}, 0\n local sequenceLength = getSequenceLength(t)\n for k,_ in rawpairs(t) do\n if not isSequenceKey(k, sequenceLength) then\n keysLength = keysLength + 1\n keys[keysLength] = k\n end\n end\n table.sort(keys, sortKeys)\n return keys, keysLength, sequenceLength\nend\n\nlocal function countTableAppearances(t, tableAppearances)\n tableAppearances = tableAppearances or {}\n\n if type(t) == 'table' then\n if not tableAppearances[t] then\n tableAppearances[t] = 1\n for k,v in rawpairs(t) do\n countTableAppearances(k, tableAppearances)\n countTableAppearances(v, tableAppearances)\n end\n countTableAppearances(getmetatable(t), tableAppearances)\n else\n tableAppearances[t] = tableAppearances[t] + 1\n end\n end\n\n return tableAppearances\nend\n\nlocal copySequence = function(s)\n local copy, len = {}, #s\n for i=1, len do copy[i] = s[i] end\n return copy, len\nend\n\nlocal function makePath(path, ...)\n local keys = {...}\n local newPath, len = copySequence(path)\n for i=1, #keys do\n newPath[len + i] = keys[i]\n end\n return newPath\nend\n\nlocal function processRecursive(process, item, path, visited)\n if item == nil then return nil end\n if visited[item] then return visited[item] end\n\n local processed = process(item, path)\n if type(processed) == 'table' then\n local processedCopy = {}\n visited[item] = processedCopy\n local processedKey\n\n for k,v in rawpairs(processed) do\n processedKey = processRecursive(process, k, makePath(path, k, inspect.KEY), visited)\n if processedKey ~= nil then\n processedCopy[processedKey] = processRecursive(process, v, makePath(path, processedKey), visited)\n end\n end\n\n local mt = processRecursive(process, getmetatable(processed), makePath(path, inspect.METATABLE), visited)\n if type(mt) ~= 'table' then mt = nil end -- ignore not nil/table __metatable field\n setmetatable(processedCopy, mt)\n processed = processedCopy\n end\n return processed\nend\n\n\n\n-------------------------------------------------------------------\n\nlocal Inspector = {}\nlocal Inspector_mt = {__index = Inspector}\n\nfunction Inspector:puts(...)\n local args = {...}\n local buffer = self.buffer\n local len = #buffer\n for i=1, #args do\n len = len + 1\n buffer[len] = args[i]\n end\nend\n\nfunction Inspector:down(f)\n self.level = self.level + 1\n f()\n self.level = self.level - 1\nend\n\nfunction Inspector:tabify()\n self:puts(self.newline, string.rep(self.indent, self.level))\nend\n\nfunction Inspector:alreadyVisited(v)\n return self.ids[v] ~= nil\nend\n\nfunction Inspector:getId(v)\n local id = self.ids[v]\n if not id then\n local tv = type(v)\n id = (self.maxIds[tv] or 0) + 1\n self.maxIds[tv] = id\n self.ids[v] = id\n end\n return tostring(id)\nend\n\nfunction Inspector:putKey(k)\n if isIdentifier(k) then return self:puts(k) end\n self:puts(\"[\")\n self:putValue(k)\n self:puts(\"]\")\nend\n\nfunction Inspector:putTable(t)\n if t == inspect.KEY or t == inspect.METATABLE then\n self:puts(tostring(t))\n elseif self:alreadyVisited(t) then\n self:puts('<table ', self:getId(t), '>')\n elseif self.level >= self.depth then\n self:puts('{...}')\n else\n if self.tableAppearances[t] > 1 then self:puts('<', self:getId(t), '>') end\n\n local nonSequentialKeys, nonSequentialKeysLength, sequenceLength = getNonSequentialKeys(t)\n local mt = getmetatable(t)\n\n self:puts('{')\n self:down(function()\n local count = 0\n for i=1, sequenceLength do\n if count > 0 then self:puts(',') end\n self:puts(' ')\n self:putValue(t[i])\n count = count + 1\n end\n\n for i=1, nonSequentialKeysLength do\n local k = nonSequentialKeys[i]\n if count > 0 then self:puts(',') end\n self:tabify()\n self:putKey(k)\n self:puts(' = ')\n self:putValue(t[k])\n count = count + 1\n end\n\n if type(mt) == 'table' then\n if count > 0 then self:puts(',') end\n self:tabify()\n self:puts('<metatable> = ')\n self:putValue(mt)\n end\n end)\n\n if nonSequentialKeysLength > 0 or type(mt) == 'table' then -- result is multi-lined. Justify closing }\n self:tabify()\n elseif sequenceLength > 0 then -- array tables have one extra space before closing }\n self:puts(' ')\n end\n\n self:puts('}')\n end\nend\n\nfunction Inspector:putValue(v)\n local tv = type(v)\n\n if tv == 'string' then\n self:puts(smartQuote(escape(v)))\n elseif tv == 'number' or tv == 'boolean' or tv == 'nil' or\n tv == 'cdata' or tv == 'ctype' then\n self:puts(tostring(v))\n elseif tv == 'table' then\n self:putTable(v)\n else\n self:puts('<', tv, ' ', self:getId(v), '>')\n end\nend\n\n-------------------------------------------------------------------\n\nfunction inspect.inspect(root, options)\n options = options or {}\n\n local depth = options.depth or math.huge\n local newline = options.newline or '\\n'\n local indent = options.indent or ' '\n local process = options.process\n\n if process then\n root = processRecursive(process, root, {}, {})\n end\n\n local inspector = setmetatable({\n depth = depth,\n level = 0,\n buffer = {},\n ids = {},\n maxIds = {},\n newline = newline,\n indent = indent,\n tableAppearances = countTableAppearances(root)\n }, Inspector_mt)\n\n inspector:putValue(root)\n\n return table.concat(inspector.buffer)\nend\n\nsetmetatable(inspect, { __call = function(_, ...) return inspect.inspect(...) end })\n\nreturn inspect\n"}, {"path": "lua/com/tests.lua", "data": "require \"com/com\"\nrequire \"com/globals\"\n\nfunction testpitchdiff(a, b, expected)\n local diff = relpitchdiff(a, b)\n if diff ~= expected then\n print(\"pitchdiff: \" .. a .. \"-\" .. b .. \"~=\" .. expected .. \"(\" .. diff .. \")\" )\n end\nend\n\ntestpitchdiff( 0, 0, 0)\ntestpitchdiff( 0, 5, 5)\ntestpitchdiff( 5, 0, -5)\ntestpitchdiff( 0, 6, -6)\ntestpitchdiff( 6, 0, 6)\ntestpitchdiff( 7, 0, 5)\ntestpitchdiff( 0, 7, -5)\ntestpitchdiff( 7, 1, 6)\ntestpitchdiff( 1, 7, -6)\ntestpitchdiff( 7, 11, 4)\ntestpitchdiff(11, 7, -4)\ntestpitchdiff( 0, 10, -2)\ntestpitchdiff(10, 0, 2)\ntestpitchdiff( 5, 9, 4)\ntestpitchdiff( 9, 5, -4)\ntestpitchdiff( 5, 11, -6)\ntestpitchdiff(11, 5, 6)\ntestpitchdiff( 9, 11, 2)\ntestpitchdiff(11, 9, -2)\ntestpitchdiff(11, 1, 2)\ntestpitchdiff( 1, 11, -2)\ntestpitchdiff( 12, 24, 0)\n\n\nx = tokeyvalue({\"a\", 100, \"b\", 200, \"c\", 300})\nassert(x.a == 100)\nassert(x.b == 200)\nassert(x.c == 300)\n\n\nassert( toMidiPitch({pitch=C, octave=0}) == 60)\nassert( toMidiPitch({pitch=C, octave=1}) == 72)\nassert( toMidiPitch({pitch=CIS, octave=1}) == 73)\nassert( toMidiPitch({pitch=C, octave=-1}) == 48)"}, {"path": "lua/mods/_drumRudimentsRepository.lua", "data": "-- A definition of drum rudiments.\n-- The actual rudiment duration dosen't matter. At the end, the sequence\n-- will be ajdusted, so that it fits into the duration of the related event.\n-- The relations between the different durations is what matters.\n-- For example\n-- A rudiment with four quarters, played over the duration of one eight:\n-- every rudiment quarter will become eventually a 32th\nR=\"R\"\nL=\"L\"\n\nFlamType = \"flam\"\nDragType = \"drag\"\n\n-- durations\nlocal _4 = 1\nlocal _8 = 1/2\nlocal _16 = 1/4\nlocal _32 = 1/8 \nlocal _4t = _4 / 3\nlocal _8t = _8 / 3\nlocal _16t = _16 / 3\nlocal _32t = _32 / 3\n-- velocity factors\nAccent = \"accent\"\nUnaccented = \"unaccented\"\nGraceNote = \"grace note\"\n\nlocal ac = Accent\nlocal un = Unaccented\n\n\n-- create a rudiment sequence event\nlocal function Stroke(which, duration, velocityClass)\n if velocityClass == nil then\n velocityClass = Accent\n end\n return { which=which, duration=duration, velocityClass = velocityClass }\nend\n\nlocal function Flam(which, duration, velocityClass)\n if velocityClass == nil then\n velocityClass = Accent\n end\n return { which=which, duration=duration, velocityClass = velocityClass, type = FlamType}\nend\n\nlocal function Drag(which, duration, velocityClass)\n if velocityClass == nil then\n velocityClass = Accent\n end\n return { which=which, duration=duration, velocityClass = velocityClass, type = DragType}\nend\n\nlocal S = Stroke\n\nlocal function Diddle(which, duration)\n return {\n S(which, duration, un), S(which, duration, un)\n }\nend\n\n-- returns L for R and R for L.\nfunction Alt(which)\n if which == L then\n return R\n elseif which == R then\n return L\n end\n return nil\nend\n\n-- alternates the \"Hand\" value (which).\n-- \"L\" -> \"R\"\n-- \"R\" -> \"L\"\nfunction AlternateEvent(event)\n local copy = deepcopy(event)\n copy.which = Alt(event.which)\n return copy\nend\n\n-- Creates a alternating stroke sequence RL...n or LR...n.\n-- @param startingEvent: the first event. All further created events are unaccented.\n-- @param numberOfPerformances: the number of the total performances. One RL means one performance.\nlocal function Alternate(startingEvent, numberOfPerformances)\n if numberOfPerformances == nil then\n numberOfPerformances = 1\n end\n local result = {startingEvent}\n local which = startingEvent.which\n for i = 0, (numberOfPerformances-1)*2, 1 do\n which = Alt(which)\n table.insert(result, S(which, startingEvent.duration, un))\n end\n return result\nend\n\n-- Creates a sequence of variable args.\n-- An argument can be either a array of events or a single event\nlocal function Seq(...)\n local args = table.pack(...)\n local result = {}\n for i=1,args.n do\n local arg = args[i]\n local isEvent = arg.which ~= nil\n if isEvent then\n table.insert(result, arg)\n else\n for key, event in pairs(arg) do\n table.insert(result, event)\n end\n end\n end\n return result\nend\n\nRudiments = {\n [\"singleStrokeRoll\"] =\n { S(R, _4), S(L, _4) },\n [\"doubleStrokeRoll\"] =\n { S(R, _4), S(R, _4), S(L, _4), S(L, _4) },\n [\"trippleStrokeRoll\"] =\n { S(R, _4), S(R, _4), S(R, _4), S(L, _4), S(L, _4), S(L, _4) },\n [\"fiveStrokeRoll\"] =\n { S(R, _32, un), S(R, _32, un), S(L, _32, un), S(L, _32, un), S(R, _8, ac) },\n [\"singleStrokeFour\"] =\n { S(R, _4t), S(L, _4t), S(R, _4t), S(L, _4) },\n [\"singleStrokeSeven\"] =\n { S(R, _8t), S(L, _8t), S(R, _8t), S(L, _8t), S(R, _8t), S(L, _8t), S(R, _4) },\n [\"multipleBounceRoll\"] =\n { S(R, _32, un), S(R, _32, un), S(R, _32, un), S(R, _32, un),\n S(L, _32, un), S(L, _32, un), S(L, _32, un), S(L, _32, un)},\n [\"sixStrokeRoll\"] =\n Seq(S(R, _8, ac), Diddle(L, _16), Diddle(R, _16), S(L, _8, ac)),\n [\"sevenStrokeRoll\"] =\n Seq(Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), S(R, _8, ac)),\n [\"nineStrokeRoll\"] =\n Seq(Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), S(R, _8, ac)),\n [\"tenStrokeRoll\"] =\n Seq(Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), S(R, _8, ac), S(L, _8, ac)),\n [\"elevenStrokeRoll\"] =\n Seq(Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), S(L, _8, ac)),\n [\"thirteenStrokeRoll\"] =\n Seq(Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), S(R, _8, ac)),\n [\"fifteenStrokeRoll\"] =\n Seq(Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), S(L, _8, ac)),\n [\"seventeenStrokeRoll\"] =\n Seq(Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), S(R, _8, ac)),\n [\"paradiddle\"] =\n Seq(Alternate(S(R, _16, ac)), Diddle(R, _16)),\n [\"doubleParadiddle\"] =\n Seq(Alternate(S(R, _16, ac), 2), Diddle(R, _16)),\n [\"trippleParadiddle\"] =\n Seq(Alternate(S(R, _16, ac), 3), Diddle(R, _16)),\n [\"paradiddlediddle\"] =\n Seq(Alternate(S(R, _16, ac)), Diddle(R, _16), Diddle(L, _16)),\n [\"flam\"] =\n Seq(Flam(R, _4)),\n [\"flamAccent\"] =\n Seq(Flam(R, _8, ac), S(L, _8, un), S(R, _8, un)),\n [\"flamTap\"] =\n Seq(Flam(R, _16, ac), S(R, _16, un)),\n [\"flamacue\"] =\n Seq(Flam(R, _16, un), S(L, _16, ac), S(R, _16, un), S(L, _16, un), Flam(R, _4, un)),\n [\"flamParadiddle\"] =\n Seq(Flam(R, _16, ac), S(L, _16, un), Diddle(R, _16)),\n [\"singleFlammedMill\"] =\n Seq(Flam(R, _16, ac), S(R, _16, un), S(L, _16, un), S(R, _16, un)),\n [\"pataflafla\"] =\n Seq(Flam(R, _16, ac), S(L, _16, un), Diddle(R, _16), Flam(L, _16, ac)),\n [\"swissArmytriplet\"] =\n Seq(Flam(R, _16t, ac), S(R, _16t, un), S(L, _16t, un)),\n [\"invertedFlamTap\"] =\n Seq(Flam(R, _16, ac), S(L, _16, un)),\n [\"flamDrag\"] =\n Seq(Flam(R, _8, ac), S(L, _16, un), S(L, _16, un), S(R, _8, un)),\n [\"drag\"] =\n Seq(Drag(R, _4, ac)),\n [\"singleDragTap\"] =\n Seq(Drag(R, _8, un), S(L, _8, ac)),\n [\"doubleDragTap\"] =\n Seq(Drag(R, _8, un), Drag(R, _8, un), S(L, _8, ac)),\n [\"lesson25\"] =\n Seq(Drag(R, _16, un), S(L, _16, un), S(R, _8, ac)),\n [\"singleDragadiddle\"] =\n Seq(Drag(R, _16, ac), S(L, _16, un), Diddle(R, _16)),\n [\"dragParadiddle1\"] =\n Seq(S(R, _8, ac), Drag(R, _16, un), S(L, _16, un), Diddle(R, _16)),\n [\"dragParadiddle2\"] =\n Seq(S(R, _8, ac), Drag(R, _8, un), Drag(R, _16, un), S(L, _16, un), Diddle(R, _16)),\n [\"singleRatamacue\"] =\n Seq(Drag(R, _8t, un), S(L, _8t, un), S(R, _8t, un), S(L, _8, ac)),\n [\"doubleRatamacue\"] =\n Seq(Drag(R, _8, un), Drag(R, _8t, un), S(L, _8t, un), S(R, _8t, un), S(L, _8, ac)),\n [\"trippleRatamacue\"] =\n Seq(Drag(R, _8, un), Drag(R, _8, un), Drag(R, _8t, un), S(L, _8t, un), S(R, _8t, un), S(L, _8, ac)) \n}\n"}, {"path": "lua/mods/_events.lua", "data": "\nNote = {}\n\nfunction Note:new()\n local o = {}\n setmetatable(o, self)\n self.__index = self\n o.duration = 0\n o.isTied = false\n o.offset = 0\n o.pitches = {}\n o.type = \"note\"\n o.velocity = 0\n return o \nend\n\nfunction Note:addPitch(pitch, octave)\n table.insert(self.pitches, {pitch=pitch, octave=octave})\nend\n\nfunction pitchCompare(a, b)\n a = a.pitch + (a.octave * 12)\n b = b.pitch + (b.octave * 12)\n return a < b\nend\n\nfunction pitchCompareReversed(a, b)\n a = a.pitch + (a.octave * 12)\n b = b.pitch + (b.octave * 12)\n return a > b\nend\n"}, {"path": "lua/mods/drumRudiments.lua", "data": "-- <command name=\"drumRudiments\" where=\"mod\" using=\"lua/mod/drumRudiments.lua\">\n-- <)\n-- You can specify which notes are for `L` and `R` and performing duration.\n-- This will be achieved by using an chord as source material.\n-- The chord pitches will be used for `L` and `R`.\n-- The length of the chord event defines over which time the rudiment will be peformed.\n-- An event tag specifies which rudiment will be performed.\n-- For example:\n-- This plays one paradiddle over a length of 1 quarter\n-- using `sn1` for R and `sn2` for L:\n-- ```\n-- /mod: drumRudiments/\\n\n-- R L \\n\n-- \"paradiddle\"@<\"sn1\" \"sn2\">4\\n\n-- ```\n-- Examples:\n-- **a single paradiddle**\n-- ```language=Werckmeister\\n\n--using \"lua/mods/drumRudiments.lua\";\\n\n--tempo: 150;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef:piano MyDevice _ch=0 _pc=118;\\n\n--[\\n\n--instrument: piano;\\n\n--{\\n\n-- /mod: drumRudiments/\\n\n-- -- a paradiddle (RLRR) with c' for R and c for L\\n\n-- \"paradiddle\"@<c' c>1\\n\n--}\\n\n--]\\n\n-- ```\n-- **repeating**\n-- ```language=Werckmeister\\n\n--using \"lua/mods/drumRudiments.lua\";\\n\n--tempo: 120;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef:piano MyDevice _ch=0 _pc=118;\\n\n--[\\n\n--instrument: piano;\\n\n--{\\n\n-- /mod: drumRudiments/\\n\n-- -- performs 4 paradiddles (RLRR LRLL RLRR LRLL) with c' for R and c for L\\n\n-- \"4x paradiddle\"@<c' c>1\\n\n--}\\n\n--]\\n\n-- ```\n-- **orchestration**\n-- If you want to orchestrate a rudiment over a drum set,\n-- you are able to define more R & L notes. *(The total number of the notes has to be even.)*\n-- ```language=Werckmeister\\n\n--using \"lua/mods/drumRudiments.lua\";\\n\n--tempo: 120;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef:piano MyDevice _ch=0 _pc=118;\\n\n--[\\n\n--instrument: piano;\\n\n--{\\n\n-- /mod: drumRudiments/\\n\n-- -- performs 4 paradiddles (RLRR LRLL RLRR LRLL) with \\n\n-- -- c' for R1 and c for L1\\n\n-- -- and c, for R2 and c,, for L2.\\n\n-- -- The final sequence will be: c'(R1) c(L1) c,(R2) c,,(R1) ... \\n\n-- \"4x paradiddle\"@<c' c c, c,,>1\n--}\\n\n--]\\n\n-- ```\n-- **Supported Rudiments**\n--<ul style=\"font-size: 0.9em;\">\n--<li>singleStrokeRoll</li>\n--<li>doubleStrokeRoll</li>\n--<li>trippleStrokeRoll</li>\n--<li>fiveStrokeRoll</li>\n--<li>singleStrokeFour</li>\n--<li>singleStrokeSeven</li>\n--<li>multipleBounceRoll</li>\n--<li>sixStrokeRoll</li>\n--<li>sevenStrokeRoll</li>\n--<li>nineStrokeRoll</li>\n--<li>tenStrokeRoll</li>\n--<li>elevenStrokeRoll</li>\n--<li>thirteenStrokeRoll</li>\n--<li>fifteenStrokeRoll</li>\n--<li>seventeenStrokeRoll</li>\n--<li>paradiddle</li>\n--<li>doubleParadiddle</li>\n--<li>trippleParadiddle</li>\n--<li>paradiddlediddle</li>\n--<li>flam</li>\n--<li>flamAccent</li>\n--<li>flamTap</li>\n--<li>flamacue</li>\n--<li>flamParadiddle</li>\n--<li>singleFlammedMill</li>\n--<li>pataflafla</li>\n--<li>swissArmytriplet</li>\n--<li>invertedFlamTap</li>\n--<li>flamDrag</li>\n--<li>singleDragTap</li>\n--<li>doubleDragTap</li>\n--<li>lesson25</li>\n--<li>singleDragadiddle</li>\n--<li>dragParadiddle1</li>\n--<li>dragParadiddle2</li>\n--<li>singleRatamacue</li>\n--<li>doubleRatamacue</li>\n--<li>trippleRatamacue</li>\n--</ul>\n-- ]]>\n-- </command>\n-- <param name=\"velocityFactorAccented\" optional=\"1\" type=\"0..1\">The velocity factor for accented notes (Default=1)</param>\n-- <param name=\"velocityFactorUnaccented\" optional=\"1\" type=\"0..1\">The velocity factor for unaccented notes (Default=0.7)</param>\n-- <param name=\"velocityFactorGraceNote\" optional=\"1\" type=\"0..1\">The velocity factor for accented notes (Default=1)</param>\n-- <param name=\"flamOffset\" optional=\"1\" type=\"0..N\">The offset in quartes when to perform the grace note before the actual note (Default=0.05)</param>\n-- <param name=\"dragOffset\" optional=\"1\" type=\"0..N\">The offset in quartes when to perform the two grace notes before the actual note (Default=0.05)</param>\n\n\n\nrequire \"lua/com/com\"\nrequire \"_drumRudimentsRepository\"\nrequire \"_events\"\n\nparameters = {\n { name=\"velocityFactorAccented\", default=\"1\" },\n { name=\"velocityFactorUnaccented\", default=\"0.7\" },\n { name=\"velocityFactorGraceNote\", default=\"0.2\" },\n { name=\"flamOffset\", default=\"0.05\" },\n { name=\"dragOffset\", default=\"0.05\" },\n}\n\n\nSupportedRepeatTags = {\n [\"2x\"] = 2,\n [\"3x\"] = 3,\n [\"4x\"] = 4,\n [\"5x\"] = 5,\n [\"6x\"] = 6,\n [\"7x\"] = 7,\n [\"8x\"] = 8,\n [\"9x\"] = 9,\n [\"10x\"] = 10,\n [\"11x\"] = 11,\n [\"12x\"] = 12,\n [\"13x\"] = 13,\n [\"14x\"] = 14,\n [\"15x\"] = 15,\n [\"16x\"] = 16,\n [\"17x\"] = 17,\n [\"18x\"] = 18,\n [\"19x\"] = 19,\n [\"20x\"] = 20,\n [\"21x\"] = 21,\n [\"22x\"] = 22,\n [\"23x\"] = 23,\n [\"24x\"] = 24,\n [\"25x\"] = 25,\n [\"26x\"] = 26,\n [\"27x\"] = 27,\n [\"28x\"] = 28,\n [\"29x\"] = 29,\n [\"30x\"] = 30,\n [\"31x\"] = 31,\n [\"32x\"] = 32,\n}\n\nlocal tiedEventCache = {\n [\"offset\"] = 0,\n [\"duration\"] = 0,\n [\"originEvent\"] = nil\n}\n\nlocal function newTiedEventCache(event)\n tiedEventCache.duration = event.duration\n tiedEventCache.originEvent = event\nend\n\nlocal function isTiedEventCacheEmpty()\n return tiedEventCache.originEvent == nil\nend\n\nlocal function clearTiedEventCache()\n tiedEventCache.originEvent = nil\n tiedEventCache.duration = 0\n tiedEventCache.offset = 0\nend\n\nlocal function getPossibleRudimentEvent(events)\n local firstEvent = events[1]\n if not isTiedEventCacheEmpty() then\n tiedEventCache.duration = tiedEventCache.duration + firstEvent.duration\n tiedEventCache.offset = tiedEventCache.offset - firstEvent.duration\n if firstEvent.isTied then\n return nil\n end\n end\n if not isTiedEventCacheEmpty() and not firstEvent.isTied then\n firstEvent = tiedEventCache.originEvent\n firstEvent.isTied = false\n firstEvent.offset = tiedEventCache.offset\n firstEvent.duration = tiedEventCache.duration\n clearTiedEventCache()\n end\n return firstEvent\nend\n\n\nfunction perform(events, params, timeinfo)\n local firstEvent = getPossibleRudimentEvent(events)\n if (firstEvent == nil) then\n return {}\n end\n if #events == 0 or #firstEvent.tags == 0 then\n return events\n end\n if firstEvent.duration == 0 then\n return events\n end\n local rudimentPerformer = RudimentPerformer:new()\n rudimentPerformer.velocityFactorAccented = tonumber(params.velocityFactorAccented)\n rudimentPerformer.velocityFactorUnaccented = tonumber(params.velocityFactorUnaccented)\n rudimentPerformer.velocityFactorGraceNote = tonumber(params.velocityFactorGraceNote)\n rudimentPerformer.flamOffset = tonumber(params.flamOffset)\n rudimentPerformer.dragOffset = tonumber(params.dragOffset)\n rudimentPerformer:setSourceEvent(firstEvent)\n if rudimentPerformer.rudiment == nil then\n return events\n end\n if firstEvent.isTied then\n newTiedEventCache(firstEvent)\n return {}\n end\n local rudimentEvents = rudimentPerformer:perform();\n return rudimentEvents\nend\n\nRudimentPerformer = {}\nfunction RudimentPerformer:new(o)\n local o = o or {}\n setmetatable(o, self)\n self.__index = self\n self.idxL = 1\n self.idxR = 1\n self.offset = 0\n self.velocityFactorAccented = 1\n self.velocityFactorUnaccented = 0.7\n self.velocityFactorGraceNote = 0.2\n self.flamOffset = 0.05\n self.dragOffset = 0.05\n return o\nend\n\nfunction RudimentPerformer:findRudimentName(tags)\n for idx, tag in pairs(tags) do\n local val = Rudiments[tag]\n if val ~= nil then\n return tag\n end\n end\n return nil\nend\n\nfunction RudimentPerformer:findRepeatTagValue(tags)\n for idx, tag in pairs(tags) do\n local val = SupportedRepeatTags[tag]\n if val ~= nil then\n return val\n end\n end\n return nil\nend\n\nfunction RudimentPerformer:setSourceEvent(event)\n local rudimentName = self:findRudimentName(event.tags)\n local source = event.pitches\n self.offset = event.offset\n self.rudiment = Rudiments[rudimentName]\n if self.rudiment == nil then\n return\n end\n if #source % 2 ~= 0 then\n -- not enough events\n error(\"not enough chord pitches for rudiment \" .. rudimentName)\n end\n local repeatCount = self:findRepeatTagValue(event.tags)\n if repeatCount ~= nil then\n self:repeat_(repeatCount)\n end\n self.duration = event.duration\n self.ls = {}\n self.rs = {}\n self.velocity = event.velocity\n for idx, pitch in pairs(source) do\n if idx % 2 == 0 then\n table.insert(self.ls, pitch)\n else\n table.insert(self.rs, pitch)\n end\n end\nend\n\nfunction RudimentPerformer:repeat_(count)\n local sequence = {}\n for i=1,count do\n local useAlternation = i % 2 == 1\n for idx, rudimentEvent in pairs(self.rudiment) do\n local event = rudimentEvent\n if (useAlternation) then\n event = AlternateEvent(event)\n end\n table.insert(sequence, event)\n end\n end\n self.rudiment = sequence\nend\n\nfunction RudimentPerformer:l()\n local l = self.ls[self.idxL]\n self.idxL = self.idxL + 1\n if self.idxL > #self.ls then\n self.idxL = 1\n end\n return l\nend\n\nfunction RudimentPerformer:r()\n local r = self.rs[self.idxR]\n self.idxR = self.idxR + 1\n if self.idxR > #self.ls then\n self.idxR = 1\n end\n return r\nend\n\nfunction RudimentPerformer:nextPitch(lOrR)\n if lOrR == nil then\n error(\"invalid L R value for rudiment: nil\")\n end\n if lOrR == L then\n return self:l()\n elseif lOrR == R then\n return self:r()\n end\n error(\"invalid L R value for rudiment: \" .. lOrR)\nend\n\n-- duration of the rudiment definition\nfunction RudimentPerformer:defDuration()\n local duration = 0\n for idx, rudiment in pairs(self.rudiment) do\n duration = duration + rudiment.duration\n end\n return duration\nend\n\nfunction RudimentPerformer:getVelocityFactor(rudiment)\n if rudiment.velocityClass == Accent then\n return self.velocityFactorAccented\n end\n if rudiment.velocityClass == Unaccented then\n return self.velocityFactorUnaccented\n end\n if rudiment.velocityClass == GraceNote then\n return self.velocityFactorGraceNote\n end\n error(\"no velocity value for class \" .. rudiment.velocityClass)\nend\n\nfunction RudimentPerformer:perform()\n local events = {}\n local offset = self.offset\n local durationFactor = self.duration / self:defDuration()\n for idx, rudiment in pairs(self.rudiment) do\n local type = rudiment.type\n local which = rudiment.which\n local duration = rudiment.duration\n local velocityFactor = self:getVelocityFactor(rudiment)\n local note = Note:new()\n note.duration = duration * durationFactor\n note.velocity = self.velocity * velocityFactor\n note.offset = offset\n local pitch = self:nextPitch(which)\n note:addPitch(pitch.pitch, pitch.octave)\n if type == FlamType then\n self:performFlam(events, note, Alt(which))\n end\n if type == DragType then\n self:performDrag(events, note, Alt(which))\n end \n table.insert(events, note)\n offset = offset + note.duration\n end\n return events\nend\n\n\nfunction RudimentPerformer:performFlam(events, note, which)\n local flamDuration = self.flamOffset\n local flam = Note:new()\n local pitch = self:nextPitch(which)\n flam:addPitch(pitch.pitch, pitch.octave)\n flam.duration = flamDuration\n flam.velocity = note.velocity * self.velocityFactorGraceNote\n flam.offset = note.offset\n note.offset = note.offset + flamDuration\n note.duration = note.duration\n table.insert(events, flam)\nend\n\nfunction RudimentPerformer:performDrag(events, note, which)\n local flamDuration = self.dragOffset\n local pitch = self:nextPitch(which)\n local flam = Note:new()\n flam:addPitch(pitch.pitch, pitch.octave)\n flam.duration = flamDuration\n flam.velocity = note.velocity * self.velocityFactorGraceNote\n flam.offset = note.offset\n table.insert(events, flam)\n\n flam = Note:new()\n flam:addPitch(pitch.pitch, pitch.octave)\n flam.duration = flamDuration\n flam.velocity = note.velocity * self.velocityFactorGraceNote\n flam.offset = note.offset + flamDuration\n table.insert(events, flam)\n\n note.offset = note.offset + flamDuration * 2\n note.duration = note.duration\n\nend\n"}, {"path": "lua/mods/guitarStroke.lua", "data": "-- <command name=\"guitarStroke\" where=\"mod\" using=\"lua/mod/guitarStroke.lua\">\n-- <![CDATA[\n-- Simulates guitar strokes as mini arpeggios.\n-- *Note: the alternate mode works only if this mod is set via instrumentConf.*\n-- ```\n-- -- does not work: \\n\n-- [ \\n\n-- { \\n\n-- /mod: guitarStroke _mode=alternate/\\n\n-- } \\n\n-- ] \\n\n-- ```\n-- ```\n-- -- does work: \\n\n-- instrumentConf: myInstrument mod guitarStroke _mode=alternate; \\n\n-- ```\n-- **Example**\n-- ```language=Werckmeister\\n\n--using \"lua/mods/guitarStroke.lua\";\\n\n--tempo: 120;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef: piano MyDevice _ch=0 _pc=24;\\n\n--instrumentConf: piano mod guitarStroke _mode=alternate _value=16; \\n\n--[\\n\n--instrument: piano;\\n\n--{\\n\n-- <c e g b>4 <c e g b>4 <c eb g bb>2 | <c eb g bb>2 <c eb g bb>2\\n\n--}\\n\n--]\\n\n-- ```\n-- ]]>\n-- </command>\n-- <param name=\"direction\" optional=\"1\" type=\"[up,down,alternate]\">Specifies the start direction of the stroke</param>\n-- <param name=\"value\" optional=\"1\" type=\"[1,2,4,8,...]\">the duration of one arpeggio event. (Default=64)</param>\n-- <param name=\"mode\" optional=\"1\" type=\"[normal,alternate]\">Deprecated: Use _direction=alternate instead. Perform only one stroke direction (normal) or alternates between up and down. (Default=normal)</param>\n-- <param name=\"withTag\" optional=\"1\" type=\"tagName\">if set, only events including this tag will be processed.</param>\n\nrequire \"lua/com/com\"\nrequire \"_events\"\n\nlocal NO_TAG = \"WM_NO_TAG\"\n\nparameters = {\n -- can be up, down\n { name=\"direction\", default=\"up\" },\n -- can be 1, 2, 4, 8, 16, 32, 64, ...\n { name=\"value\", default=\"64\" },\n -- can be normal, alternate\n { name=\"mode\", default=\"normal\" },\n { name=\"withTag\", default=\"WM_NO_TAG\" }\n\n}\n\nlocal direction = nil\nlocal mode = nil\n\nfunction perform(eventsOrigin, params, timeinfo)\n local withTag = params.withTag\n local filtered_events\n if withTag ~= NO_TAG then\n filtered_events = FilterEventsByTagName(eventsOrigin, withTag)\n else\n filtered_events = eventsOrigin\n end\n if #eventsOrigin > 2 or #filtered_events == 0 then\n return eventsOrigin\n end\n checkLegacyNamedParams(params, \"direction\", \"mode\", \"value\")\n local directionParam = params.direction\n local modeParam = params.mode\n local value = params.value\n value = tonumber(value)\n local event = eventsOrigin[1]\n local events = { }\n local comparer = pitchCompare\n \n if modeParam == \"alternate\" then\n directionParam = \"alternate\"\n end\n\n if direction ==nil then\n direction = directionParam\n end\n\n if direction == \"down\" then\n comparer = pitchCompareReversed\n if directionParam == \"alternate\" then\n direction = \"up\"\n end\n else\n comparer = pitchCompare\n if directionParam == \"alternate\" then\n direction = \"down\"\n end\n end\n\n local duration = 1 / value\n table.sort( event.pitches, comparer)\n for i, pitch in pairs(event.pitches) do\n local note = Note:new()\n local newOffset = event.offset + (i-1) * duration\n note.offset = newOffset\n note.duration = event.duration - newOffset\n note.isTied = event.isTied\n note.velocity = event.velocity\n note:addPitch(pitch.pitch, pitch.octave)\n table.insert(events, note) \n end\n return events\nend"}, {"path": "lua/mods/legato.lua", "data": "-- <command name=\"legato\" where=\"mod\" using=\"lua/mod/legato.lua\">\n-- Performs every note legato. It is also possible to tag single notes.\n-- If a tag is given, only the tagged notes are performed legato.\n-- ```language=Werckmeister\\n\n--using \"lua/mods/legato.lua\";\\n\n--tempo: 140;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef:piano MyDevice _ch=0 _pc=0;\\n\n--[\\n\n--instrument: piano;\\n\n--{\\n\n-- /mod: legato _forTag=leg _amount=100/\\n\n-- -- only the `d` will be performed legato. \\n\n-- c \"leg\"@d e f\\n\n--}\\n\n--]\\n\n-- ```\n-- </command>\n-- <param name=\"forTag\" optional=\"1\" type=\"text\">Specifies a tag name. If set only events with this tag name will be affected by the legato mod.</param>\n-- <param name=\"amount\" optional=\"1\" type=\"0..100\">The ammount of the legato effect</param>\n\nrequire \"lua/com/com\"\n\nlocal defaultAmountValue = 50\n\nparameters = {\n -- specify a tag name. If set only events with this tag name will be affected by the staccato mod. \n { name=\"forTag\", default=ParameterValueNoTag },\n -- the ammount of the staccato mod. Can be between 0 and 100\n { name=\"amount\", default=\"50\" }\n}\n\nfunction perform(events, params, timeinfo)\n checkLegacyNamedParams(params, \"forTag\", \"amount\")\n local tag = params.forTag\n if tag == ParameterValueNoTag then\n tag = nil\n end\n local amount = tonumber(params.amount)\n local factor = 100 - ((amount/100) * 90)\n factor = factor / 100\n for i, event in pairs(events) do\n if tag == nil or contains(event.tags, tag) then\n event.duration = event.duration / factor\n end\n end\n return events\nend"}, {"path": "lua/mods/myArpeggio.lua", "data": "-- <command name=\"myArpeggio\" where=\"mod\" using=\"lua/mod/myArpeggio.lua\">\n-- <![CDATA[\n-- A simple arpeggio implementation.\n-- **Example**\n-- ```language=Werckmeister\\n\n--using \"lua/mods/myArpeggio.lua\";\\n\n--tempo: 120;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef: piano MyDevice _ch=0 _pc=0;\\n\n--[\\n\n--instrument: piano;\\n\n--{\\n\n-- /do: myArpeggio/ \\n\n-- <c e g b>2 \\n\n-- /do: myArpeggio _direction=down/ \\n\n-- <c eb g bb>2 \\n\n--}\\n\n--]\\n\n-- ```\n-- ]]>\n-- </command>\n-- <param name=\"style\" optional=\"1\" type=\"[normal,legato]\">Performs the arpeggio normal or legato</param>\n-- <param name=\"direction\" optional=\"1\" type=\"[up,down]\">the direction of the arpeggio. (Default=up)</param>\n\nrequire \"lua/com/com\"\nrequire \"_events\"\n\n\nparameters = {\n -- can be legato, normal\n { name=\"style\", default=\"normal\" },\n -- can be up, down\n { name=\"direction\", default=\"up\" }\n}\n\nfunction perform(eventsOrigin, params, timeinfo)\n checkLegacyNamedParams(params, \"direction\", \"style\")\n local event = eventsOrigin[1]\n local events = { }\n local comparer = pitchCompare\n local direction = params.direction\n local style = params.style\n\n if direction == \"down\" then\n comparer = pitchCompareReversed\n end\n local duration = event.duration / #event.pitches\n table.sort( event.pitches, comparer)\n for i, pitch in pairs(event.pitches) do\n local note = Note:new()\n note.duration = duration\n if style == \"legato\" then\n note.duration = event.duration\n end\n note.velocity = event.velocity\n note.offset = (i-1) * duration\n note.isTied = event.isTied\n note:addPitch(pitch.pitch, pitch.octave)\n table.insert(events, note) \n end\n return events\nend"}, {"path": "lua/mods/staccato.lua", "data": "-- <command name=\"staccato\" where=\"mod\" using=\"lua/mod/staccato.lua\">\n-- Performs every note staccato. It is also possible to tag single notes.\n-- If a tag is given, only the tagged notes are performed staccato.\n-- ```language=Werckmeister\\n\n--using \"lua/mods/staccato.lua\";\\n\n--tempo: 140;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef:piano MyDevice _ch=0 _pc=0;\\n\n--[\\n\n--instrument: piano;\\n\n--{\\n\n-- /mod: staccato _forTag=stac _amount=100/\\n\n-- -- only the `d` will be performed staccato. \\n\n-- c \"stac\"@d e f\\n\n--}\\n\n--]\\n\n-- ``` \n-- </command>\n-- <param name=\"forTag\" optional=\"1\" type=\"text\">Specifies a tag name. If set only events with this tag name will be affected by the staccato mod.</param>\n-- <param name=\"amount\" optional=\"1\" type=\"0..100\">The ammount of the staccato effect</param>\n\nrequire \"lua/com/com\"\n\n\nparameters = {\n -- specify a tag name. If set only events with this tag name will be affected by the staccato mod. \n { name=\"forTag\", default=ParameterValueNoTag },\n -- the ammount of the staccato mod. Can be between 0 and 100\n { name=\"amount\", default=\"50\" }\n}\n\nfunction perform(events, params, timeinfo)\n checkLegacyNamedParams(params, \"forTag\", \"amount\")\n local tag = params.forTag\n if tag == ParameterValueNoTag then\n tag = nil\n end\n local amount = tonumber(params.amount)\n local factor = 100 - ((amount/100) * 90)\n factor = factor / 100\n for i, event in pairs(events) do\n if tag == nil or contains(event.tags, tag) then\n event.duration = event.duration * factor\n end\n end\n return events\nend"}, {"path": "lua/mods/swing.lua", "data": "-- <command name=\"swing\" where=\"mod\" using=\"lua/mod/swing.lua\">\n-- Performs a swing groove.\n-- ```language=Werckmeister\\n\n--using \"lua/mods/swing.lua\";\\n\n--tempo: 120;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef: piano MyDevice _ch=0 _pc=0;\\n\n--[\\n\n--instrument: piano;\\n\n--{\\n\n-- /mod: swing/\\n\n-- c8 c c c c c c c\n--}\\n\n--]\\n\n-- ```\n-- </command>\n-- <param name=\"grid\" optional=\"1\" type=\"[8, 16]\">Performs the swing offset either on 8th or 16th. (Default=8)</param>\n-- <param name=\"offset\" optional=\"1\" type=\"0..100\">The ammount of the swing offset</param>\n\nrequire \"lua/com/com\"\n\nparameters = {\n -- can be 8, 16\n { name=\"grid\", default=\"8\" },\n -- can be between 0 and 100\n { name=\"offset\", default=\"100\" }\n}\n\n\nfunction compareQuarters(a, b)\n return math.abs(a-b) <= 0.1\nend\n\nfunction isLaidBack(timeinfo, grid)\n local q = timeinfo.quarterPosition\n q = q - math.floor(q)\n if grid == 16 then\n return compareQuarters(q, 0.25) or compareQuarters(q, 0.75)\n end\n return compareQuarters(q, 0.5)\nend\n\nfunction offset(grid, offset)\n if offset == nil then\n offset = 100\n end\n offset = offset / 100\n local max = 0.25\n if grid == 16 then\n max = 0.09\n end\n return offset * max\nend\n\nfunction perform(events, params, timeinfo)\n checkLegacyNamedParams(params, \"grid\", \"offset\")\n local gridValue = tonumber(params.grid)\n local offsetValue = tonumber(params.offset)\n for i, event in pairs(events) do\n if isLaidBack(timeinfo, gridValue) then\n event.offset = offset(gridValue, offsetValue)\n event.velocity = event.velocity\n end\n end\n return events\nend"}, {"path": "lua/devices/integra7/_integra7.lua", "data": "require \"_model\"\nrequire \"_mfx\"\n\nlocal parameter_partId_placeholder = \"xxx\"\n\nlocal function create_id(parameter_node_id_template, part_id)\n return string.gsub(parameter_node_id_template, parameter_partId_placeholder, part_id)\nend\n\nfunction Create_Sysex_Message_For_Node(part_id, parameter_node_id_template, value, device_id)\n local node_id = create_id(parameter_node_id_template, part_id)\n local nodeinfo = Get_Node(node_id)\n if nodeinfo == nil then\n error(\"no node found for id:\" .. node_id)\n end\n nodeinfo.node:setvalue(value)\n local sysex = Create_SysexMessage(nodeinfo, device_id)\n return sysex\nend\n\nlocal function get_set_mfx_default_values_sysex(mfxType, part_id, mfx_id, device_id)\n local prm = Mfx_Table[mfx_id + 1]\n local payload = {}\n local from = -1\n local nodes = Mfx_Nodes[mfxType]\n for i = 1, #nodes, 1 do\n local node = nodes[i]\n if node.pos == nil then goto continue end\n if from < 0 then from = i end\n local default_value_index = i - from + 1\n if default_value_index <= #prm.leaf then\n local default_value = prm.leaf[default_value_index].init\n local bytesize = Get_Byte_Size(node.valueByteSizeType)\n local bytes = Value_To_Bytes(default_value, bytesize)\n payload = ConcatTable(payload, bytes)\n end\n ::continue::\n end\n local idtemplate = Mfx_Ids[mfxType] .. \"-\" .. nodes[from].id\n local id = create_id(idtemplate, part_id)\n local addr = Get_Adress(id)\n local sysex = Create_Sysex_Message_For_Payload(addr, payload, device_id)\n return sysex\nend\n\nfunction Get_Set_Mfx_Type_Messages(mfxType, part_id, mfx_id, device_id)\n local nodeid_template = Mfx_Type_Ids[mfxType]\n return {\n Create_Sysex_Message_For_Node(part_id, nodeid_template, mfx_id, device_id),\n get_set_mfx_default_values_sysex(mfxType, part_id, mfx_id, device_id)\n }\nend"}, {"path": "lua/devices/integra7/_mfx.lua", "data": "Mfx_Table = {\n {\n desc = 'THRU',\n leaf = {\n { desc= 'Control Assign 1', id= 'MFX_THRU_CTRL_ASGN1', init= 0, min= 0, max= 0 },\n { desc= 'Control Assign 2', id= 'MFX_THRU_CTRL_ASGN2', init= 0, min= 0, max= 0 },\n { desc= 'Control Assign 3', id= 'MFX_THRU_CTRL_ASGN3', init= 0, min= 0, max= 0 },\n { desc= 'Control Assign 4', id= 'MFX_THRU_CTRL_ASGN4', init= 0, min= 0, max= 0 },\n { desc= '_', id= 'MFX_THRU_DUMMY', init= 32768, min= 32768, max= 32768 }\n }\n },\n {\n desc= 'EQUALIZER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STEQ_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_STEQ_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_STEQ_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_STEQ_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Low Freq', id= 'MFX_STEQ_LO_FREQ', init= 32769, min= 32768, max= 32769 },\n { desc= 'Low Gain', id= 'MFX_STEQ_LO_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'Mid1 Freq', id= 'MFX_STEQ_MID1_FREQ', init= 32775, min= 32768, max= 32784 },\n { desc= 'Mid1 Gain', id= 'MFX_STEQ_MID1_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'Mid1 Q', id= 'MFX_STEQ_MID1_Q', init= 32768, min= 32768, max= 32772 },\n { desc= 'Mid2 Freq', id= 'MFX_STEQ_MID2_FREQ', init= 32778, min= 32768, max= 32784 },\n { desc= 'Mid2 Gain', id= 'MFX_STEQ_MID2_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'Mid2 Q', id= 'MFX_STEQ_MID2_Q', init= 32768, min= 32768, max= 32772 },\n { desc= 'High Freq', id= 'MFX_STEQ_HI_FREQ', init= 32769, min= 32768, max= 32770 },\n { desc= 'High Gain', id= 'MFX_STEQ_HI_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_STEQ_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'SPECTRUM',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_SPECT_CTRL_ASGN1', init= 0, min= 0, max= 1 },\n { desc= 'Control Assign 2', id= 'MFX_SPECT_CTRL_ASGN2', init= 0, min= 0, max= 1 },\n { desc= 'Control Assign 3', id= 'MFX_SPECT_CTRL_ASGN3', init= 0, min= 0, max= 1 },\n { desc= 'Control Assign 4', id= 'MFX_SPECT_CTRL_ASGN4', init= 0, min= 0, max= 1 },\n { desc= 'Band1 (250Hz)', id= 'MFX_SPECT_BAND1', init= 32783, min= 32768, max= 32798 },\n { desc= 'Band2 (500Hz)', id= 'MFX_SPECT_BAND2', init= 32783, min= 32768, max= 32798 },\n { desc= 'Band3 (1000Hz)', id= 'MFX_SPECT_BAND3', init= 32783, min= 32768, max= 32798 },\n { desc= 'Band4 (1250Hz)', id= 'MFX_SPECT_BAND4', init= 32783, min= 32768, max= 32798 },\n { desc= 'Band5 (2000Hz)', id= 'MFX_SPECT_BAND5', init= 32783, min= 32768, max= 32798 },\n { desc= 'Band6 (3150Hz)', id= 'MFX_SPECT_BAND6', init= 32783, min= 32768, max= 32798 },\n { desc= 'Band7 (4000Hz)', id= 'MFX_SPECT_BAND7', init= 32783, min= 32768, max= 32798 },\n { desc= 'Band8 (8000Hz)', id= 'MFX_SPECT_BAND8', init= 32783, min= 32768, max= 32798 },\n { desc= 'Q', id= 'MFX_SPECT_WIDTH', init= 32768, min= 32768, max= 32772 },\n { desc= 'Level', id= 'MFX_SPECT_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'LOW BOOST',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_BOOST_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_BOOST_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_BOOST_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_BOOST_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Boost Frequency', id= 'MFX_BOOST_FREQ', init= 32772, min= 32768, max= 32776 },\n { desc= 'Boost Gain', id= 'MFX_BOOST_GAIN', init= 32774, min= 32768, max= 32780 },\n { desc= 'Boost Width', id= 'MFX_BOOST_WIDTH', init= 32768, min= 32768, max= 32770 },\n { desc= 'Low Gain', id= 'MFX_BOOST_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_BOOST_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_BOOST_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'STEP FILTER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STEPFIL_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_STEPFIL_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_STEPFIL_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_STEPFIL_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Step 01', id= 'MFX_STEPFIL_STEP01', init= 32828, min= 32768, max= 32895 },\n { desc= 'Step 02', id= 'MFX_STEPFIL_STEP02', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 03', id= 'MFX_STEPFIL_STEP03', init= 32828, min= 32768, max= 32895 },\n { desc= 'Step 04', id= 'MFX_STEPFIL_STEP04', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 05', id= 'MFX_STEPFIL_STEP05', init= 32828, min= 32768, max= 32895 },\n { desc= 'Step 06', id= 'MFX_STEPFIL_STEP06', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 07', id= 'MFX_STEPFIL_STEP07', init= 32828, min= 32768, max= 32895 },\n { desc= 'Step 08', id= 'MFX_STEPFIL_STEP08', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 09', id= 'MFX_STEPFIL_STEP09', init= 32828, min= 32768, max= 32895 },\n { desc= 'Step 10', id= 'MFX_STEPFIL_STEP10', init= 32828, min= 32768, max= 32895 },\n { desc= 'Step 11', id= 'MFX_STEPFIL_STEP11', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 12', id= 'MFX_STEPFIL_STEP12', init= 32828, min= 32768, max= 32895 },\n { desc= 'Step 13', id= 'MFX_STEPFIL_STEP13', init= 32828, min= 32768, max= 32895 },\n { desc= 'Step 14', id= 'MFX_STEPFIL_STEP14', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 15', id= 'MFX_STEPFIL_STEP15', init= 32828, min= 32768, max= 32895 },\n { desc= 'Step 16', id= 'MFX_STEPFIL_STEP16', init= 32798, min= 32768, max= 32895 },\n { desc= 'Rate (sync sw)', id= 'MFX_STEPFIL_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_STEPFIL_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_STEPFIL_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Attack', id= 'MFX_STEPFIL_ATTACK', init= 32818, min= 32768, max= 32895 },\n { desc= 'Filter Type', id= 'MFX_STEPFIL_FILT_TYPE', init= 32770, min= 32768, max= 32771 },\n { desc= 'Filter Slope', id= 'MFX_STEPFIL_FILT_SLOPE', init= 32770, min= 32768, max= 32770 },\n { desc= 'Filter Resonance', id= 'MFX_STEPFIL_FILT_RESO', init= 32808, min= 32768, max= 32895 },\n { desc= 'Filter Gain', id= 'MFX_STEPFIL_FILT_GAIN', init= 32768, min= 32768, max= 32780 },\n { desc= 'Level', id= 'MFX_STEPFIL_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'ENHANCER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_EH_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_EH_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_EH_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_EH_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Sens', id= 'MFX_EH_SENS', init= 32832, min= 32768, max= 32895 },\n { desc= 'Mix', id= 'MFX_EH_MIX', init= 32832, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_EH_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_EH_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_EH_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'AUTO WAH',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_WAH_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_WAH_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_WAH_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_WAH_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Filter Type', id= 'MFX_WAH_MODE', init= 32769, min= 32768, max= 32769 },\n { desc= 'Manual', id= 'MFX_WAH_MANUAL', init= 32828, min= 32768, max= 32895 },\n { desc= 'Peak', id= 'MFX_WAH_PEAK', init= 32808, min= 32768, max= 32895 },\n { desc= 'Sens', id= 'MFX_WAH_SENS', init= 32768, min= 32768, max= 32895 },\n { desc= 'Polarity', id= 'MFX_WAH_POLARITY', init= 32768, min= 32768, max= 32769 },\n { desc= 'Rate (sync sw)', id= 'MFX_WAH_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_WAH_RATE_HZ', init= 32808, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_WAH_RATE_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_WAH_DEPTH', init= 32828, min= 32768, max= 32895 },\n { desc= 'Phase', id= 'MFX_WAH_PHS', init= 32768, min= 32768, max= 32858 },\n { desc= 'Low Gain', id= 'MFX_WAH_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_WAH_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_WAH_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'HUMANIZER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_FORMANT_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_FORMANT_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_FORMANT_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_FORMANT_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Drive Sw', id= 'MFX_FORMANT_DRIVE_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Drive', id= 'MFX_FORMANT_DRV', init= 32895, min= 32768, max= 32895 },\n { desc= 'Vowel1', id= 'MFX_FORMANT_VOWEL1', init= 32772, min= 32768, max= 32772 },\n { desc= 'Vowel2', id= 'MFX_FORMANT_VOWEL2', init= 32768, min= 32768, max= 32772 },\n { desc= 'Rate (sync sw)', id= 'MFX_FORMANT_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_FORMANT_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_FORMANT_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_FORMANT_DEPTH', init= 32895, min= 32768, max= 32895 },\n { desc= 'Input Sync Sw', id= 'MFX_FORMANT_KS_SW', init= 32768, min= 32768, max= 32769 },\n { desc= 'Input Sync Threshold', id= 'MFX_FORMANT_KS_THRE', init= 32828, min= 32768, max= 32895 },\n { desc= 'Manual', id= 'MFX_FORMANT_MANUAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Low Gain', id= 'MFX_FORMANT_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_FORMANT_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Pan', id= 'MFX_FORMANT_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_FORMANT_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'SPEAKER SIMULATOR',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_SPSIM_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_SPSIM_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_SPSIM_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_SPSIM_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Speaker Type', id= 'MFX_SPSIM_SP_TYPE', init= 32774, min= 32768, max= 32783 },\n { desc= 'Mic Setting', id= 'MFX_SPSIM_MIC_SETTING', init= 32769, min= 32768, max= 32770 },\n { desc= 'Mic Level', id= 'MFX_SPSIM_MIC_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= 'Direct Level', id= 'MFX_SPSIM_DIRECT_LEVEL', init= 32768, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_SPSIM_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'PHASER 1',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STPH_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_STPH_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_STPH_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_STPH_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Mode', id= 'MFX_STPH_MODE', init= 32770, min= 32768, max= 32770 },\n { desc= 'Manual', id= 'MFX_STPH_MANUAL', init= 32832, min= 32768, max= 32895 },\n { desc= 'Rate (sync sw)', id= 'MFX_STPH_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_STPH_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_STPH_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_STPH_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Polarity', id= 'MFX_STPH_POLARITY', init= 32769, min= 32768, max= 32769 },\n { desc= 'Resonance', id= 'MFX_STPH_RESO', init= 32808, min= 32768, max= 32895 },\n { desc= 'Cross Feedback', id= 'MFX_STPH_XFBK', init= 32817, min= 32768, max= 32866 },\n { desc= 'Mix', id= 'MFX_STPH_MIX', init= 32895, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_STPH_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_STPH_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_STPH_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'PHASER 2',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_PHA2_CTRL_ASGN1', init= 0, min= 0, max= 1 },\n { desc= 'Control Assign 2', id= 'MFX_PHA2_CTRL_ASGN2', init= 0, min= 0, max= 1 },\n { desc= 'Control Assign 3', id= 'MFX_PHA2_CTRL_ASGN3', init= 0, min= 0, max= 1 },\n { desc= 'Control Assign 4', id= 'MFX_PHA2_CTRL_ASGN4', init= 0, min= 0, max= 1 },\n { desc= 'Rate', id= 'MFX_PHA2_RATE', init= 32818, min= 32768, max= 32868 },\n { desc= 'Color', id= 'MFX_PHA2_COLOR', init= 32768, min= 32768, max= 32769 },\n { desc= 'Low Gain', id= 'MFX_PHA2_LO_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_PHA2_HI_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_PHA2_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'PHASER 3',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_PHA3_CTRL_ASGN1', init= 0, min= 0, max= 1 },\n { desc= 'Control Assign 2', id= 'MFX_PHA3_CTRL_ASGN2', init= 0, min= 0, max= 1 },\n { desc= 'Control Assign 3', id= 'MFX_PHA3_CTRL_ASGN3', init= 0, min= 0, max= 1 },\n { desc= 'Control Assign 4', id= 'MFX_PHA3_CTRL_ASGN4', init= 0, min= 0, max= 1 },\n { desc= 'Speed', id= 'MFX_PHA3_SPEED', init= 32818, min= 32768, max= 32868 },\n { desc= 'Low Gain', id= 'MFX_PHA3_LO_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_PHA3_HI_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_PHA3_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'STEP PHASER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STEPPH_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_STEPPH_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_STEPPH_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_STEPPH_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Mode', id= 'MFX_STEPPH_MODE', init= 32770, min= 32768, max= 32770 },\n { desc= 'Manual', id= 'MFX_STEPPH_MANUAL', init= 32832, min= 32768, max= 32895 },\n { desc= 'Rate (sync sw)', id= 'MFX_STEPPH_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_STEPPH_RATE_HZ', init= 32798, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_STEPPH_RATE_NOTE', init= 32781, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_STEPPH_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Polarity', id= 'MFX_STEPPH_POLARITY', init= 32769, min= 32768, max= 32769 },\n { desc= 'Resonance', id= 'MFX_STEPPH_RESO', init= 32808, min= 32768, max= 32895 },\n { desc= 'Cross Feedback', id= 'MFX_STEPPH_XFBK', init= 32817, min= 32768, max= 32866 },\n { desc= 'Step Rate (sync sw)', id= 'MFX_STEPPH_S_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Step Rate (Hz)', id= 'MFX_STEPPH_S_RATE_HZ', init= 32848, min= 32769, max= 32968 },\n { desc= 'Step Rate (note)', id= 'MFX_STEPPH_S_RATE_NOTE', init= 32774, min= 32768, max= 32789 },\n { desc= 'Mix', id= 'MFX_STEPPH_MIX', init= 32895, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_STEPPH_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_STEPPH_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_STEPPH_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'MULTI STAGE PHASER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_MTPH_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_MTPH_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_MTPH_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_MTPH_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Mode', id= 'MFX_MTPH_MODE', init= 32773, min= 32768, max= 32773 },\n { desc= 'Manual', id= 'MFX_MTPH_MANUAL', init= 32828, min= 32768, max= 32895 },\n { desc= 'Rate (sync sw)', id= 'MFX_MTPH_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_MTPH_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_MTPH_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_MTPH_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Resonance', id= 'MFX_MTPH_RESO', init= 32808, min= 32768, max= 32895 },\n { desc= 'Mix', id= 'MFX_MTPH_MIX', init= 32895, min= 32768, max= 32895 },\n { desc= 'Pan', id= 'MFX_MTPH_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_MTPH_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_MTPH_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_MTPH_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'INFINITE PHASER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_INFPH_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_INFPH_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_INFPH_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_INFPH_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Mode', id= 'MFX_INFPH_MODE', init= 32771, min= 32768, max= 32771 },\n { desc= 'Speed', id= 'MFX_INFPH_SPEED', init= 32908, min= 32768, max= 32968 },\n { desc= 'Resonance', id= 'MFX_INFPH_RESO', init= 32848, min= 32768, max= 32895 },\n { desc= 'Mix', id= 'MFX_INFPH_MIX', init= 32895, min= 32768, max= 32895 },\n { desc= 'Pan', id= 'MFX_INFPH_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_INFPH_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_INFPH_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_INFPH_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'RING MODULATOR',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_RING_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_RING_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_RING_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_RING_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Frequency', id= 'MFX_RING_FREQ', init= 32828, min= 32768, max= 32895 },\n { desc= 'Sens', id= 'MFX_RING_SENS', init= 32768, min= 32768, max= 32895 },\n { desc= 'Polarity', id= 'MFX_RING_POLARITY', init= 32768, min= 32768, max= 32769 },\n { desc= 'Low Gain', id= 'MFX_RING_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_RING_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_RING_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_RING_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'TREMOLO',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_TRE_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_TRE_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_TRE_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_TRE_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Mod Wave', id= 'MFX_TRE_MOD_WAVE', init= 32768, min= 32768, max= 32772 },\n { desc= 'Rate (sync sw)', id= 'MFX_TRE_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_TRE_RATE_HZ', init= 32848, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_TRE_RATE_NOTE', init= 32777, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_TRE_DEPTH', init= 32864, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_TRE_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_TRE_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_TRE_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'AUTO PAN',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_AUTOPAN_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_AUTOPAN_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_AUTOPAN_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_AUTOPAN_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Mod Wave', id= 'MFX_AUTOPAN_MOD_WAVE', init= 32768, min= 32768, max= 32772 },\n { desc= 'Rate (sync sw)', id= 'MFX_AUTOPAN_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_AUTOPAN_RATE_HZ', init= 32848, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_AUTOPAN_RATE_NOTE', init= 32777, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_AUTOPAN_DEPTH', init= 32864, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_AUTOPAN_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_AUTOPAN_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_AUTOPAN_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'SLICER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_SLICER_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_SLICER_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_SLICER_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_SLICER_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Step 01', id= 'MFX_SLICER_STEP01', init= 32895, min= 32768, max= 32895 },\n { desc= 'Step 02', id= 'MFX_SLICER_STEP02', init= 32768, min= 32768, max= 32895 },\n { desc= 'Step 03', id= 'MFX_SLICER_STEP03', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 04', id= 'MFX_SLICER_STEP04', init= 32895, min= 32768, max= 32895 },\n { desc= 'Step 05', id= 'MFX_SLICER_STEP05', init= 32895, min= 32768, max= 32895 },\n { desc= 'Step 06', id= 'MFX_SLICER_STEP06', init= 32768, min= 32768, max= 32895 },\n { desc= 'Step 07', id= 'MFX_SLICER_STEP07', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 08', id= 'MFX_SLICER_STEP08', init= 32768, min= 32768, max= 32895 },\n { desc= 'Step 09', id= 'MFX_SLICER_STEP09', init= 32895, min= 32768, max= 32895 },\n { desc= 'Step 10', id= 'MFX_SLICER_STEP10', init= 32768, min= 32768, max= 32895 },\n { desc= 'Step 11', id= 'MFX_SLICER_STEP11', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 12', id= 'MFX_SLICER_STEP12', init= 32895, min= 32768, max= 32895 },\n { desc= 'Step 13', id= 'MFX_SLICER_STEP13', init= 32768, min= 32768, max= 32895 },\n { desc= 'Step 14', id= 'MFX_SLICER_STEP14', init= 32768, min= 32768, max= 32895 },\n { desc= 'Step 15', id= 'MFX_SLICER_STEP15', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 16', id= 'MFX_SLICER_STEP16', init= 32768, min= 32768, max= 32895 },\n { desc= 'Rate (sync sw)', id= 'MFX_SLICER_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_SLICER_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_SLICER_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Attack', id= 'MFX_SLICER_ATTACK', init= 32818, min= 32768, max= 32895 },\n { desc= 'Input Sync Sw', id= 'MFX_SLICER_RESET_SW', init= 32768, min= 32768, max= 32769 },\n { desc= 'Input Sync Threshold', id= 'MFX_SLICER_RESET_THRE', init= 32828, min= 32768, max= 32895 },\n { desc= 'Mode', id= 'MFX_SLICER_MODE', init= 32768, min= 32768, max= 32769 },\n { desc= 'Shuffle', id= 'MFX_SLICER_SHUFFLE', init= 32768, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_SLICER_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'ROTARY 1',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_ROT_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_ROT_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_ROT_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_ROT_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Speed', id= 'MFX_ROT_SPEED', init= 32768, min= 32768, max= 32769 },\n { desc= 'Woofer Slow Speed', id= 'MFX_ROT_WF_SLOW_SPEED', init= 32808, min= 32769, max= 32968 },\n { desc= 'Woofer Fast Speed', id= 'MFX_ROT_WF_FAST_SPEED', init= 32928, min= 32769, max= 32968 },\n { desc= 'Woofer Acceleration', id= 'MFX_ROT_WF_ACCEL', init= 32778, min= 32768, max= 32783 },\n { desc= 'Woofer Level', id= 'MFX_ROT_WF_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= 'Tweeter Slow Speed', id= 'MFX_ROT_TW_SLOW_SPEED', init= 32808, min= 32769, max= 32968 },\n { desc= 'Tweeter Fast Speed', id= 'MFX_ROT_TW_FAST_SPEED', init= 32928, min= 32769, max= 32968 },\n { desc= 'Tweeter Acceleration', id= 'MFX_ROT_TW_ACCEL', init= 32778, min= 32768, max= 32783 },\n { desc= 'Tweeter Level', id= 'MFX_ROT_TW_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= 'Separation', id= 'MFX_ROT_SEPA', init= 32895, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_ROT_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'ROTARY 2',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_VKROT_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_VKROT_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_VKROT_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_VKROT_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Speed', id= 'MFX_VKROT_SPEED', init= 32768, min= 32768, max= 32769 },\n { desc= 'Brake', id= 'MFX_VKROT_BRAKE', init= 32768, min= 32768, max= 32769 },\n { desc= 'Woofer Slow Speed', id= 'MFX_VKROT_WF_SLOW_SPEED', init= 32808, min= 32769, max= 32968 },\n { desc= 'Woofer Fast Speed', id= 'MFX_VKROT_WF_FAST_SPEED', init= 32928, min= 32769, max= 32968 },\n { desc= 'Woofer Trans Up', id= 'MFX_VKROT_WF_TRANS_UP', init= 32832, min= 32768, max= 32895 },\n { desc= 'Woofer Trans Down', id= 'MFX_VKROT_WF_TRANS_DW', init= 32832, min= 32768, max= 32895 },\n { desc= 'Woofer Level', id= 'MFX_VKROT_WF_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= 'Tweeter Slow Speed', id= 'MFX_VKROT_TW_SLOW_SPEED', init= 32808, min= 32769, max= 32968 },\n { desc= 'Tweeter Fast Speed', id= 'MFX_VKROT_TW_FAST_SPEED', init= 32928, min= 32769, max= 32968 },\n { desc= 'Tweeter Trans Up', id= 'MFX_VKROT_TW_TRANS_UP', init= 32832, min= 32768, max= 32895 },\n { desc= 'Tweeter Trans Down', id= 'MFX_VKROT_TW_TRANS_DW', init= 32832, min= 32768, max= 32895 },\n { desc= 'Tweeter Level', id= 'MFX_VKROT_TW_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= 'Spread', id= 'MFX_VKROT_SPREAD', init= 32778, min= 32768, max= 32778 },\n { desc= 'Low Gain', id= 'MFX_VKROT_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_VKROT_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_VKROT_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'ROTARY 3',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_ROT3_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_ROT3_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_ROT3_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_ROT3_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Speed', id= 'MFX_ROT3_SPEED', init= 32768, min= 32768, max= 32769 },\n { desc= 'Brake', id= 'MFX_ROT3_BRAKE', init= 32768, min= 32768, max= 32769 },\n { desc= 'Woofer Slow Speed', id= 'MFX_ROT3_WF_SLOW_SPEED', init= 32808, min= 32769, max= 32968 },\n { desc= 'Woofer Fast Speed', id= 'MFX_ROT3_WF_FAST_SPEED', init= 32928, min= 32769, max= 32968 },\n { desc= 'Woofer Trans Up', id= 'MFX_ROT3_WF_TRANS_UP', init= 32832, min= 32768, max= 32895 },\n { desc= 'Woofer Trans Down', id= 'MFX_ROT3_WF_TRANS_DW', init= 32832, min= 32768, max= 32895 },\n { desc= 'Woofer Level', id= 'MFX_ROT3_WF_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= 'Tweeter Slow Speed', id= 'MFX_ROT3_TW_SLOW_SPEED', init= 32808, min= 32769, max= 32968 },\n { desc= 'Tweeter Fast Speed', id= 'MFX_ROT3_TW_FAST_SPEED', init= 32928, min= 32769, max= 32968 },\n { desc= 'Tweeter Trans Up', id= 'MFX_ROT3_TW_TRANS_UP', init= 32832, min= 32768, max= 32895 },\n { desc= 'Tweeter Trans Down', id= 'MFX_ROT3_TW_TRANS_DW', init= 32832, min= 32768, max= 32895 },\n { desc= 'Tweeter Level', id= 'MFX_ROT3_TW_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= 'Spread', id= 'MFX_ROT3_SPREAD', init= 32778, min= 32768, max= 32778 },\n { desc= 'Low Gain', id= 'MFX_ROT3_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_ROT3_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_ROT3_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= 'OD Switch', id= 'MFX_ROT3_OD_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'OD Gain', id= 'MFX_ROT3_OD_GAIN', init= 32848, min= 32768, max= 32895 },\n { desc= 'OD Drive', id= 'MFX_ROT3_OD_DRIVE', init= 32868, min= 32768, max= 32895 },\n { desc= 'OD Level', id= 'MFX_ROT3_OD_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'CHORUS',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STCHO_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_STCHO_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_STCHO_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_STCHO_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Filter Type', id= 'MFX_STCHO_FILT', init= 32770, min= 32768, max= 32770 },\n { desc= 'Cutoff Freq', id= 'MFX_STCHO_SPLT', init= 32774, min= 32768, max= 32784 },\n { desc= 'Pre Delay', id= 'MFX_STCHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Rate (sync sw)', id= 'MFX_STCHO_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_STCHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_STCHO_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_STCHO_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Phase', id= 'MFX_STCHO_PHS', init= 32858, min= 32768, max= 32858 },\n { desc= 'Low Gain', id= 'MFX_STCHO_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_STCHO_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_STCHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_STCHO_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'FLANGER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STFLG_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_STFLG_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_STFLG_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_STFLG_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Filter Type', id= 'MFX_STFLG_FILT', init= 32770, min= 32768, max= 32770 },\n { desc= 'Cutoff Freq', id= 'MFX_STFLG_SPLT', init= 32774, min= 32768, max= 32784 },\n { desc= 'Pre Delay', id= 'MFX_STFLG_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Rate (sync sw)', id= 'MFX_STFLG_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_STFLG_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_STFLG_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_STFLG_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Phase', id= 'MFX_STFLG_PHS', init= 32858, min= 32768, max= 32858 },\n { desc= 'Feedback', id= 'MFX_STFLG_FBK', init= 32847, min= 32768, max= 32866 },\n { desc= 'Low Gain', id= 'MFX_STFLG_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_STFLG_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_STFLG_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_STFLG_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'STEP FLANGER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STEPFLG_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_STEPFLG_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_STEPFLG_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_STEPFLG_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Filter Type', id= 'MFX_STEPFLG_FILT', init= 32770, min= 32768, max= 32770 },\n { desc= 'Cutoff Freq', id= 'MFX_STEPFLG_SPLT', init= 32774, min= 32768, max= 32784 },\n { desc= 'Pre Delay', id= 'MFX_STEPFLG_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Rate (sync sw)', id= 'MFX_STEPFLG_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_STEPFLG_RATE_HZ', init= 32798, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_STEPFLG_RATE_NOTE', init= 32781, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_STEPFLG_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Phase', id= 'MFX_STEPFLG_PHS', init= 32858, min= 32768, max= 32858 },\n { desc= 'Feedback', id= 'MFX_STEPFLG_FBK', init= 32847, min= 32768, max= 32866 },\n { desc= 'Step Rate (sync sw)', id= 'MFX_STEPFLG_S_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Step Rate (Hz)', id= 'MFX_STEPFLG_S_RATE_HZ', init= 32848, min= 32769, max= 32968 },\n { desc= 'Step Rate (note)', id= 'MFX_STEPFLG_S_RATE_NOTE', init= 32774, min= 32768, max= 32789 },\n { desc= 'Low Gain', id= 'MFX_STEPFLG_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_STEPFLG_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_STEPFLG_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_STEPFLG_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'HEXA-CHORUS',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_HEXCHO_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_HEXCHO_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_HEXCHO_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_HEXCHO_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Pre Delay', id= 'MFX_HEXCHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Rate (sync sw)', id= 'MFX_HEXCHO_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_HEXCHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_HEXCHO_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_HEXCHO_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Pre Delay Deviation', id= 'MFX_HEXCHO_DLY_DEV', init= 32768, min= 32768, max= 32788 },\n { desc= 'Depth Deviation', id= 'MFX_HEXCHO_DEPTH_DEV', init= 32788, min= 32768, max= 32808 },\n { desc= 'Pan Deviation', id= 'MFX_HEXCHO_PAN_DEV', init= 32788, min= 32768, max= 32788 },\n { desc= 'Balance', id= 'MFX_HEXCHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_HEXCHO_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'TREMOLO CHORUS',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_TRECHO_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_TRECHO_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_TRECHO_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_TRECHO_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Pre Delay', id= 'MFX_TRECHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Chorus Rate (sync sw)', id= 'MFX_TRECHO_CHO_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Chorus Rate (Hz)', id= 'MFX_TRECHO_CHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Chorus Rate (note)', id= 'MFX_TRECHO_CHO_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Chorus Depth', id= 'MFX_TRECHO_CHO_DEPTH', init= 32818, min= 32768, max= 32895 },\n { desc= 'Tremolo Rate (sync sw)', id= 'MFX_TRECHO_TRE_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Tremolo Rate (Hz)', id= 'MFX_TRECHO_TRE_RATE_HZ', init= 32808, min= 32769, max= 32968 },\n { desc= 'Tremolo Rate (note)', id= 'MFX_TRECHO_TRE_RATE_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Tremolo Separation', id= 'MFX_TRECHO_TRE_SEPA', init= 32895, min= 32768, max= 32895 },\n { desc= 'Tremolo Phase', id= 'MFX_TRECHO_TRE_PHS', init= 32858, min= 32768, max= 32858 },\n { desc= 'Balance', id= 'MFX_TRECHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_TRECHO_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'SPACE-D',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_SPACED_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_SPACED_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_SPACED_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_SPACED_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Pre Delay', id= 'MFX_SPACED_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Rate (sync sw)', id= 'MFX_SPACED_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_SPACED_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_SPACED_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_SPACED_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Phase', id= 'MFX_SPACED_PHS', init= 32858, min= 32768, max= 32858 },\n { desc= 'Low Gain', id= 'MFX_SPACED_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_SPACED_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_SPACED_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_SPACED_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'OVERDRIVE',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_VSOD_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_VSOD_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_VSOD_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_VSOD_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Drive', id= 'MFX_VSOD_DRV', init= 32895, min= 32768, max= 32895 },\n { desc= 'Tone', id= 'MFX_VSOD_TONE', init= 32818, min= 32768, max= 32895 },\n { desc= 'Amp Sw', id= 'MFX_VSOD_AMP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Amp Type', id= 'MFX_VSOD_AMP_TYPE', init= 32768, min= 32768, max= 32771 },\n { desc= 'Low Gain', id= 'MFX_VSOD_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_VSOD_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Pan', id= 'MFX_VSOD_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_VSOD_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'DISTORTION',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_VSDST_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_VSDST_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_VSDST_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_VSDST_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Drive', id= 'MFX_VSDST_DRV', init= 32895, min= 32768, max= 32895 },\n { desc= 'Tone', id= 'MFX_VSDST_TONE', init= 32818, min= 32768, max= 32895 },\n { desc= 'Amp Sw', id= 'MFX_VSDST_AMP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Amp Type', id= 'MFX_VSDST_AMP_TYPE', init= 32771, min= 32768, max= 32771 },\n { desc= 'Low Gain', id= 'MFX_VSDST_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_VSDST_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Pan', id= 'MFX_VSDST_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_VSDST_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'GUITAR AMP SIMULATOR',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_GAMPSIM_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_GAMPSIM_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_GAMPSIM_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_GAMPSIM_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Pre Amp Sw', id= 'MFX_GAMPSIM_AMP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Pre Amp Type', id= 'MFX_GAMPSIM_AMP_TYPE', init= 32769, min= 32768, max= 32781 },\n { desc= 'Pre Amp Volume', id= 'MFX_GAMPSIM_AMP_VOLUME', init= 32848, min= 32768, max= 32895 },\n { desc= 'Pre Amp Master', id= 'MFX_GAMPSIM_AMP_MASTER', init= 32868, min= 32768, max= 32895 },\n { desc= 'Pre Amp Gain', id= 'MFX_GAMPSIM_AMP_GAIN', init= 32769, min= 32768, max= 32770 },\n { desc= 'Pre Amp Bass', id= 'MFX_GAMPSIM_AMP_BASS', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Middle', id= 'MFX_GAMPSIM_AMP_MIDDLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Treble', id= 'MFX_GAMPSIM_AMP_TREBLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Presence', id= 'MFX_GAMPSIM_AMP_PRESENCE', init= 32768, min= 32768, max= 32895 },\n { desc= 'Pre Amp Bright', id= 'MFX_GAMPSIM_AMP_BRIGHT', init= 32768, min= 32768, max= 32769 },\n { desc= 'Speaker Sw', id= 'MFX_GAMPSIM_SP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Speaker Type', id= 'MFX_GAMPSIM_SP_TYPE', init= 32772, min= 32768, max= 32783 },\n { desc= 'Mic Setting', id= 'MFX_GAMPSIM_MIC_SETTING', init= 32769, min= 32768, max= 32770 },\n { desc= 'Mic Level', id= 'MFX_GAMPSIM_MIC_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= 'Direct Level', id= 'MFX_GAMPSIM_DIRECT_LEVEL', init= 32768, min= 32768, max= 32895 },\n { desc= 'Pan', id= 'MFX_GAMPSIM_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_GAMPSIM_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'COMPRESSOR',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_COMP_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_COMP_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_COMP_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_COMP_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Attack', id= 'MFX_COMP_ATK', init= 32788, min= 32768, max= 32895 },\n { desc= 'Threshold', id= 'MFX_COMP_THRES', init= 32832, min= 32768, max= 32895 },\n { desc= 'Post Gain', id= 'MFX_COMP_GAIN', init= 32774, min= 32768, max= 32786 },\n { desc= 'Low Gain', id= 'MFX_COMP_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_COMP_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_COMP_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= '', id= 'MFX_COMP_RATIO', init= 32768, min= 32768, max= 32770 }\n }\n },\n\n {\n desc= 'LIMITER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_LIMIT_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_LIMIT_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_LIMIT_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_LIMIT_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Release', id= 'MFX_LIMIT_RELS', init= 32800, min= 32768, max= 32895 },\n { desc= 'Threshold', id= 'MFX_LIMIT_THRES', init= 32832, min= 32768, max= 32895 },\n { desc= 'Ratio', id= 'MFX_LIMIT_RATIO', init= 32770, min= 32768, max= 32771 },\n { desc= 'Post Gain', id= 'MFX_LIMIT_GAIN', init= 32774, min= 32768, max= 32786 },\n { desc= 'Low Gain', id= 'MFX_LIMIT_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_LIMIT_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_LIMIT_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'GATE',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_GATE_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_GATE_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_GATE_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_GATE_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Threshold', id= 'MFX_GATE_THRES', init= 32838, min= 32768, max= 32895 },\n { desc= 'Mode', id= 'MFX_GATE_MODE', init= 32768, min= 32768, max= 32769 },\n { desc= 'Attack', id= 'MFX_GATE_ATK', init= 32776, min= 32768, max= 32895 },\n { desc= 'Hold', id= 'MFX_GATE_HOLD', init= 32768, min= 32768, max= 32895 },\n { desc= 'Release', id= 'MFX_GATE_RELS', init= 32784, min= 32768, max= 32895 },\n { desc= 'Balance', id= 'MFX_GATE_BAL', init= 32868, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_GATE_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STDLY_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_STDLY_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_STDLY_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_STDLY_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Delay Left (sync sw)', id= 'MFX_STDLY_DLY_L_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Left (msec)', id= 'MFX_STDLY_DLY_L_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Delay Left (note)', id= 'MFX_STDLY_DLY_L_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay Right (sync sw)', id= 'MFX_STDLY_DLY_R_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Right (msec)', id= 'MFX_STDLY_DLY_R_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Delay Right (note)', id= 'MFX_STDLY_DLY_R_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Phase Left', id= 'MFX_STDLY_PHS_L', init= 32768, min= 32768, max= 32769 },\n { desc= 'Phase Right', id= 'MFX_STDLY_PHS_R', init= 32768, min= 32768, max= 32769 },\n { desc= 'Feedback Mode', id= 'MFX_STDLY_FBK_MODE', init= 32768, min= 32768, max= 32769 },\n { desc= 'Feedback', id= 'MFX_STDLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'HF Damp', id= 'MFX_STDLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Low Gain', id= 'MFX_STDLY_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_STDLY_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_STDLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_STDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'MODULATION DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_MODDLY_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_MODDLY_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_MODDLY_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_MODDLY_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Delay Left (sync sw)', id= 'MFX_MODDLY_DLY_L_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Left (msec)', id= 'MFX_MODDLY_DLY_L_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Delay Left (note)', id= 'MFX_MODDLY_DLY_L_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay Right (sync sw)', id= 'MFX_MODDLY_DLY_R_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Right (msec)', id= 'MFX_MODDLY_DLY_R_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Delay Right (note)', id= 'MFX_MODDLY_DLY_R_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Feedback Mode', id= 'MFX_MODDLY_FBK_MODE', init= 32768, min= 32768, max= 32769 },\n { desc= 'Feedback', id= 'MFX_MODDLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'HF Damp', id= 'MFX_MODDLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Rate (sync sw)', id= 'MFX_MODDLY_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_MODDLY_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_MODDLY_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_MODDLY_DEPTH', init= 32788, min= 32768, max= 32895 },\n { desc= 'Phase', id= 'MFX_MODDLY_PHS', init= 32858, min= 32768, max= 32858 },\n { desc= 'Low Gain', id= 'MFX_MODDLY_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_MODDLY_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_MODDLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_MODDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= '3TAP PAN DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_TRIDLY_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_TRIDLY_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_TRIDLY_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_TRIDLY_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Delay Left (sync sw)', id= 'MFX_TRIDLY_DLY_L_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Left (msec)', id= 'MFX_TRIDLY_DLY_L_MSEC', init= 33168, min= 32768, max= 35368 },\n { desc= 'Delay Left (note)', id= 'MFX_TRIDLY_DLY_L_NOTE', init= 32778, min= 32768, max= 32789 },\n { desc= 'Delay Right (sync sw)', id= 'MFX_TRIDLY_DLY_R_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Right (msec)', id= 'MFX_TRIDLY_DLY_R_MSEC', init= 33568, min= 32768, max= 35368 },\n { desc= 'Delay Right (note)', id= 'MFX_TRIDLY_DLY_R_NOTE', init= 32781, min= 32768, max= 32789 },\n { desc= 'Delay Center (sync sw)', id= 'MFX_TRIDLY_DLY_C_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Center (msec)', id= 'MFX_TRIDLY_DLY_C_MSEC', init= 33968, min= 32768, max= 35368 },\n { desc= 'Delay Center (note)', id= 'MFX_TRIDLY_DLY_C_NOTE', init= 32783, min= 32768, max= 32789 },\n { desc= 'Center Feedback', id= 'MFX_TRIDLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'HF Damp', id= 'MFX_TRIDLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Left Level ', id= 'MFX_TRIDLY_LEVEL_L', init= 32895, min= 32768, max= 32895 },\n { desc= 'Right Level', id= 'MFX_TRIDLY_LEVEL_R', init= 32895, min= 32768, max= 32895 },\n { desc= 'Center Level', id= 'MFX_TRIDLY_LEVEL_C', init= 32895, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_TRIDLY_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_TRIDLY_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_TRIDLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_TRIDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= '4TAP PAN DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_QUADDLY_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_QUADDLY_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_QUADDLY_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_QUADDLY_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Delay 1 Time (sync sw)', id= 'MFX_QUADDLY_DLY1_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 1 Time (msec)', id= 'MFX_QUADDLY_DLY1_MSEC', init= 33968, min= 32768, max= 35368 },\n { desc= 'Delay 1 Time (note)', id= 'MFX_QUADDLY_DLY1_NOTE', init= 32783, min= 32768, max= 32789 },\n { desc= 'Delay 2 Time (sync sw)', id= 'MFX_QUADDLY_DLY2_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 2 Time (msec)', id= 'MFX_QUADDLY_DLY2_MSEC', init= 33668, min= 32768, max= 35368 },\n { desc= 'Delay 2 Time (note)', id= 'MFX_QUADDLY_DLY2_NOTE', init= 32782, min= 32768, max= 32789 },\n { desc= 'Delay 3 Time (sync sw)', id= 'MFX_QUADDLY_DLY3_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 3 Time (msec)', id= 'MFX_QUADDLY_DLY3_MSEC', init= 33368, min= 32768, max= 35368 },\n { desc= 'Delay 3 Time (note)', id= 'MFX_QUADDLY_DLY3_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay 4 Time (sync sw)', id= 'MFX_QUADDLY_DLY4_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 4 Time (msec)', id= 'MFX_QUADDLY_DLY4_MSEC', init= 33068, min= 32768, max= 35368 },\n { desc= 'Delay 4 Time (note)', id= 'MFX_QUADDLY_DLY4_NOTE', init= 32777, min= 32768, max= 32789 },\n { desc= 'Delay 1 Feedback', id= 'MFX_QUADDLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'HF Damp', id= 'MFX_QUADDLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay 1 Level', id= 'MFX_QUADDLY_LEVEL1', init= 32895, min= 32768, max= 32895 },\n { desc= 'Delay 2 Level', id= 'MFX_QUADDLY_LEVEL2', init= 32895, min= 32768, max= 32895 },\n { desc= 'Delay 3 Level', id= 'MFX_QUADDLY_LEVEL3', init= 32895, min= 32768, max= 32895 },\n { desc= 'Delay 4 Level', id= 'MFX_QUADDLY_LEVEL4', init= 32895, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_QUADDLY_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_QUADDLY_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_QUADDLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_QUADDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'MULTI TAP DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_MTDLY_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_MTDLY_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_MTDLY_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_MTDLY_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Delay 1 Time (sync sw)', id= 'MFX_MTDLY_DLY1_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 1 Time (msec)', id= 'MFX_MTDLY_DLY1_MSEC', init= 33968, min= 32768, max= 35368 },\n { desc= 'Delay 1 Time (note)', id= 'MFX_MTDLY_DLY1_NOTE', init= 32783, min= 32768, max= 32789 },\n { desc= 'Delay 2 Time (sync sw)', id= 'MFX_MTDLY_DLY2_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 2 Time (msec)', id= 'MFX_MTDLY_DLY2_MSEC', init= 33668, min= 32768, max= 35368 },\n { desc= 'Delay 2 Time (note)', id= 'MFX_MTDLY_DLY2_NOTE', init= 32782, min= 32768, max= 32789 },\n { desc= 'Delay 3 Time (sync sw)', id= 'MFX_MTDLY_DLY3_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 3 Time (msec)', id= 'MFX_MTDLY_DLY3_MSEC', init= 33368, min= 32768, max= 35368 },\n { desc= 'Delay 3 Time (note)', id= 'MFX_MTDLY_DLY3_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay 4 Time (sync sw)', id= 'MFX_MTDLY_DLY4_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 4 Time (msec)', id= 'MFX_MTDLY_DLY4_MSEC', init= 33068, min= 32768, max= 35368 },\n { desc= 'Delay 4 Time (note)', id= 'MFX_MTDLY_DLY4_NOTE', init= 32777, min= 32768, max= 32789 },\n { desc= 'Delay 1 Feedback', id= 'MFX_MTDLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'HF Damp', id= 'MFX_MTDLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay 1 Pan', id= 'MFX_MTDLY_PAN1', init= 32768, min= 32768, max= 32895 },\n { desc= 'Delay 2 Pan', id= 'MFX_MTDLY_PAN2', init= 32895, min= 32768, max= 32895 },\n { desc= 'Delay 3 Pan', id= 'MFX_MTDLY_PAN3', init= 32800, min= 32768, max= 32895 },\n { desc= 'Delay 4 Pan', id= 'MFX_MTDLY_PAN4', init= 32864, min= 32768, max= 32895 },\n { desc= 'Delay 1 Level', id= 'MFX_MTDLY_LEVEL1', init= 32895, min= 32768, max= 32895 },\n { desc= 'Delay 2 Level', id= 'MFX_MTDLY_LEVEL2', init= 32895, min= 32768, max= 32895 },\n { desc= 'Delay 3 Level', id= 'MFX_MTDLY_LEVEL3', init= 32895, min= 32768, max= 32895 },\n { desc= 'Delay 4 Level', id= 'MFX_MTDLY_LEVEL4', init= 32895, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_MTDLY_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_MTDLY_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_MTDLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_MTDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'REVERSE DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_RVSDLY_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_RVSDLY_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_RVSDLY_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_RVSDLY_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Threshold', id= 'MFX_RVSDLY_THRESHOLD', init= 32798, min= 32768, max= 32895 },\n { desc= 'Rev Delay Time (sync sw)', id= 'MFX_RVSDLY_DLYR_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rev Delay Time (msec)', id= 'MFX_RVSDLY_DLYR_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Rev Delay Time (note)', id= 'MFX_RVSDLY_DLYR_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Rev Delay Feedback', id= 'MFX_RVSDLY_DLYR_FBK', init= 32817, min= 32768, max= 32866 },\n { desc= 'Rev Delay HF Damp', id= 'MFX_RVSDLY_DLYR_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Rev Delay Pan', id= 'MFX_RVSDLY_DLYR_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Rev Delay Level', id= 'MFX_RVSDLY_DLYR_LVL', init= 32895, min= 32768, max= 32895 },\n { desc= 'Delay 1 Time (sync sw)', id= 'MFX_RVSDLY_DLY1_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 1 Time (msec)', id= 'MFX_RVSDLY_DLY1_MSEC', init= 33068, min= 32768, max= 34068 },\n { desc= 'Delay 1 Time (note)', id= 'MFX_RVSDLY_DLY1_NOTE', init= 32777, min= 32768, max= 32789 },\n { desc= 'Delay 2 Time (sync sw)', id= 'MFX_RVSDLY_DLY2_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 2 Time (msec)', id= 'MFX_RVSDLY_DLY2_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Delay 2 Time (note)', id= 'MFX_RVSDLY_DLY2_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay 3 Time (sync sw)', id= 'MFX_RVSDLY_DLY3_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 3 Time (msec)', id= 'MFX_RVSDLY_DLY3_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Delay 3 Time (note)', id= 'MFX_RVSDLY_DLY3_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay 3 Feedback', id= 'MFX_RVSDLY_DLY3_FBK', init= 32817, min= 32768, max= 32866 },\n { desc= 'Delay HF Damp', id= 'MFX_RVSDLY_DLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay 1 Pan', id= 'MFX_RVSDLY_DLY1_PAN', init= 32768, min= 32768, max= 32895 },\n { desc= 'Delay 2 Pan', id= 'MFX_RVSDLY_DLY2_PAN', init= 32895, min= 32768, max= 32895 },\n { desc= 'Delay 1 Level', id= 'MFX_RVSDLY_DLY1_LVL', init= 32768, min= 32768, max= 32895 },\n { desc= 'Delay 2 Level', id= 'MFX_RVSDLY_DLY2_LVL', init= 32768, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_RVSDLY_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_RVSDLY_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_RVSDLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_RVSDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'TIME CTRL DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STTMDLY_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_STTMDLY_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_STTMDLY_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_STTMDLY_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Delay Time (sync sw)', id= 'MFX_STTMDLY_DLY_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Delay Time (msec)', id= 'MFX_STTMDLY_DLY_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Delay Time (note)', id= 'MFX_STTMDLY_DLY_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Acceleration', id= 'MFX_STTMDLY_ACCEL', init= 32778, min= 32768, max= 32783 },\n { desc= 'Feedback', id= 'MFX_STTMDLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'HF Damp', id= 'MFX_STTMDLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Low Gain', id= 'MFX_STTMDLY_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_STTMDLY_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_STTMDLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_STTMDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'LOFI COMPRESS',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_LFCOMP_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_LFCOMP_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_LFCOMP_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_LFCOMP_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Pre Filter Type', id= 'MFX_LFCOMP_PRE_FILT', init= 32769, min= 32768, max= 32773 },\n { desc= 'LoFi Type', id= 'MFX_LFCOMP_LOFI_TYPE', init= 32772, min= 32768, max= 32776 },\n { desc= 'Post Filter Type', id= 'MFX_LFCOMP_POST_FILT', init= 32769, min= 32768, max= 32770 },\n { desc= 'Post Filter Cutoff', id= 'MFX_LFCOMP_CUTOFF', init= 32781, min= 32768, max= 32784 },\n { desc= 'Low Gain', id= 'MFX_LFCOMP_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_LFCOMP_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_LFCOMP_BAL', init= 32868, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_LFCOMP_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'BIT CRASHER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_BITC_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_BITC_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_BITC_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_BITC_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Sample Rate', id= 'MFX_BITC_SMP_RATE', init= 32848, min= 32768, max= 32895 },\n { desc= 'Bit Down', id= 'MFX_BITC_BIT_DOWN', init= 32784, min= 32768, max= 32788 },\n { desc= 'Filter', id= 'MFX_BITC_FILTER', init= 32895, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_BITC_LO_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_BITC_HI_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_BITC_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'PITCH SHIFTER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STPS_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_STPS_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_STPS_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_STPS_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Coarse', id= 'MFX_STPS_CRS', init= 32792, min= 32768, max= 32804 },\n { desc= 'Fine', id= 'MFX_STPS_FINE', init= 32818, min= 32768, max= 32868 },\n { desc= 'Delay Time (sync sw)', id= 'MFX_STPS_DLY_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Delay Time (msec)', id= 'MFX_STPS_DLY_MSEC', init= 32768, min= 32768, max= 34068 },\n { desc= 'Delay Time (note)', id= 'MFX_STPS_DLY_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Feedback', id= 'MFX_STPS_FBK', init= 32817, min= 32768, max= 32866 },\n { desc= 'Low Gain', id= 'MFX_STPS_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_STPS_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_STPS_BAL', init= 32868, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_STPS_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= '2VOICE PITCH SHIFTER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_TVPS_CTRL_ASGN1', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 2', id= 'MFX_TVPS_CTRL_ASGN2', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 3', id= 'MFX_TVPS_CTRL_ASGN3', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 4', id= 'MFX_TVPS_CTRL_ASGN4', init= 0, min= 0, max= 7 },\n { desc= 'Pitch1 Coarse', id= 'MFX_TVPS_CRS1', init= 32796, min= 32768, max= 32804 },\n { desc= 'Pitch1 Fine', id= 'MFX_TVPS_FINE1', init= 32818, min= 32768, max= 32868 },\n { desc= 'Pitch1 Delay (sync sw)', id= 'MFX_TVPS_DLY1_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Pitch1 Delay (msec)', id= 'MFX_TVPS_DLY1_MSEC', init= 33068, min= 32768, max= 34068 },\n { desc= 'Pitch1 Delay (note)', id= 'MFX_TVPS_DLY1_NOTE', init= 32777, min= 32768, max= 32789 },\n { desc= 'Pitch1 Feedback', id= 'MFX_TVPS_FBK1', init= 32817, min= 32768, max= 32866 },\n { desc= 'Pitch1 Pan', id= 'MFX_TVPS_PAN1', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pitch1 Level', id= 'MFX_TVPS_LEVEL1', init= 32895, min= 32768, max= 32895 },\n { desc= 'Pitch2 Coarse', id= 'MFX_TVPS_CRS2', init= 32799, min= 32768, max= 32804 },\n { desc= 'Pitch2 Fine', id= 'MFX_TVPS_FINE2', init= 32818, min= 32768, max= 32868 },\n { desc= 'Pitch2 Delay (sync sw)', id= 'MFX_TVPS_DLY2_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Pitch2 Delay (msec)', id= 'MFX_TVPS_DLY2_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Pitch2 Delay (note)', id= 'MFX_TVPS_DLY2_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Pitch2 Feedback', id= 'MFX_TVPS_FBK2', init= 32817, min= 32768, max= 32866 },\n { desc= 'Pitch2 Pan', id= 'MFX_TVPS_PAN2', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pitch2 Level', id= 'MFX_TVPS_LEVEL2', init= 32895, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_TVPS_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_TVPS_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_TVPS_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_TVPS_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'OD->CHORUS',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_ODSCHO_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_ODSCHO_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_ODSCHO_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_ODSCHO_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Overdrive Drive', id= 'MFX_ODSCHO_OD_DRV', init= 32832, min= 32768, max= 32895 },\n { desc= 'Overdrive Pan', id= 'MFX_ODSCHO_OD_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Chorus Pre Delay', id= 'MFX_ODSCHO_CHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Chorus Rate (sync sw)', id= 'MFX_ODSCHO_CHO_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Chorus Rate (Hz)', id= 'MFX_ODSCHO_CHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Chorus Rate (note)', id= 'MFX_ODSCHO_CHO_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Chorus Depth', id= 'MFX_ODSCHO_CHO_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Chorus Balance', id= 'MFX_ODSCHO_CHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_ODSCHO_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'OD->FLANGER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_ODSFLG_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_ODSFLG_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_ODSFLG_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_ODSFLG_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Overdrive Drive', id= 'MFX_ODSFLG_OD_DRV', init= 32832, min= 32768, max= 32895 },\n { desc= 'Overdrive Pan', id= 'MFX_ODSFLG_OD_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Flanger Pre Delay', id= 'MFX_ODSFLG_FLG_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Flanger Rate (sync sw)', id= 'MFX_ODSFLG_FLG_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Flanger Rate (Hz)', id= 'MFX_ODSFLG_FLG_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Flanger Rate (note)', id= 'MFX_ODSFLG_FLG_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Flanger Depth', id= 'MFX_ODSFLG_FLG_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Flanger Feedback', id= 'MFX_ODSFLG_FLG_FBK', init= 32847, min= 32768, max= 32866 },\n { desc= 'Flanger Balance', id= 'MFX_ODSFLG_FLG_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_ODSFLG_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'OD->DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_ODSDLY_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_ODSDLY_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_ODSDLY_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_ODSDLY_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Overdrive Drive', id= 'MFX_ODSDLY_OD_DRV', init= 32832, min= 32768, max= 32895 },\n { desc= 'Overdrive Pan', id= 'MFX_ODSDLY_OD_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Delay Time (sync sw)', id= 'MFX_ODSDLY_DLY_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Time (msec)', id= 'MFX_ODSDLY_DLY_MSEC', init= 33368, min= 32768, max= 35368 },\n { desc= 'Delay Time (note)', id= 'MFX_ODSDLY_DLY_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay Feedback', id= 'MFX_ODSDLY_DLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'Delay HF Damp', id= 'MFX_ODSDLY_DLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay Balance', id= 'MFX_ODSDLY_DLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_ODSDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'DS->CHORUS',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_DSTSCHO_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_DSTSCHO_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_DSTSCHO_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_DSTSCHO_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Distortion Drive', id= 'MFX_DSTSCHO_DST_DRV', init= 32895, min= 32768, max= 32895 },\n { desc= 'Distortion Pan', id= 'MFX_DSTSCHO_DST_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Chorus Pre Delay', id= 'MFX_DSTSCHO_CHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Chorus Rate (sync sw)', id= 'MFX_DSTSCHO_CHO_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Chorus Rate (Hz)', id= 'MFX_DSTSCHO_CHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Chorus Rate (note)', id= 'MFX_DSTSCHO_CHO_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Chorus Depth', id= 'MFX_DSTSCHO_CHO_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Chorus Balance', id= 'MFX_DSTSCHO_CHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_DSTSCHO_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'DS->FLANGER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_DSTSFLG_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_DSTSFLG_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_DSTSFLG_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_DSTSFLG_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Distortion Drive', id= 'MFX_DSTSFLG_DST_DRV', init= 32895, min= 32768, max= 32895 },\n { desc= 'Distortion Pan', id= 'MFX_DSTSFLG_DST_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Flanger Pre Delay', id= 'MFX_DSTSFLG_FLG_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Flanger Rate (sync sw)', id= 'MFX_DSTSFLG_FLG_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Flanger Rate (Hz)', id= 'MFX_DSTSFLG_FLG_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Flanger Rate (note)', id= 'MFX_DSTSFLG_FLG_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Flanger Depth', id= 'MFX_DSTSFLG_FLG_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Flanger Feedback', id= 'MFX_DSTSFLG_FLG_FBK', init= 32847, min= 32768, max= 32866 },\n { desc= 'Flanger Balance', id= 'MFX_DSTSFLG_FLG_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_DSTSFLG_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'DS->DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_DSTSDLY_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_DSTSDLY_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_DSTSDLY_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_DSTSDLY_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Distortion Drive', id= 'MFX_DSTSDLY_DST_DRV', init= 32895, min= 32768, max= 32895 },\n { desc= 'Distortion Pan', id= 'MFX_DSTSDLY_DST_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Delay Time (sync sw)', id= 'MFX_DSTSDLY_DLY_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Time (msec)', id= 'MFX_DSTSDLY_DLY_MSEC', init= 33368, min= 32768, max= 35368 },\n { desc= 'Delay Time (note)', id= 'MFX_DSTSDLY_DLY_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay Feedback', id= 'MFX_DSTSDLY_DLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'Delay HF Damp', id= 'MFX_DSTSDLY_DLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay Balance', id= 'MFX_DSTSDLY_DLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_DSTSDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'OD/DS->TWAH',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_ODTW_CTRL_ASGN1', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 2', id= 'MFX_ODTW_CTRL_ASGN2', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 3', id= 'MFX_ODTW_CTRL_ASGN3', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 4', id= 'MFX_ODTW_CTRL_ASGN4', init= 0, min= 0, max= 6 },\n { desc= 'Drive Switch', id= 'MFX_ODTW_DRIVE_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Drive Type', id= 'MFX_ODTW_DRIVE_TYPE', init= 32768, min= 32768, max= 32769 },\n { desc= 'Drive', id= 'MFX_ODTW_DRIVE', init= 32818, min= 32768, max= 32895 },\n { desc= 'Tone', id= 'MFX_ODTW_TONE', init= 32818, min= 32768, max= 32895 },\n { desc= 'Amp Switch', id= 'MFX_ODTW_AMP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Amp Type', id= 'MFX_ODTW_AMP_TYPE', init= 32768, min= 32768, max= 32771 },\n { desc= 'TWah Switch', id= 'MFX_ODTW_TWAH_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'TWah Mode', id= 'MFX_ODTW_TWAH_MODE', init= 32769, min= 32768, max= 32769 },\n { desc= 'TWah Polarity', id= 'MFX_ODTW_TWAH_POLA', init= 32768, min= 32768, max= 32769 },\n { desc= 'TWah Sens', id= 'MFX_ODTW_TWAH_SENS', init= 32818, min= 32768, max= 32895 },\n { desc= 'TWah Manual', id= 'MFX_ODTW_TWAH_MANUAL', init= 32798, min= 32768, max= 32895 },\n { desc= 'TWah Peak', id= 'MFX_ODTW_TWAH_PEAK', init= 32818, min= 32768, max= 32895 },\n { desc= 'TWah Balance', id= 'MFX_ODTW_TWAH_BAL', init= 32868, min= 32768, max= 32868 },\n { desc= 'Low Gain', id= 'MFX_ODTW_LO_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_ODTW_HI_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_ODTW_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'OD/DS->AWAH',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_ODAW_CTRL_ASGN1', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 2', id= 'MFX_ODAW_CTRL_ASGN2', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 3', id= 'MFX_ODAW_CTRL_ASGN3', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 4', id= 'MFX_ODAW_CTRL_ASGN4', init= 0, min= 0, max= 7 },\n { desc= 'Drive Switch', id= 'MFX_ODAW_DRIVE_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Drive Type', id= 'MFX_ODAW_DRIVE_TYPE', init= 32768, min= 32768, max= 32769 },\n { desc= 'Drive', id= 'MFX_ODAW_DRIVE', init= 32818, min= 32768, max= 32895 },\n { desc= 'Tone', id= 'MFX_ODAW_TONE', init= 32818, min= 32768, max= 32895 },\n { desc= 'Amp Switch', id= 'MFX_ODAW_AMP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Amp Type', id= 'MFX_ODAW_AMP_TYPE', init= 32768, min= 32768, max= 32771 },\n { desc= 'AutoWah Switch', id= 'MFX_ODAW_AWAH_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'AutoWah Mode', id= 'MFX_ODAW_AWAH_MODE', init= 32769, min= 32768, max= 32769 },\n { desc= 'AutoWah Manual', id= 'MFX_ODAW_AWAH_MANUAL', init= 32828, min= 32768, max= 32895 },\n { desc= 'AutoWah Peak', id= 'MFX_ODAW_AWAH_PEAK', init= 32818, min= 32768, max= 32895 },\n { desc= 'AutoWah Rate (sync sw)', id= 'MFX_ODAW_AWAH_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'AutoWah Rate (Hz)', id= 'MFX_ODAW_AWAH_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'AutoWah Rate (note)', id= 'MFX_ODAW_AWAH_RATE_NOTE', init= 32779, min= 32768, max= 32789 },\n { desc= 'AutoWah Depth', id= 'MFX_ODAW_AWAH_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'AutoWah Balance', id= 'MFX_ODAW_AWAH_BAL', init= 32868, min= 32768, max= 32868 },\n { desc= 'Low Gain', id= 'MFX_ODAW_LO_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_ODAW_HI_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_ODAW_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'GTAMPSIM->CHORUS',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_GTCHO_CTRL_ASGN1', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 2', id= 'MFX_GTCHO_CTRL_ASGN2', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 3', id= 'MFX_GTCHO_CTRL_ASGN3', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 4', id= 'MFX_GTCHO_CTRL_ASGN4', init= 0, min= 0, max= 6 },\n { desc= 'Pre Amp Sw', id= 'MFX_GTCHO_AMP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Pre Amp Type', id= 'MFX_GTCHO_AMP_TYPE', init= 32769, min= 32768, max= 32781 },\n { desc= 'Pre Amp Volume', id= 'MFX_GTCHO_AMP_VOLUME', init= 32848, min= 32768, max= 32895 },\n { desc= 'Pre Amp Master', id= 'MFX_GTCHO_AMP_MASTER', init= 32868, min= 32768, max= 32895 },\n { desc= 'Pre Amp Gain', id= 'MFX_GTCHO_AMP_GAIN', init= 32769, min= 32768, max= 32770 },\n { desc= 'Pre Amp Bass', id= 'MFX_GTCHO_AMP_BASS', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Middle', id= 'MFX_GTCHO_AMP_MIDDLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Treble', id= 'MFX_GTCHO_AMP_TREBLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Speaker Sw', id= 'MFX_GTCHO_SP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Speaker Type', id= 'MFX_GTCHO_SP_TYPE', init= 32772, min= 32768, max= 32783 },\n { desc= 'Chorus Switch', id= 'MFX_GTCHO_CHO_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Chorus Pre Delay', id= 'MFX_GTCHO_CHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Chorus Rate (Hz)', id= 'MFX_GTCHO_CHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Chorus Depth', id= 'MFX_GTCHO_CHO_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Chorus Balance', id= 'MFX_GTCHO_CHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_GTCHO_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'GTAMPSIM->FLANGER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_GTFLN_CTRL_ASGN1', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 2', id= 'MFX_GTFLN_CTRL_ASGN2', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 3', id= 'MFX_GTFLN_CTRL_ASGN3', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 4', id= 'MFX_GTFLN_CTRL_ASGN4', init= 0, min= 0, max= 7 },\n { desc= 'Pre Amp Sw', id= 'MFX_GTFLN_AMP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Pre Amp Type', id= 'MFX_GTFLN_AMP_TYPE', init= 32769, min= 32768, max= 32781 },\n { desc= 'Pre Amp Volume', id= 'MFX_GTFLN_AMP_VOLUME', init= 32848, min= 32768, max= 32895 },\n { desc= 'Pre Amp Master', id= 'MFX_GTFLN_AMP_MASTER', init= 32868, min= 32768, max= 32895 },\n { desc= 'Pre Amp Gain', id= 'MFX_GTFLN_AMP_GAIN', init= 32769, min= 32768, max= 32770 },\n { desc= 'Pre Amp Bass', id= 'MFX_GTFLN_AMP_BASS', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Middle', id= 'MFX_GTFLN_AMP_MIDDLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Treble', id= 'MFX_GTFLN_AMP_TREBLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Speaker Sw', id= 'MFX_GTFLN_SP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Speaker Type', id= 'MFX_GTFLN_SP_TYPE', init= 32772, min= 32768, max= 32783 },\n { desc= 'Flanger Switch', id= 'MFX_GTFLN_FLN_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Flanger Pre Delay', id= 'MFX_GTFLN_FLN_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Flanger Rate (Hz)', id= 'MFX_GTFLN_FLN_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Flanger Depth', id= 'MFX_GTFLN_FLN_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Flanger Feedback', id= 'MFX_GTFLN_FLN_FBK', init= 32847, min= 32768, max= 32866 },\n { desc= 'Flanger Balance', id= 'MFX_GTFLN_FLN_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_GTFLN_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'GTAMPSIM->PHASER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_GTPH_CTRL_ASGN1', init= 0, min= 0, max= 8 },\n { desc= 'Control Assign 2', id= 'MFX_GTPH_CTRL_ASGN2', init= 0, min= 0, max= 8 },\n { desc= 'Control Assign 3', id= 'MFX_GTPH_CTRL_ASGN3', init= 0, min= 0, max= 8 },\n { desc= 'Control Assign 4', id= 'MFX_GTPH_CTRL_ASGN4', init= 0, min= 0, max= 8 },\n { desc= 'Pre Amp Sw', id= 'MFX_GTPH_AMP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Pre Amp Type', id= 'MFX_GTPH_AMP_TYPE', init= 32769, min= 32768, max= 32781 },\n { desc= 'Pre Amp Volume', id= 'MFX_GTPH_AMP_VOLUME', init= 32848, min= 32768, max= 32895 },\n { desc= 'Pre Amp Master', id= 'MFX_GTPH_AMP_MASTER', init= 32868, min= 32768, max= 32895 },\n { desc= 'Pre Amp Gain', id= 'MFX_GTPH_AMP_GAIN', init= 32769, min= 32768, max= 32770 },\n { desc= 'Pre Amp Bass', id= 'MFX_GTPH_AMP_BASS', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Middle', id= 'MFX_GTPH_AMP_MIDDLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Treble', id= 'MFX_GTPH_AMP_TREBLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Speaker Sw', id= 'MFX_GTPH_SP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Speaker Type', id= 'MFX_GTPH_SP_TYPE', init= 32772, min= 32768, max= 32783 },\n { desc= 'Phaser Switch', id= 'MFX_GTPH_PH_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Phaser Rate (Hz)', id= 'MFX_GTPH_PH_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Phaser Manual', id= 'MFX_GTPH_PH_MANUAL', init= 32828, min= 32768, max= 32895 },\n { desc= 'Phaser Depth', id= 'MFX_GTPH_PH_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Phaser Resonance', id= 'MFX_GTPH_PH_RESO', init= 32848, min= 32768, max= 32895 },\n { desc= 'Phaser Mix', id= 'MFX_GTPH_PH_MIX', init= 32895, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_GTPH_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'GTAMPSIM->DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_GTDLY_CTRL_ASGN1', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 2', id= 'MFX_GTDLY_CTRL_ASGN2', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 3', id= 'MFX_GTDLY_CTRL_ASGN3', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 4', id= 'MFX_GTDLY_CTRL_ASGN4', init= 0, min= 0, max= 6 },\n { desc= 'Pre Amp Sw', id= 'MFX_GTDLY_AMP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Pre Amp Type', id= 'MFX_GTDLY_AMP_TYPE', init= 32769, min= 32768, max= 32781 },\n { desc= 'Pre Amp Volume', id= 'MFX_GTDLY_AMP_VOLUME', init= 32848, min= 32768, max= 32895 },\n { desc= 'Pre Amp Master', id= 'MFX_GTDLY_AMP_MASTER', init= 32868, min= 32768, max= 32895 },\n { desc= 'Pre Amp Gain', id= 'MFX_GTDLY_AMP_GAIN', init= 32769, min= 32768, max= 32770 },\n { desc= 'Pre Amp Bass', id= 'MFX_GTDLY_AMP_BASS', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Middle', id= 'MFX_GTDLY_AMP_MIDDLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Treble', id= 'MFX_GTDLY_AMP_TREBLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Speaker Sw', id= 'MFX_GTDLY_SP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Speaker Type', id= 'MFX_GTDLY_SP_TYPE', init= 32772, min= 32768, max= 32783 },\n { desc= 'Delay Switch', id= 'MFX_GTDLY_DLY_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Time', id= 'MFX_GTDLY_DLY_TIME', init= 33368, min= 32768, max= 34068 },\n { desc= 'Delay Feedback', id= 'MFX_GTDLY_DLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'Delay HF Damp', id= 'MFX_GTDLY_DLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay Balance', id= 'MFX_GTDLY_DLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_GTDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'EP->TREMOLO',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_EPTRM_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_EPTRM_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_EPTRM_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_EPTRM_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Type', id= 'MFX_EPTRM_TYPE', init= 32768, min= 32768, max= 32770 },\n { desc= 'Bass', id= 'MFX_EPTRM_BASS', init= 32818, min= 32768, max= 32868 },\n { desc= 'Treble', id= 'MFX_EPTRM_TREBLE', init= 32818, min= 32768, max= 32868 },\n { desc= 'Tremolo Switch', id= 'MFX_EPTRM_TRM_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Tremolo Speed (sync sw)', id= 'MFX_EPTRM_TRM_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Tremolo Speed (Hz)', id= 'MFX_EPTRM_TRM_RATE_HZ', init= 32793, min= 32769, max= 32968 },\n { desc= 'Tremolo Speed (note)', id= 'MFX_EPTRM_TRM_RATE_NOTE', init= 32779, min= 32768, max= 32789 },\n { desc= 'Tremolo Depth', id= 'MFX_EPTRM_TRM_DEPTH', init= 32818, min= 32768, max= 32895 },\n { desc= 'Tremolo Duty', id= 'MFX_EPTRM_TRM_DUTY', init= 32776, min= 32768, max= 32788 },\n { desc= 'Speaker Type', id= 'MFX_EPTRM_SPEAKER_TYPE', init= 32769, min= 32768, max= 32772 },\n { desc= 'OD Switch', id= 'MFX_EPTRM_OD_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'OD Gain', id= 'MFX_EPTRM_OD_GAIN', init= 32800, min= 32768, max= 32895 },\n { desc= 'OD Drive', id= 'MFX_EPTRM_OD_DRIVE', init= 32768, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_EPTRM_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'EP->CHORUS',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_EPCHO_CTRL_ASGN1', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 2', id= 'MFX_EPCHO_CTRL_ASGN2', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 3', id= 'MFX_EPCHO_CTRL_ASGN3', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 4', id= 'MFX_EPCHO_CTRL_ASGN4', init= 0, min= 0, max= 6 },\n { desc= 'Type', id= 'MFX_EPCHO_TYPE', init= 32768, min= 32768, max= 32770 },\n { desc= 'Bass', id= 'MFX_EPCHO_BASS', init= 32818, min= 32768, max= 32868 },\n { desc= 'Treble', id= 'MFX_EPCHO_TREBLE', init= 32818, min= 32768, max= 32868 },\n { desc= 'Chorus Switch', id= 'MFX_EPCHO_CHO_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Chorus Pre Delay', id= 'MFX_EPCHO_CHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Chorus Rate (sync sw)', id= 'MFX_EPCHO_CHO_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Chorus Rate (Hz)', id= 'MFX_EPCHO_CHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Chorus Rate (note)', id= 'MFX_EPCHO_CHO_RATE_NOTE', init= 32779, min= 32768, max= 32789 },\n { desc= 'Chorus Depth', id= 'MFX_EPCHO_CHO_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Chorus Balance', id= 'MFX_EPCHO_CHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Speaker Type', id= 'MFX_EPCHO_SPEAKER_TYPE', init= 32769, min= 32768, max= 32772 },\n { desc= 'OD Switch', id= 'MFX_EPCHO_OD_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'OD Gain', id= 'MFX_EPCHO_OD_GAIN', init= 32800, min= 32768, max= 32895 },\n { desc= 'OD Drive', id= 'MFX_EPCHO_OD_DRIVE', init= 32768, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_EPCHO_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'EP->FLANGER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_EPFLN_CTRL_ASGN1', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 2', id= 'MFX_EPFLN_CTRL_ASGN2', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 3', id= 'MFX_EPFLN_CTRL_ASGN3', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 4', id= 'MFX_EPFLN_CTRL_ASGN4', init= 0, min= 0, max= 7 },\n { desc= 'Type', id= 'MFX_EPFLN_TYPE', init= 32768, min= 32768, max= 32770 },\n { desc= 'Bass', id= 'MFX_EPFLN_BASS', init= 32818, min= 32768, max= 32868 },\n { desc= 'Treble', id= 'MFX_EPFLN_TREBLE', init= 32818, min= 32768, max= 32868 },\n { desc= 'Flanger Switch', id= 'MFX_EPFLN_FLN_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Flanger Pre Delay', id= 'MFX_EPFLN_FLN_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Flanger Rate (sync sw)', id= 'MFX_EPFLN_FLN_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Flanger Rate (Hz)', id= 'MFX_EPFLN_FLN_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Flanger Rate (note)', id= 'MFX_EPFLN_FLN_RATE_NOTE', init= 32779, min= 32768, max= 32789 },\n { desc= 'Flanger Depth', id= 'MFX_EPFLN_FLN_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Flanger Feedback', id= 'MFX_EPFLN_FLG_FBK', init= 32847, min= 32768, max= 32866 },\n { desc= 'Flanger Balance', id= 'MFX_EPFLN_FLN_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Speaker Type', id= 'MFX_EPFLN_SPEAKER_TYPE', init= 32769, min= 32768, max= 32772 },\n { desc= 'OD Switch', id= 'MFX_EPFLN_OD_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'OD Gain', id= 'MFX_EPFLN_OD_GAIN', init= 32800, min= 32768, max= 32895 },\n { desc= 'OD Drive', id= 'MFX_EPFLN_OD_DRIVE', init= 32768, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_EPFLN_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'EP->PHASER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_EPPH_CTRL_ASGN1', init= 0, min= 0, max= 8 },\n { desc= 'Control Assign 2', id= 'MFX_EPPH_CTRL_ASGN2', init= 0, min= 0, max= 8 },\n { desc= 'Control Assign 3', id= 'MFX_EPPH_CTRL_ASGN3', init= 0, min= 0, max= 8 },\n { desc= 'Control Assign 4', id= 'MFX_EPPH_CTRL_ASGN4', init= 0, min= 0, max= 8 },\n { desc= 'Type', id= 'MFX_EPPH_TYPE', init= 32768, min= 32768, max= 32770 },\n { desc= 'Bass', id= 'MFX_EPPH_BASS', init= 32818, min= 32768, max= 32868 },\n { desc= 'Treble', id= 'MFX_EPPH_TREBLE', init= 32818, min= 32768, max= 32868 },\n { desc= 'Phaser Switch', id= 'MFX_EPPH_PH_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Phaser Rate (sync sw)', id= 'MFX_EPPH_PH_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Phaser Rate (Hz)', id= 'MFX_EPPH_PH_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Phaser Rate (note)', id= 'MFX_EPPH_PH_RATE_NOTE', init= 32779, min= 32768, max= 32789 },\n { desc= 'Phaser Manual', id= 'MFX_EPPH_PH_MANUAL', init= 32828, min= 32768, max= 32895 },\n { desc= 'Phaser Depth', id= 'MFX_EPPH_PH_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Phaser Resonance', id= 'MFX_EPPH_PH_RESO', init= 32848, min= 32768, max= 32895 },\n { desc= 'Phaser Mix', id= 'MFX_EPPH_PH_MIX', init= 32895, min= 32768, max= 32895 },\n { desc= 'Speaker Type', id= 'MFX_EPPH_SPEAKER_TYPE', init= 32769, min= 32768, max= 32772 },\n { desc= 'OD Switch', id= 'MFX_EPPH_OD_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'OD Gain', id= 'MFX_EPPH_OD_GAIN', init= 32800, min= 32768, max= 32895 },\n { desc= 'OD Drive', id= 'MFX_EPPH_OD_DRIVE', init= 32768, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_EPPH_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'EP->DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_EPDLY_CTRL_ASGN1', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 2', id= 'MFX_EPDLY_CTRL_ASGN2', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 3', id= 'MFX_EPDLY_CTRL_ASGN3', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 4', id= 'MFX_EPDLY_CTRL_ASGN4', init= 0, min= 0, max= 6 },\n { desc= 'Type', id= 'MFX_EPDLY_TYPE', init= 32768, min= 32768, max= 32770 },\n { desc= 'Bass', id= 'MFX_EPDLY_BASS', init= 32818, min= 32768, max= 32868 },\n { desc= 'Treble', id= 'MFX_EPDLY_TREBLE', init= 32818, min= 32768, max= 32868 },\n { desc= 'Delay Switch', id= 'MFX_EPDLY_DLY_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Time (sync sw)', id= 'MFX_EPDLY_DLY_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Delay Time (msec)', id= 'MFX_EPDLY_DLY_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Delay Time (note)', id= 'MFX_EPDLY_DLY_NOTE', init= 32779, min= 32768, max= 32789 },\n { desc= 'Delay Acceleration', id= 'MFX_EPDLY_DLY_ACCEL', init= 32778, min= 32768, max= 32783 },\n { desc= 'Delay Feedback', id= 'MFX_EPDLY_DLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'Delay HF Damp', id= 'MFX_EPDLY_DLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay Balance', id= 'MFX_EPDLY_DLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Speaker Type', id= 'MFX_EPDLY_SPEAKER_TYPE', init= 32769, min= 32768, max= 32772 },\n { desc= 'OD Switch', id= 'MFX_EPDLY_OD_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'OD Gain', id= 'MFX_EPDLY_OD_GAIN', init= 32800, min= 32768, max= 32895 },\n { desc= 'OD Drive', id= 'MFX_EPDLY_OD_DRIVE', init= 32768, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_EPDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'ENHANCER->CHORUS',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_EHSCHO_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_EHSCHO_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_EHSCHO_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_EHSCHO_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Enhancer Sens', id= 'MFX_EHSCHO_EH_SENS', init= 32832, min= 32768, max= 32895 },\n { desc= 'Enhancer Mix', id= 'MFX_EHSCHO_EH_MIX', init= 32832, min= 32768, max= 32895 },\n { desc= 'Chorus Pre Delay', id= 'MFX_EHSCHO_CHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Chorus Rate (sync sw)', id= 'MFX_EHSCHO_CHO_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Chorus Rate (Hz)', id= 'MFX_EHSCHO_CHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Chorus Rate (note)', id= 'MFX_EHSCHO_CHO_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Chorus Depth', id= 'MFX_EHSCHO_CHO_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Chorus Balance', id= 'MFX_EHSCHO_CHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_EHSCHO_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'ENHANCER->FLANGER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_EHSFLG_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_EHSFLG_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_EHSFLG_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_EHSFLG_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Enhancer Sens', id= 'MFX_EHSFLG_EH_SENS', init= 32832, min= 32768, max= 32895 },\n { desc= 'Enhancer Mix', id= 'MFX_EHSFLG_EH_MIX', init= 32832, min= 32768, max= 32895 },\n { desc= 'Flanger Pre Delay', id= 'MFX_EHSFLG_FLG_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Flanger Rate (sync sw)', id= 'MFX_EHSFLG_FLG_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Flanger Rate (Hz)', id= 'MFX_EHSFLG_FLG_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Flanger Rate (note)', id= 'MFX_EHSFLG_FLG_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Flanger Depth', id= 'MFX_EHSFLG_FLG_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Flanger Feedback', id= 'MFX_EHSFLG_FLG_FBK', init= 32847, min= 32768, max= 32866 },\n { desc= 'Flanger Balance', id= 'MFX_EHSFLG_FLG_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_EHSFLG_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'ENHANCER->DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_EHSDLY_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_EHSDLY_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_EHSDLY_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_EHSDLY_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Enhancer Sens', id= 'MFX_EHSDLY_EH_SENS', init= 32832, min= 32768, max= 32895 },\n { desc= 'Enhancer Mix', id= 'MFX_EHSDLY_EH_MIX', init= 32832, min= 32768, max= 32895 },\n { desc= 'Delay Time (sync sw)', id= 'MFX_EHSDLY_DLY_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Time (msec)', id= 'MFX_EHSDLY_DLY_MSEC', init= 33368, min= 32768, max= 35368 },\n { desc= 'Delay Time (note)', id= 'MFX_EHSDLY_DLY_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay Feedback', id= 'MFX_EHSDLY_DLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'Delay HF Damp', id= 'MFX_EHSDLY_DLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay Balance', id= 'MFX_EHSDLY_DLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_EHSDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'CHORUS->DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_CHOSDLY_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_CHOSDLY_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_CHOSDLY_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_CHOSDLY_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Chorus Pre Delay', id= 'MFX_CHOSDLY_CHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Chorus Rate (sync sw)', id= 'MFX_CHOSDLY_CHO_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Chorus Rate (Hz)', id= 'MFX_CHOSDLY_CHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Chorus Rate (note)', id= 'MFX_CHOSDLY_CHO_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Chorus Depth', id= 'MFX_CHOSDLY_CHO_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Chorus Balance', id= 'MFX_CHOSDLY_CHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Delay Time (sync sw)', id= 'MFX_CHOSDLY_DLY_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Time (msec)', id= 'MFX_CHOSDLY_DLY_MSEC', init= 33368, min= 32768, max= 35368 },\n { desc= 'Delay Time (note)', id= 'MFX_CHOSDLY_DLY_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay Feedback', id= 'MFX_CHOSDLY_DLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'Delay HF Damp', id= 'MFX_CHOSDLY_DLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay Balance', id= 'MFX_CHOSDLY_DLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_CHOSDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'FLANGER->DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_FLGSDLY_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_FLGSDLY_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_FLGSDLY_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_FLGSDLY_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Flanger Pre Delay', id= 'MFX_FLGSDLY_FLG_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Flanger Rate (sync sw)', id= 'MFX_FLGSDLY_FLG_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Flanger Rate (Hz)', id= 'MFX_FLGSDLY_FLG_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Flanger Rate (note)', id= 'MFX_FLGSDLY_FLG_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Flanger Depth', id= 'MFX_FLGSDLY_FLG_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Flanger Feedback', id= 'MFX_FLGSDLY_FLG_FBK', init= 32847, min= 32768, max= 32866 },\n { desc= 'Flanger Balance', id= 'MFX_FLGSDLY_FLG_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Delay Time (sync sw)', id= 'MFX_FLGSDLY_DLY_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Time (msec)', id= 'MFX_FLGSDLY_DLY_MSEC', init= 33368, min= 32768, max= 35368 },\n { desc= 'Delay Time (note)', id= 'MFX_FLGSDLY_DLY_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay Feedback', id= 'MFX_FLGSDLY_DLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'Delay HF Damp', id= 'MFX_FLGSDLY_DLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay Balance', id= 'MFX_FLGSDLY_DLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_FLGSDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'CHORUS->FLANGER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_CHOSFLG_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_CHOSFLG_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_CHOSFLG_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_CHOSFLG_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Chorus Pre Delay', id= 'MFX_CHOSFLG_CHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Chorus Rate (sync sw)', id= 'MFX_CHOSFLG_CHO_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Chorus Rate (Hz)', id= 'MFX_CHOSFLG_CHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Chorus Rate (note)', id= 'MFX_CHOSFLG_CHO_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Chorus Depth', id= 'MFX_CHOSFLG_CHO_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Chorus Balance', id= 'MFX_CHOSFLG_CHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Flanger Pre Delay', id= 'MFX_CHOSFLG_FLG_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Flanger Rate (sync sw)', id= 'MFX_CHOSFLG_FLG_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Flanger Rate (Hz)', id= 'MFX_CHOSFLG_FLG_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Flanger Rate (note)', id= 'MFX_CHOSFLG_FLG_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Flanger Depth', id= 'MFX_CHOSFLG_FLG_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Flanger Feedback', id= 'MFX_CHOSFLG_FLG_FBK', init= 32847, min= 32768, max= 32866 },\n { desc= 'Flanger Balance', id= 'MFX_CHOSFLG_FLG_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_CHOSFLG_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n }\n}"}, {"path": "lua/devices/integra7/_model.lua", "data": "UndefinedByteType = -1\nZeroByteSize = -2\nINTEGER_MASK = 0x10000\nINTEGER1x1 = 0x10001 --00000001\nINTEGER1x2 = 0x10003 --00000011\nINTEGER1x3 = 0x1000 --00000111\nINTEGER1x4 = 0x1000f --00001111\nINTEGER1x5 = 0x1001f --00011111\nINTEGER1x6 = 0x1003f --00111111\nINTEGER1x7 = 0x1007f --01111111\nINTEGER2x4 = 0x2000f --00001111\nINTEGER4x4 = 0x4000f --00001111\nByteSize12 = 12\nByteSize16 = 16\n\nSYSEX_PRIO_INIT = 0\nSYSEX_PRIO_SET_DEFAULT = 10\nSYSEX_PRIO_MOD = 100\n\nlocal ADDR_SIZE = 4\nlocal DATA_SIZE = 4\nlocal SIZE_F7 = 1\nlocal SIZE_CHKSM = 1\nlocal ROLAND = 0x41\nlocal DEV_ID = 0x10\nlocal DEVICE_ID_INDEX = 3\nlocal MODEL_ID = { 0, 0, 0x64 }\nlocal RQ1 = 0x11\nlocal DT1 = 0x12\nlocal ROLAND_SYSEX = { 0xF0, 0x41, DEV_ID, MODEL_ID[1], MODEL_ID[2] , MODEL_ID[3] }\nlocal ROLAND_DT1 = { ROLAND_SYSEX[1], ROLAND_SYSEX[2], ROLAND_SYSEX[3], ROLAND_SYSEX[4], ROLAND_SYSEX[5], ROLAND_SYSEX[6], DT1 }\n\nNode = {}\n\nfunction Nibble(x)\n return (x & 0x7f000000) >> 3 |\n (x & 0x007f0000) >> 2 |\n (x & 0x00007f00) >> 1 |\n x & 0x0000007f\n\nend\n\nfunction Node:new(addr, desc, id, init, min, max, valueByteSizeType, opt, pos)\n local o = {}\n setmetatable(o, self)\n self.__index = self\n o.addr = Nibble(addr)\n o.desc = desc\n o.id = id\n o.init = init\n o.min = min\n o.max = max\n o.valueByteSizeType = valueByteSizeType\n o.opt = opt\n o.pos = pos\n o.value = nil\n return o\nend\n\nfunction Node:new_parent(addr, offset, desc, id, children)\n local o = {}\n setmetatable(o, self)\n self.__index = self\n o.addr = Nibble(addr)\n o.offset = offset\n o.desc = desc\n o.id = id\n o.children = children\n return o\nend\n\nfunction Node:tostring()\n return string.format(\"0x%02X \", self.addr) .. self.desc\nend\n\nfunction Denormalize100(min, max, v)\n return math.ceil(v * (max-min) / 100 + min)\nend\n\n\nfunction Node:setvalue(v)\n if self.children ~= nil then\n error(\"try to set a value to a branch node: \\\"\" .. self.desc .. \"\\\"\")\n end\n if type(v) == \"string\" then\n self.value = v\n return\n end\n if v < self.min or v > self.max then\n error(\"value out of bounds for: \\\"\" .. self.desc .. \"\\\" = \" .. tostring(v) .. \" (\" .. tostring(self.min) .. \", \" .. tostring(self.max) .. \")\")\n end\n self.value = v\nend\n\nfunction Node:setvalue100(v)\n self:setvalue(Denormalize100(self.min, self.max, v))\nend\n\nlocal STP =\n{\n Node:new(0x0000, \"Side 1 Sound Mode\", \"NESTP_SND_MODE_SD1\", 1, 1, 4, INTEGER1x3),\n Node:new(0x0001, \"Side 1 Live Set BS MSB (CC# 0)\", \"NESTP_LIV_BS_MSB_SD1\", 84, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"Side 1 Live Set BS LSB (CC# 32)\", \"NESTP_LIV_BS_LSB_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"Side 1 Live Set PC (PC)\", \"NESTP_LIV_PC_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0004, \"Side 1 Studio Set BS MSB (CC# 0)\", \"NESTP_PRF_BS_MSB_SD1\", 85, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"Side 1 Studio Set BS LSB (CC# 32)\", \"NESTP_PRF_BS_LSB_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0006, \"Side 1 Studio Set PC (PC)\", \"NESTP_PRF_PC_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0007, \"Side 1 Live Mode Level (CC# 7)\", \"NESTP_LIV_LEVEL_SD1\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"Side 1 Live Mode Pan (CC# 10)\", \"NESTP_LIV_PAN_SD1\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0009, \"Live Mode Octave Shift \", \"NESTP_LIV_OCT_SD1\", 64, 61, 67, INTEGER1x3),\n Node:new(0x000A, \"Live Mode Keyboard Range Lower \", \"NESTP_LIV_KRNG_L_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000B, \"Live Mode Keyboard Range Upper \", \"NESTP_LIV_KRNG_U_SD1\", 127, 0, 127, INTEGER1x7),\n Node:new(0x000C, \"Side 2 Sound Mode\", \"NESTP_SND_MODE_SD2\", 1, 1, 4, INTEGER1x3),\n Node:new(0x000D, \"Side 2 Live Set BS MSB (CC# 0)\", \"NESTP_LIV_BS_MSB_SD2\", 84, 0, 127, INTEGER1x7),\n Node:new(0x000E, \"Side 2 Live Set BS LSB (CC# 32)\", \"NESTP_LIV_BS_LSB_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000F, \"Side 2 Live Set PC (PC)\", \"NESTP_LIV_PC_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"Side 2 Studio Set BS MSB (CC# 0)\", \"NESTP_PRF_BS_MSB_SD2\", 85, 0, 127, INTEGER1x7),\n Node:new(0x0011, \"Side 2 Studio Set BS LSB (CC# 32)\", \"NESTP_PRF_BS_LSB_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Side 2 Studio Set PC (PC)\", \"NESTP_PRF_PC_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"Side 2 Live Mode Level (CC# 7)\", \"NESTP_LIV_LEVEL_SD2\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Side 2 Live Mode Pan (CC# 10)\", \"NESTP_LIV_PAN_SD2\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0015, \"Live Mode Octave Shift \", \"NESTP_LIV_OCT_SD2\", 64, 61, 67, INTEGER1x3),\n Node:new(0x0016, \"Live Mode Keyboard Range Lower \", \"NESTP_LIV_KRNG_L_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0017, \"Live Mode Keyboard Range Upper \", \"NESTP_LIV_KRNG_U_SD2\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"Side 3 Sound Mode\", \"NESTP_SND_MODE_SD3\", 1, 1, 4, INTEGER1x3),\n Node:new(0x0019, \"Side 3 Live Set BS MSB (CC# 0)\", \"NESTP_LIV_BS_MSB_SD3\", 84, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Side 3 Live Set BS LSB (CC# 32)\", \"NESTP_LIV_BS_LSB_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"Side 3 Live Set PC (PC)\", \"NESTP_LIV_PC_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001C, \"Side 3 Studio Set BS MSB (CC# 0)\", \"NESTP_PRF_BS_MSB_SD3\", 85, 0, 127, INTEGER1x7),\n Node:new(0x001D, \"Side 3 Studio Set BS LSB (CC# 32)\", \"NESTP_PRF_BS_LSB_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001E, \"Side 3 Studio Set PC (PC)\", \"NESTP_PRF_PC_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001F, \"Side 3 Live Mode Level (CC# 7)\", \"NESTP_LIV_LEVEL_SD3\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"Side 3 Live Mode Pan (CC# 10)\", \"NESTP_LIV_PAN_SD3\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0021, \"Live Mode Octave Shift \", \"NESTP_LIV_OCT_SD3\", 64, 61, 67, INTEGER1x3),\n Node:new(0x0022, \"Live Mode Keyboard Range Lower \", \"NESTP_LIV_KRNG_L_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0023, \"Live Mode Keyboard Range Upper \", \"NESTP_LIV_KRNG_U_SD3\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0024, \"Side 4 Sound Mode\", \"NESTP_SND_MODE_SD4\", 1, 1, 4, INTEGER1x3),\n Node:new(0x0025, \"Side 4 Live Set BS MSB (CC# 0)\", \"NESTP_LIV_BS_MSB_SD4\", 84, 0, 127, INTEGER1x7),\n Node:new(0x0026, \"Side 4 Live Set BS LSB (CC# 32)\", \"NESTP_LIV_BS_LSB_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0027, \"Side 4 Live Set PC (PC)\", \"NESTP_LIV_PC_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0028, \"Side 4 Studio Set BS MSB (CC# 0)\", \"NESTP_PRF_BS_MSB_SD4\", 85, 0, 127, INTEGER1x7),\n Node:new(0x0029, \"Side 4 Studio Set BS LSB (CC# 32)\", \"NESTP_PRF_BS_LSB_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x002A, \"Side 4 Studio Set PC (PC)\", \"NESTP_PRF_PC_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x002B, \"Side 4 Live Mode Level (CC# 7)\", \"NESTP_LIV_LEVEL_SD4\", 100, 0, 127, INTEGER1x7),\n Node:new(0x002C, \"Side 4 Live Mode Pan (CC# 10)\", \"NESTP_LIV_PAN_SD4\", 64, 0, 127, INTEGER1x7),\n Node:new(0x002D, \"Live Mode Octave Shift \", \"NESTP_LIV_OCT_SD4\", 64, 61, 67, INTEGER1x3),\n Node:new(0x002E, \"Live Mode Keyboard Range Lower \", \"NESTP_LIV_KRNG_L_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x002F, \"Live Mode Keyboard Range Upper \", \"NESTP_LIV_KRNG_U_SD4\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0030, \"MFX1 Switch\", \"NESTP_MFX1_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0031, \"MFX2 Switch\", \"NESTP_MFX2_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0032, \"MFX3 Switch\", \"NESTP_MFX3_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0033, \"MFX4 Switch\", \"NESTP_MFX4_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0034, \"Chorus Switch\", \"NESTP_CHO_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0035, \"Reverb Switch\", \"NESTP_REV_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0036, \"Input Effect Switch\", \"NESTP_IFX_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0037, \"GM Map\", \"NESTP_GM_MAP\", 0, 0, 1, INTEGER1x4),\n}\n\nlocal STP = -- Setup\n{\n Node:new(0x0000, \"Side 1 Sound Mode\", \"NESTP_SND_MODE_SD1\", 1, 1, 4, INTEGER1x3),\n Node:new(0x0001, \"Side 1 Live Set BS MSB (CC# 0)\", \"NESTP_LIV_BS_MSB_SD1\", 84, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"Side 1 Live Set BS LSB (CC# 32)\", \"NESTP_LIV_BS_LSB_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"Side 1 Live Set PC (PC)\", \"NESTP_LIV_PC_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0004, \"Side 1 Studio Set BS MSB (CC# 0)\", \"NESTP_PRF_BS_MSB_SD1\", 85, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"Side 1 Studio Set BS LSB (CC# 32)\", \"NESTP_PRF_BS_LSB_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0006, \"Side 1 Studio Set PC (PC)\", \"NESTP_PRF_PC_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0007, \"Side 1 Live Mode Level (CC# 7)\", \"NESTP_LIV_LEVEL_SD1\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"Side 1 Live Mode Pan (CC# 10)\", \"NESTP_LIV_PAN_SD1\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0009, \"Live Mode Octave Shift \", \"NESTP_LIV_OCT_SD1\", 64, 61, 67, INTEGER1x3),\n Node:new(0x000A, \"Live Mode Keyboard Range Lower \", \"NESTP_LIV_KRNG_L_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000B, \"Live Mode Keyboard Range Upper \", \"NESTP_LIV_KRNG_U_SD1\", 127, 0, 127, INTEGER1x7),\n Node:new(0x000C, \"Side 2 Sound Mode\", \"NESTP_SND_MODE_SD2\", 1, 1, 4, INTEGER1x3),\n Node:new(0x000D, \"Side 2 Live Set BS MSB (CC# 0)\", \"NESTP_LIV_BS_MSB_SD2\", 84, 0, 127, INTEGER1x7),\n Node:new(0x000E, \"Side 2 Live Set BS LSB (CC# 32)\", \"NESTP_LIV_BS_LSB_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000F, \"Side 2 Live Set PC (PC)\", \"NESTP_LIV_PC_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"Side 2 Studio Set BS MSB (CC# 0)\", \"NESTP_PRF_BS_MSB_SD2\", 85, 0, 127, INTEGER1x7),\n Node:new(0x0011, \"Side 2 Studio Set BS LSB (CC# 32)\", \"NESTP_PRF_BS_LSB_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Side 2 Studio Set PC (PC)\", \"NESTP_PRF_PC_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"Side 2 Live Mode Level (CC# 7)\", \"NESTP_LIV_LEVEL_SD2\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Side 2 Live Mode Pan (CC# 10)\", \"NESTP_LIV_PAN_SD2\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0015, \"Live Mode Octave Shift \", \"NESTP_LIV_OCT_SD2\", 64, 61, 67, INTEGER1x3),\n Node:new(0x0016, \"Live Mode Keyboard Range Lower \", \"NESTP_LIV_KRNG_L_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0017, \"Live Mode Keyboard Range Upper \", \"NESTP_LIV_KRNG_U_SD2\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"Side 3 Sound Mode\", \"NESTP_SND_MODE_SD3\", 1, 1, 4, INTEGER1x3),\n Node:new(0x0019, \"Side 3 Live Set BS MSB (CC# 0)\", \"NESTP_LIV_BS_MSB_SD3\", 84, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Side 3 Live Set BS LSB (CC# 32)\", \"NESTP_LIV_BS_LSB_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"Side 3 Live Set PC (PC)\", \"NESTP_LIV_PC_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001C, \"Side 3 Studio Set BS MSB (CC# 0)\", \"NESTP_PRF_BS_MSB_SD3\", 85, 0, 127, INTEGER1x7),\n Node:new(0x001D, \"Side 3 Studio Set BS LSB (CC# 32)\", \"NESTP_PRF_BS_LSB_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001E, \"Side 3 Studio Set PC (PC)\", \"NESTP_PRF_PC_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001F, \"Side 3 Live Mode Level (CC# 7)\", \"NESTP_LIV_LEVEL_SD3\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"Side 3 Live Mode Pan (CC# 10)\", \"NESTP_LIV_PAN_SD3\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0021, \"Live Mode Octave Shift \", \"NESTP_LIV_OCT_SD3\", 64, 61, 67, INTEGER1x3),\n Node:new(0x0022, \"Live Mode Keyboard Range Lower \", \"NESTP_LIV_KRNG_L_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0023, \"Live Mode Keyboard Range Upper \", \"NESTP_LIV_KRNG_U_SD3\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0024, \"Side 4 Sound Mode\", \"NESTP_SND_MODE_SD4\", 1, 1, 4, INTEGER1x3),\n Node:new(0x0025, \"Side 4 Live Set BS MSB (CC# 0)\", \"NESTP_LIV_BS_MSB_SD4\", 84, 0, 127, INTEGER1x7),\n Node:new(0x0026, \"Side 4 Live Set BS LSB (CC# 32)\", \"NESTP_LIV_BS_LSB_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0027, \"Side 4 Live Set PC (PC)\", \"NESTP_LIV_PC_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0028, \"Side 4 Studio Set BS MSB (CC# 0)\", \"NESTP_PRF_BS_MSB_SD4\", 85, 0, 127, INTEGER1x7),\n Node:new(0x0029, \"Side 4 Studio Set BS LSB (CC# 32)\", \"NESTP_PRF_BS_LSB_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x002A, \"Side 4 Studio Set PC (PC)\", \"NESTP_PRF_PC_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x002B, \"Side 4 Live Mode Level (CC# 7)\", \"NESTP_LIV_LEVEL_SD4\", 100, 0, 127, INTEGER1x7),\n Node:new(0x002C, \"Side 4 Live Mode Pan (CC# 10)\", \"NESTP_LIV_PAN_SD4\", 64, 0, 127, INTEGER1x7),\n Node:new(0x002D, \"Live Mode Octave Shift \", \"NESTP_LIV_OCT_SD4\", 64, 61, 67, INTEGER1x3),\n Node:new(0x002E, \"Live Mode Keyboard Range Lower \", \"NESTP_LIV_KRNG_L_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x002F, \"Live Mode Keyboard Range Upper \", \"NESTP_LIV_KRNG_U_SD4\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0030, \"MFX1 Switch\", \"NESTP_MFX1_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0031, \"MFX2 Switch\", \"NESTP_MFX2_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0032, \"MFX3 Switch\", \"NESTP_MFX3_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0033, \"MFX4 Switch\", \"NESTP_MFX4_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0034, \"Chorus Switch\", \"NESTP_CHO_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0035, \"Reverb Switch\", \"NESTP_REV_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0036, \"Input Effect Switch\", \"NESTP_IFX_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0037, \"GM Map\", \"NESTP_GM_MAP\", 0, 0, 1, INTEGER1x4),\n}\n\nlocal SC = -- System Common\n{\n Node:new(0x0000, \"Master Tune\", \"NESC_TUNE\", 1024, 24, 2024, INTEGER4x4),\n Node:new(0x0004, \"Master Key Shift\", \"NESC_KEY_SHIFT\", 64, 40, 88, INTEGER1x6),\n Node:new(0x0005, \"Master Level\", \"NESC_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0006, \"Scale Tune Switch\", \"NESC_SCALE_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0009, \"Live Set Main Channel\", \"NESC_LIV_MAIN_CH\", 0, 0, 15, INTEGER1x5),\n Node:new(0x000A, \"Live Set Sub 1 Channel\", \"NESC_LIV_SUB1_CH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x000B, \"Live Set Sub 2 Channel\", \"NESC_LIV_SUB2_CH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x000C, \"Live Set Sub 3 Channel\", \"NESC_LIV_SUB3_CH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x000D, \"Live Set Sub 4 Channel\", \"NESC_LIV_SUB4_CH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x000E, \"Live Set Sub 5 Channel\", \"NESC_LIV_SUB5_CH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x000F, \"Live Set Sub 6 Channel\", \"NESC_LIV_SUB6_CH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0010, \"Live Set Sub 7 Channel\", \"NESC_LIV_SUB7_CH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0011, \"Studio Set Control Channel\", \"NESC_PRF_CTRL_CH\", 15, 0, 16, INTEGER1x5),\n Node:new(0x0012, \"Live Set Scale Tune Type\", \"NESC_SCALE_TYPE\", 1, 0, 8, INTEGER1x7),\n Node:new(0x0013, \"Live Set Scale Tune Key\", \"NESC_SCALE_KEY\", 0, 0, 11, INTEGER1x7),\n Node:new(0x0014, \"Live Set Scale Tune for C\", \"NESC_TUNE_C\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0015, \"Live Set Scale Tune for C#\", \"NESC_TUNE_CS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0016, \"Live Set Scale Tune for D\", \"NESC_TUNE_D\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0017, \"Live Set Scale Tune for D#\", \"NESC_TUNE_DS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"Live Set Scale Tune for E\", \"NESC_TUNE_E\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"Live Set Scale Tune for F\", \"NESC_TUNE_F\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Live Set Scale Tune for F#\", \"NESC_TUNE_FS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"Live Set Scale Tune for G\", \"NESC_TUNE_G\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001C, \"Live Set Scale Tune for G#\", \"NESC_TUNE_GS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001D, \"Live Set Scale Tune for A\", \"NESC_TUNE_A\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001E, \"Live Set Scale Tune for A#\", \"NESC_TUNE_AS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001F, \"Live Set Scale Tune for B\", \"NESC_TUNE_B\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"System Control 1 Source\", \"NESC_CTRL1_SRC\", 0, 0, 97, INTEGER1x7),\n Node:new(0x0021, \"System Control 2 Source\", \"NESC_CTRL2_SRC\", 0, 0, 97, INTEGER1x7),\n Node:new(0x0022, \"System Control 3 Source\", \"NESC_CTRL3_SRC\", 0, 0, 97, INTEGER1x7),\n Node:new(0x0023, \"System Control 4 Source\", \"NESC_CTRL4_SRC\", 0, 0, 97, INTEGER1x7),\n Node:new(0x0024, \"Control Source\", \"NESC_CTRL_SRC\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0025, \"System Clock Source\", \"NESC_CLK_SRC\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0026, \"System Tempo\", \"NESC_TEMPO\", 120, 20, 250, INTEGER2x4),\n Node:new(0x0028, \"Tempo Override\", \"NESC_OR_TEMPO\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0029, \"Receive Program Change\", \"NESC_RX_PC\", 1, 0, 1, INTEGER1x1),\n Node:new(0x002A, \"Receive Bank Select\", \"NESC_RX_BS\", 1, 0, 1, INTEGER1x1),\n Node:new(0x002B, \"Center Speaker Switch\", \"NESC_RSS_CENTERSP_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002C, \"Subwoofer Switch\", \"NESC_RSS_WOOFER_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002D, \"Output Mode\", \"NESC_RSS_OUTMODE\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002E, \"USB Audio Sampling Rate\", \"NESC_USB_SAMP_RATE\", 0, 0, 2, INTEGER1x2),\n}\n\nlocal VF = -- Virtual MFX\n{\n Node:new(0x0000, \"MFX Type\", \"NEVF_MFX_TYPE\", 0, 0, 67, INTEGER1x7, \"mfx\"),\n Node:new(0x0001, \"MFX Dry Send Level\", \"NEVF_MFX_DRY_SEND\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"MFX Chorus Send Level\", \"NEVF_MFX_CHO_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"MFX Reverb Send Level\", \"NEVF_MFX_REV_SEND\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"MFX Control 1 Source\", \"NEVF_MFX_CTRL1_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0006, \"MFX Control 1 Sens\", \"NEVF_MFX_CTRL1_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0007, \"MFX Control 2 Source\", \"NEVF_MFX_CTRL2_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0008, \"MFX Control 2 Sens\", \"NEVF_MFX_CTRL2_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0009, \"MFX Control 3 Source\", \"NEVF_MFX_CTRL3_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000A, \"MFX Control 3 Sens\", \"NEVF_MFX_CTRL3_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000B, \"MFX Control 4 Source\", \"NEVF_MFX_CTRL4_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000C, \"MFX Control 4 Sens\", \"NEVF_MFX_CTRL4_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000D, \"MFX Control Assign 1\", \"NEVF_MFX_CTRL_ASGN1\", 0, 0, 16, INTEGER1x5, \"mfx\", 0),\n Node:new(0x000E, \"MFX Control Assign 2\", \"NEVF_MFX_CTRL_ASGN2\", 0, 0, 16, INTEGER1x5, \"mfx\", 1),\n Node:new(0x000F, \"MFX Control Assign 3\", \"NEVF_MFX_CTRL_ASGN3\", 0, 0, 16, INTEGER1x5, \"mfx\", 2),\n Node:new(0x0010, \"MFX Control Assign 4\", \"NEVF_MFX_CTRL_ASGN4\", 0, 0, 16, INTEGER1x5, \"mfx\", 3),\n Node:new(0x0011, \"MFX Parameter 1 \", \"NEVF_MFX_PRM1\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 4),\n Node:new(0x0015, \"MFX Parameter 2 \", \"NEVF_MFX_PRM2\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 5),\n Node:new(0x0019, \"MFX Parameter 3 \", \"NEVF_MFX_PRM3\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 6),\n Node:new(0x001D, \"MFX Parameter 4 \", \"NEVF_MFX_PRM4\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 7),\n Node:new(0x0021, \"MFX Parameter 5 \", \"NEVF_MFX_PRM5\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 8),\n Node:new(0x0025, \"MFX Parameter 6 \", \"NEVF_MFX_PRM6\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 9),\n Node:new(0x0029, \"MFX Parameter 7 \", \"NEVF_MFX_PRM7\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 10),\n Node:new(0x002D, \"MFX Parameter 8 \", \"NEVF_MFX_PRM8\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 11),\n Node:new(0x0031, \"MFX Parameter 9 \", \"NEVF_MFX_PRM9\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 12),\n Node:new(0x0035, \"MFX Parameter 10\", \"NEVF_MFX_PRM10\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 13),\n Node:new(0x0039, \"MFX Parameter 11\", \"NEVF_MFX_PRM11\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 14),\n Node:new(0x003D, \"MFX Parameter 12\", \"NEVF_MFX_PRM12\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 15),\n Node:new(0x0041, \"MFX Parameter 13\", \"NEVF_MFX_PRM13\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 16),\n Node:new(0x0045, \"MFX Parameter 14\", \"NEVF_MFX_PRM14\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 17),\n Node:new(0x0049, \"MFX Parameter 15\", \"NEVF_MFX_PRM15\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 18),\n Node:new(0x004D, \"MFX Parameter 16\", \"NEVF_MFX_PRM16\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 19),\n Node:new(0x0051, \"MFX Parameter 17\", \"NEVF_MFX_PRM17\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 20),\n Node:new(0x0055, \"MFX Parameter 18\", \"NEVF_MFX_PRM18\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 21),\n Node:new(0x0059, \"MFX Parameter 19\", \"NEVF_MFX_PRM19\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 22),\n Node:new(0x005D, \"MFX Parameter 20\", \"NEVF_MFX_PRM20\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 23),\n Node:new(0x0061, \"MFX Parameter 21\", \"NEVF_MFX_PRM21\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 24),\n Node:new(0x0065, \"MFX Parameter 22\", \"NEVF_MFX_PRM22\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 25),\n Node:new(0x0069, \"MFX Parameter 23\", \"NEVF_MFX_PRM23\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 26),\n Node:new(0x006D, \"MFX Parameter 24\", \"NEVF_MFX_PRM24\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 27),\n Node:new(0x0071, \"MFX Parameter 25\", \"NEVF_MFX_PRM25\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 28),\n Node:new(0x0075, \"MFX Parameter 26\", \"NEVF_MFX_PRM26\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 29),\n Node:new(0x0079, \"MFX Parameter 27\", \"NEVF_MFX_PRM27\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 30),\n Node:new(0x007D, \"MFX Parameter 28\", \"NEVF_MFX_PRM28\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 31),\n Node:new(0x0101, \"MFX Parameter 29\", \"NEVF_MFX_PRM29\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 32),\n Node:new(0x0105, \"MFX Parameter 30\", \"NEVF_MFX_PRM30\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 33),\n Node:new(0x0109, \"MFX Parameter 31\", \"NEVF_MFX_PRM31\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 34),\n Node:new(0x010D, \"MFX Parameter 32\", \"NEVF_MFX_PRM32\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 35),\n}\n\nlocal VP = -- Virtual Part\n{\n Node:new(0x0000, \"Tone Level\", \"NEVP_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0001, \"Tone Pan\", \"NEVP_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"TFX Switch\", \"NEVP_TFX_SW\", 0, 0, 1, INTEGER1x1),\n}\n\nlocal FC = -- Studio Set Common\n{\n Node:new(0x0000, \"Studio Set Name\", \"NEFC_NAME\", 0, 32, 127, ByteSize16),\n Node:new(0x0011, \"MFX1 Control Channel\", \"NEFC_MFX1_CTRL_CH\", 16, 0, 16, INTEGER1x6),\n Node:new(0x0012, \"MFX2 Control Channel\", \"NEFC_MFX2_CTRL_CH\", 16, 0, 16, INTEGER1x6),\n Node:new(0x0013, \"MFX3 Control Channel\", \"NEFC_MFX3_CTRL_CH\", 16, 0, 16, INTEGER1x6),\n Node:new(0x0014, \"MFX Control Src1\", \"NEFC_MFX_CTRL_SRC1\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0015, \"MFX Control Src2\", \"NEFC_MFX_CTRL_SRC2\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0016, \"MFX Control Src3\", \"NEFC_MFX_CTRL_SRC3\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0017, \"MFX Control Src4\", \"NEFC_MFX_CTRL_SRC4\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0018, \"Voice Reserve 1 \", \"NEFC_VOICE_RESERV1\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0019, \"Voice Reserve 2 \", \"NEFC_VOICE_RESERV2\", 0, 0, 64, INTEGER1x7),\n Node:new(0x001A, \"Voice Reserve 3 \", \"NEFC_VOICE_RESERV3\", 0, 0, 64, INTEGER1x7),\n Node:new(0x001B, \"Voice Reserve 4 \", \"NEFC_VOICE_RESERV4\", 0, 0, 64, INTEGER1x7),\n Node:new(0x001C, \"Voice Reserve 5 \", \"NEFC_VOICE_RESERV5\", 0, 0, 64, INTEGER1x7),\n Node:new(0x001D, \"Voice Reserve 6 \", \"NEFC_VOICE_RESERV6\", 0, 0, 64, INTEGER1x7),\n Node:new(0x001E, \"Voice Reserve 7 \", \"NEFC_VOICE_RESERV7\", 0, 0, 64, INTEGER1x7),\n Node:new(0x001F, \"Voice Reserve 8 \", \"NEFC_VOICE_RESERV8\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0020, \"Voice Reserve 9 \", \"NEFC_VOICE_RESERV9\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0021, \"Voice Reserve 10\", \"NEFC_VOICE_RESERV10\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0022, \"Voice Reserve 11\", \"NEFC_VOICE_RESERV11\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0023, \"Voice Reserve 12\", \"NEFC_VOICE_RESERV12\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0024, \"Voice Reserve 13\", \"NEFC_VOICE_RESERV13\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0025, \"Voice Reserve 14\", \"NEFC_VOICE_RESERV14\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0026, \"Voice Reserve 15\", \"NEFC_VOICE_RESERV15\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0027, \"Voice Reserve 16\", \"NEFC_VOICE_RESERV16\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0038, \"MFX Structure\", \"NEFC_MFX_STRUCT\", 0, 0, 15, INTEGER1x4),\n Node:new(0x0039, \"Tone Control 1 Source\", \"NEFC_CTRL1_SRC\", 0, 0, 97, INTEGER1x7),\n Node:new(0x003A, \"Tone Control 2 Source\", \"NEFC_CTRL2_SRC\", 0, 0, 97, INTEGER1x7),\n Node:new(0x003B, \"Tone Control 3 Source\", \"NEFC_CTRL3_SRC\", 0, 0, 97, INTEGER1x7),\n Node:new(0x003C, \"Tone Control 4 Source\", \"NEFC_CTRL4_SRC\", 0, 0, 97, INTEGER1x7),\n Node:new(0x003D, \"Studio Set Tempo\", \"NEFC_OR_TEMPO\", 120, 20, 250, INTEGER2x4),\n Node:new(0x003F, \"Solo Part\", \"NEFC_SOLO_PART\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0040, \"Reverb Switch\", \"NEFC_REVERB_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0041, \"Chorus Switch\", \"NEFC_CHORUS_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0042, \"Mastering EQ Switch\", \"NEFC_MASTER_EQ_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0043, \"Drum Comp/EQ Switch\", \"NEFC_COMPEQ_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0044, \"Drum Comp/EQ Part\", \"NEFC_COMPEQ_PART\", 9, 0, 15, INTEGER1x4),\n Node:new(0x0045, \"Drum Comp/EQ 1 Output Assign\", \"NEFC_COMPEQ1_ASSIGN\", 0, 0, 12, INTEGER1x4),\n Node:new(0x0046, \"Drum Comp/EQ 2 Output Assign\", \"NEFC_COMPEQ2_ASSIGN\", 0, 0, 12, INTEGER1x4),\n Node:new(0x0047, \"Drum Comp/EQ 3 Output Assign\", \"NEFC_COMPEQ3_ASSIGN\", 0, 0, 12, INTEGER1x4),\n Node:new(0x0048, \"Drum Comp/EQ 4 Output Assign\", \"NEFC_COMPEQ4_ASSIGN\", 0, 0, 12, INTEGER1x4),\n Node:new(0x0049, \"Drum Comp/EQ 5 Output Assign\", \"NEFC_COMPEQ5_ASSIGN\", 0, 0, 12, INTEGER1x4),\n Node:new(0x004A, \"Drum Comp/EQ 6 Output Assign\", \"NEFC_COMPEQ6_ASSIGN\", 0, 0, 12, INTEGER1x4),\n Node:new(0x004B, \"Audio Input Source Select\", \"NEFC_IN_SRC_SELECT\", 0, 0, 1, INTEGER1x1),\n Node:new(0x004C, \"Audio Input Level\", \"NEFC_IN_LEVEL\", 100, 0, 127, INTEGER1x7),\n Node:new(0x004D, \"Audio Input Chorus Send Level\", \"NEFC_IN_CHO_SEND_LEVEL\", 0, 0, 127, INTEGER1x7),\n Node:new(0x004E, \"Audio Input Reverb Send Level\", \"NEFC_IN_REV_SEND_LEVEL\", 0, 0, 127, INTEGER1x7),\n Node:new(0x004F, \"Audio Input Mute Switch\", \"NEFC_IN_MUTE_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0050, \"Expansion Slot 1 RomID\", \"NEFC_EXP_SLOT1_ROMID\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0051, \"Expansion Slot 2 RomID\", \"NEFC_EXP_SLOT2_ROMID\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0052, \"Expansion Slot 3 RomID\", \"NEFC_EXP_SLOT3_ROMID\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0053, \"Expansion Slot 4 RomID\", \"NEFC_EXP_SLOT4_ROMID\", 0, 0, 127, INTEGER1x7),\n}\n\nlocal FH = -- Studio Set Common Chorus\n{\n Node:new(0x0000, \"Chorus Type\", \"NEFH_CHO_TYPE\", 1, 0, 3, INTEGER1x4, \"chorus\"),\n Node:new(0x0001, \"Chorus Level\", \"NEFH_CHO_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"Chorus Output Assign \", \"NEFH_CHO_OUT_ASGN\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0003, \"Chorus Output Select \", \"NEFH_CHO_OUT_SELECT\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0004, \"Chorus Parameter 1 \", \"NEFH_CHO_PRM1\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 0),\n Node:new(0x0008, \"Chorus Parameter 2 \", \"NEFH_CHO_PRM2\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 1),\n Node:new(0x000C, \"Chorus Parameter 3 \", \"NEFH_CHO_PRM3\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 2),\n Node:new(0x0010, \"Chorus Parameter 4 \", \"NEFH_CHO_PRM4\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 3),\n Node:new(0x0014, \"Chorus Parameter 5 \", \"NEFH_CHO_PRM5\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 4),\n Node:new(0x0018, \"Chorus Parameter 6 \", \"NEFH_CHO_PRM6\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 5),\n Node:new(0x001C, \"Chorus Parameter 7 \", \"NEFH_CHO_PRM7\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 6),\n Node:new(0x0020, \"Chorus Parameter 8 \", \"NEFH_CHO_PRM8\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 7),\n Node:new(0x0024, \"Chorus Parameter 9 \", \"NEFH_CHO_PRM9\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 8),\n Node:new(0x0028, \"Chorus Parameter 10\", \"NEFH_CHO_PRM10\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 9),\n Node:new(0x002C, \"Chorus Parameter 11\", \"NEFH_CHO_PRM11\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 10),\n Node:new(0x0030, \"Chorus Parameter 12\", \"NEFH_CHO_PRM12\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 11),\n Node:new(0x0034, \"Chorus Parameter 13\", \"NEFH_CHO_PRM13\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 12),\n Node:new(0x0038, \"Chorus Parameter 14\", \"NEFH_CHO_PRM14\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 13),\n Node:new(0x003C, \"Chorus Parameter 15\", \"NEFH_CHO_PRM15\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 14),\n Node:new(0x0040, \"Chorus Parameter 16\", \"NEFH_CHO_PRM16\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 15),\n Node:new(0x0044, \"Chorus Parameter 17\", \"NEFH_CHO_PRM17\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 16),\n Node:new(0x0048, \"Chorus Parameter 18\", \"NEFH_CHO_PRM18\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 17),\n Node:new(0x004C, \"Chorus Parameter 19\", \"NEFH_CHO_PRM19\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 18),\n Node:new(0x0050, \"Chorus Parameter 20\", \"NEFH_CHO_PRM20\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 19),\n}\n\nlocal FV = -- Studio Set Common Reverb\n{\n Node:new(0x0000, \"Reverb Type\", \"NEFV_REV_TYPE\", 1, 0, 6, INTEGER1x4, \"reverb\"),\n Node:new(0x0001, \"Reverb Level\", \"NEFV_REV_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"Reverb Output Assign\", \"NEFV_REV_OUT_ASGN\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0003, \"Reverb Parameter 1 \", \"NEFV_REV_PRM1\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 0),\n Node:new(0x0007, \"Reverb Parameter 2 \", \"NEFV_REV_PRM2\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 1),\n Node:new(0x000B, \"Reverb Parameter 3 \", \"NEFV_REV_PRM3\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 2),\n Node:new(0x000F, \"Reverb Parameter 4 \", \"NEFV_REV_PRM4\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 3),\n Node:new(0x0013, \"Reverb Parameter 5 \", \"NEFV_REV_PRM5\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 4),\n Node:new(0x0017, \"Reverb Parameter 6 \", \"NEFV_REV_PRM6\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 5),\n Node:new(0x001B, \"Reverb Parameter 7 \", \"NEFV_REV_PRM7\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 6),\n Node:new(0x001F, \"Reverb Parameter 8 \", \"NEFV_REV_PRM8\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 7),\n Node:new(0x0023, \"Reverb Parameter 9 \", \"NEFV_REV_PRM9\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 8),\n Node:new(0x0027, \"Reverb Parameter 10\", \"NEFV_REV_PRM10\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 9),\n Node:new(0x002B, \"Reverb Parameter 11\", \"NEFV_REV_PRM11\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 10),\n Node:new(0x002F, \"Reverb Parameter 12\", \"NEFV_REV_PRM12\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 11),\n Node:new(0x0033, \"Reverb Parameter 13\", \"NEFV_REV_PRM13\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 12),\n Node:new(0x0037, \"Reverb Parameter 14\", \"NEFV_REV_PRM14\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 13),\n Node:new(0x003B, \"Reverb Parameter 15\", \"NEFV_REV_PRM15\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 14),\n Node:new(0x003F, \"Reverb Parameter 16\", \"NEFV_REV_PRM16\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 15),\n Node:new(0x0043, \"Reverb Parameter 17\", \"NEFV_REV_PRM17\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 16),\n Node:new(0x0047, \"Reverb Parameter 18\", \"NEFV_REV_PRM18\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 17),\n Node:new(0x004B, \"Reverb Parameter 19\", \"NEFV_REV_PRM19\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 18),\n Node:new(0x004F, \"Reverb Parameter 20\", \"NEFV_REV_PRM20\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 19),\n Node:new(0x0053, \"Reverb Parameter 21\", \"NEFV_REV_PRM21\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 20),\n Node:new(0x0057, \"Reverb Parameter 22\", \"NEFV_REV_PRM22\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 21),\n Node:new(0x005B, \"Reverb Parameter 23\", \"NEFV_REV_PRM23\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 22),\n Node:new(0x005F, \"Reverb Parameter 24\", \"NEFV_REV_PRM24\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 23),\n}\n\nlocal FRSS = -- Studio Set Common RSS\n{\n Node:new(0x0000, \"Motional Surround Switch\", \"NEFRSS_RSS_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0001, \"Room Type\", \"NEFRSS_RSS_ROOM_TYPE\", 2, 0, 3, INTEGER1x2),\n Node:new(0x0002, \"Reverb Level\", \"NEFRSS_REV_LEVEL\", 80, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"Reverb Room Size\", \"NEFRSS_REV_ROOMSIZE\", 1, 0, 2, INTEGER1x7),\n Node:new(0x0004, \"Reverb Time\", \"NEFRSS_REV_TIME\", 40, 0, 100, INTEGER1x7),\n Node:new(0x0005, \"Reverb Density\", \"NEFRSS_REV_DENSITY\", 100, 0, 100, INTEGER1x7),\n Node:new(0x0006, \"Reverb HF Damp\", \"NEFRSS_REV_HFDUMP\", 50, 0, 100, INTEGER1x7),\n Node:new(0x0007, \"Ext Input X-Position\", \"NEFRSS_AUX_IN_XPOS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"Ext Input Y-Position\", \"NEFRSS_AUX_IN_YPOS\", 74, 0, 127, INTEGER1x7),\n Node:new(0x0009, \"Ext Input Width\", \"NEFRSS_AUX_IN_WIDTH\", 10, 0, 32, INTEGER1x6),\n Node:new(0x000A, \"Ext Input RevSend Level\", \"NEFRSS_AUX_IN_RVSEND\", 40, 0, 127, INTEGER1x7),\n Node:new(0x000B, \"Ext Input Control Channel\", \"NEFRSS_AUX_IN_CTRL_CH\", 15, 0, 16, INTEGER1x5),\n Node:new(0x000C, \"Cross Talk Cancel\", \"NEFRSS_SP4XTALKC\", 50, 0, 100, INTEGER1x7),\n}\n\nlocal FMEQ = -- Studio Set Mastering EQ\n{\n Node:new(0x0000, \"EQ Low Freq\", \"NEFMEQ_EQ_LOWFREQ\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0001, \"EQ Low Gain\", \"NEFMEQ_EQ_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0002, \"EQ Mid Freq\", \"NEFMEQ_EQ_MIDFREQ\", 7, 0, 16, INTEGER1x5),\n Node:new(0x0003, \"EQ Mid Gain\", \"NEFMEQ_EQ_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0004, \"EQ Mid Q\", \"NEFMEQ_EQ_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0005, \"EQ High Freq\", \"NEFMEQ_EQ_HIGHFREQ\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0006, \"EQ High Gain\", \"NEFMEQ_EQ_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n}\n\nlocal FM = -- Studio Set MIDI\n{\n Node:new(0x0000, \"Phase Lock\", \"NEFM_PHASE_LOCK\", 0, 0, 1, INTEGER1x1),\n}\n\nlocal FP = -- Studio Set Part\n{\n Node:new(0x0000, \"Receive Channel\", \"NEFP_RX_CH\", 0, 0, 15, INTEGER1x4),\n Node:new(0x0001, \"Part Switch\", \"NEFP_RX_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0002, \"Receive Src1\", \"NEFP_RX_SRC1\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0003, \"Receive Src2\", \"NEFP_RX_SRC2\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0004, \"Receive Src3\", \"NEFP_RX_SRC3\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0005, \"Receive Src4\", \"NEFP_RX_SRC4\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0006, \"Tone Bank Select MSB (CC# 0)\", \"NEFP_PAT_BS_MSB\", 89, 0, 127, INTEGER1x7),\n Node:new(0x0007, \"Tone Bank Select LSB (CC# 32)\", \"NEFP_PAT_BS_LSB\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"Tone Program Number (PC)\", \"NEFP_PAT_PC\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0009, \"Part Level (CC# 7)\", \"NEFP_LEVEL\", 100, 0, 127, INTEGER1x7),\n Node:new(0x000A, \"Part Pan (CC# 10)\", \"NEFP_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x000B, \"Part Coarse Tune (RPN# 2)\", \"NEFP_PIT_CRS\", 64, 16, 112, INTEGER1x7),\n Node:new(0x000C, \"Part Fine Tune (RPN# 1)\", \"NEFP_PIT_FINE\", 64, 14, 114, INTEGER1x7),\n Node:new(0x000D, \"Part Mono/Poly (MONO ON/POLY ON)\", \"NEFP_MONO_POLY\", 2, 0, 2, INTEGER1x2),\n Node:new(0x000E, \"Part Legato Switch (CC# 68)\", \"NEFP_LEGATO_SW\", 2, 0, 2, INTEGER1x2),\n Node:new(0x000F, \"Part Pitch Bend Range (RPN# 0)\", \"NEFP_BEND_RANGE\", 25, 0, 25, INTEGER1x5),\n Node:new(0x0010, \"Part Portamento Switch (CC# 65)\", \"NEFP_PORT_SW\", 2, 0, 2, INTEGER1x2),\n Node:new(0x0011, \"Part Portamento Time (CC# 5)\", \"NEFP_PORT_TIME\", 128, 0, 128, INTEGER2x4),\n Node:new(0x0013, \"Part Cutoff Offset (CC# 74)\", \"NEFP_CUTOFF_OFST\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Part Resonance Offset (CC# 71)\", \"NEFP_RESO_OFST\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0015, \"Part Attack Time Offset (CC# 73)\", \"NEFP_ATK_OFST\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0016, \"Part Decay Time Offset (CC# 75)\", \"NEFP_DCY_OFST\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0017, \"Part Release Time Offset (CC# 72)\", \"NEFP_REL_OFST\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"Part Vibrato Rate (CC# 76)\", \"NEFP_VIB_RATE\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"Part Vibrato Depth (CC# 77)\", \"NEFP_VIB_DEPTH\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Part Vibrato Delay (CC# 78)\", \"NEFP_VIB_DELAY\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"Part Octave Shift\", \"NEFP_OCTAVE\", 64, 61, 67, INTEGER1x3),\n Node:new(0x001C, \"Part Velocity Sens Offset\", \"NEFP_VSENS_OFST\", 64, 1, 127, INTEGER1x7),\n Node:new(0x001D, \"Keyboard Range Lower\", \"NEFP_KRANGE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001E, \"Keyboard Range Upper\", \"NEFP_KRANGE_UP\", 127, 0, 127, INTEGER1x7),\n Node:new(0x001F, \"Keyboard Fade Width Lower\", \"NEFP_KFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"Keyboard Fade Width Upper\", \"NEFP_KFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0021, \"Velocity Range Lower\", \"NEFP_VRANGE_LO\", 1, 1, 127, INTEGER1x7),\n Node:new(0x0022, \"Velocity Range Upper\", \"NEFP_VRANGE_UP\", 127, 1, 127, INTEGER1x7),\n Node:new(0x0023, \"Velocity Fade Width Lower\", \"NEFP_VFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0024, \"Velocity Fade Width Upper\", \"NEFP_VFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0025, \"Mute Switch\", \"NEFP_MUTE_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0026, \"Part Dry Send Level\", \"NEFP_DRY_SEND\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0027, \"Part Chorus Send Level (CC# 93)\", \"NEFP_CHO_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0028, \"Part Reverb Send Level (CC# 91)\", \"NEFP_REV_SEND\", 20, 0, 127, INTEGER1x7),\n Node:new(0x0029, \"Part Output Assign\", \"NEFP_OUT_ASGN\", 0, 0, 11, INTEGER1x4),\n Node:new(0x002B, \"Part Scale Tune Type\", \"NEFP_SCALE_TYPE\", 1, 0, 8, INTEGER1x7),\n Node:new(0x002C, \"Part Scale Tune Key\", \"NEFP_SCALE_KEY\", 0, 0, 11, INTEGER1x7),\n Node:new(0x002D, \"Part Scale Tune for C\", \"NEFP_TUNE_C\", 64, 0, 127, INTEGER1x7),\n Node:new(0x002E, \"Part Scale Tune for C#\", \"NEFP_TUNE_CS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x002F, \"Part Scale Tune for D\", \"NEFP_TUNE_D\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0030, \"Part Scale Tune for D#\", \"NEFP_TUNE_DS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0031, \"Part Scale Tune for E\", \"NEFP_TUNE_E\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0032, \"Part Scale Tune for F\", \"NEFP_TUNE_F\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0033, \"Part Scale Tune for F#\", \"NEFP_TUNE_FS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0034, \"Part Scale Tune for G\", \"NEFP_TUNE_G\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0035, \"Part Scale Tune for G#\", \"NEFP_TUNE_GS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0036, \"Part Scale Tune for A\", \"NEFP_TUNE_A\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0037, \"Part Scale Tune for A#\", \"NEFP_TUNE_AS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0038, \"Part Scale Tune for B\", \"NEFP_TUNE_B\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0039, \"Receive Program Change\", \"NEFP_RX_PC\", 1, 0, 1, INTEGER1x1),\n Node:new(0x003A, \"Receive Bank Select\", \"NEFP_RX_BS\", 1, 0, 1, INTEGER1x1),\n Node:new(0x003B, \"Receive Pitch Bend\", \"NEFP_RX_BEND\", 1, 0, 1, INTEGER1x1),\n Node:new(0x003C, \"Receive Polyphonic Key Pressure\", \"NEFP_RX_PAFT\", 1, 0, 1, INTEGER1x1),\n Node:new(0x003D, \"Receive Channel Pressure\", \"NEFP_RX_CAFT\", 1, 0, 1, INTEGER1x1),\n Node:new(0x003E, \"Receive Modulation\", \"NEFP_RX_MOD\", 1, 0, 1, INTEGER1x1),\n Node:new(0x003F, \"Receive Volume\", \"NEFP_RX_VOL\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0040, \"Receive Pan\", \"NEFP_RX_PAN\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0041, \"Receive Expression\", \"NEFP_RX_EXPR\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0042, \"Receive Hold-1\", \"NEFP_RX_HOLD\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0043, \"Velocity Curve Type\", \"NEFP_VELO_CRV_TYPE\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0044, \"Motional Surround X-Pos\", \"NEFP_RSS_X1POS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0046, \"Motional Surround Y-Pos\", \"NEFP_RSS_Y1POS\", 74, 0, 127, INTEGER1x7),\n Node:new(0x0048, \"Motional Surround Width\", \"NEFP_RSS_WIDTH\", 10, 0, 32, INTEGER1x6),\n Node:new(0x0049, \"Motional Surround RevSend Level\", \"NEFP_RSS_RVSEND\", 40, 0, 127, INTEGER1x7),\n}\n\nlocal FPEQ = -- Studio Set Part EQ\n{\n Node:new(0x0000, \"EQ Switch\", \"NEFPEQ_EQ_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0001, \"EQ Low Freq\", \"NEFPEQ_EQ_LOWFREQ\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0002, \"EQ Low Gain\", \"NEFPEQ_EQ_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0003, \"EQ Mid Freq\", \"NEFPEQ_EQ_MIDFREQ\", 7, 0, 16, INTEGER1x5),\n Node:new(0x0004, \"EQ Mid Gain\", \"NEFPEQ_EQ_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0005, \"EQ Mid Q\", \"NEFPEQ_EQ_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0006, \"EQ High Freq\", \"NEFPEQ_EQ_HIGHFREQ\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0007, \"EQ High Gain\", \"NEFPEQ_EQ_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n}\n\nlocal PC = -- PCM Tone Common\n{\n Node:new(0x0000, \"PCM Tone Name\", \"RFPC_NAME\", 0, 32, 127, ByteSize12),\n Node:new(0x000E, \"PCM Tone Level\", \"RFPC_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x000F, \"PCM Tone Pan\", \"RFPC_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"PCM Tone Priority\", \"RFPC_PRIORITY\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0011, \"PCM Tone Coarse Tune\", \"RFPC_PIT_CRS\", 64, 16, 112, INTEGER1x7),\n Node:new(0x0012, \"PCM Tone Fine Tune\", \"RFPC_PIT_FINE\", 64, 14, 114, INTEGER1x7),\n Node:new(0x0013, \"Octave Shift\", \"RFPC_OCTAVE\", 64, 61, 67, INTEGER1x3),\n Node:new(0x0014, \"Stretch Tune Depth\", \"RFPC_STRETCH\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0015, \"Analog Feel\", \"RFPC_ANALOG_FEEL\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0016, \"Mono/Poly\", \"RFPC_MONO_POLY\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0017, \"Legato Switch\", \"RFPC_LEGATO_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0018, \"Legato Retrigger\", \"RFPC_LEGATO_RETRIG\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0019, \"Portamento Switch\", \"RFPC_PORT_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001A, \"Portamento Mode\", \"RFPC_PORT_MODE\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001B, \"Portamento Type\", \"RFPC_PORT_TYPE\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001C, \"Portamento Start\", \"RFPC_PORT_START\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001D, \"Portamento Time\", \"RFPC_PORT_TIME\", 20, 0, 127, INTEGER1x7),\n Node:new(0x0022, \"Cutoff Offset\", \"RFPC_CUTOFF_OFST\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0023, \"Resonance Offset\", \"RFPC_RESO_OFST\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0024, \"Attack Time Offset\", \"RFPC_ATK_OFST\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0025, \"Release Time Offset\", \"RFPC_REL_OFST\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0026, \"Velocity Sens Offset\", \"RFPC_VSENS_OFST\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0028, \"PMT Control Switch\", \"RFPC_TMT_CTRL_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0029, \"Pitch Bend Range Up\", \"RFPC_BEND_RANGE_UP\", 2, 0, 48, INTEGER1x6),\n Node:new(0x002A, \"Pitch Bend Range Down\", \"RFPC_BEND_RANGE_DW\", 2, 0, 48, INTEGER1x6),\n Node:new(0x002B, \"Matrix Control 1 Source\", \"RFPC_CTRL1_SRC\", 0, 0, 109, INTEGER1x7),\n Node:new(0x002C, \"Matrix Control 1 Destination 1\", \"RFPC_CTRL1_DST1\", 0, 0, 33, INTEGER1x6),\n Node:new(0x002D, \"Matrix Control 1 Sens 1\", \"RFPC_CTRL1_SENS1\", 64, 1, 127, INTEGER1x7),\n Node:new(0x002E, \"Matrix Control 1 Destination 2\", \"RFPC_CTRL1_DST2\", 0, 0, 33, INTEGER1x6),\n Node:new(0x002F, \"Matrix Control 1 Sens 2\", \"RFPC_CTRL1_SENS2\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0030, \"Matrix Control 1 Destination 3\", \"RFPC_CTRL1_DST3\", 0, 0, 33, INTEGER1x6),\n Node:new(0x0031, \"Matrix Control 1 Sens 3\", \"RFPC_CTRL1_SENS3\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0032, \"Matrix Control 1 Destination 4\", \"RFPC_CTRL1_DST4\", 0, 0, 33, INTEGER1x6),\n Node:new(0x0033, \"Matrix Control 1 Sens 4\", \"RFPC_CTRL1_SENS4\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0034, \"Matrix Control 2 Source\", \"RFPC_CTRL2_SRC\", 0, 0, 109, INTEGER1x7),\n Node:new(0x0035, \"Matrix Control 2 Destination 1\", \"RFPC_CTRL2_DST1\", 0, 0, 33, INTEGER1x6),\n Node:new(0x0036, \"Matrix Control 2 Sens 1\", \"RFPC_CTRL2_SENS1\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0037, \"Matrix Control 2 Destination 2\", \"RFPC_CTRL2_DST2\", 0, 0, 33, INTEGER1x6),\n Node:new(0x0038, \"Matrix Control 2 Sens 2\", \"RFPC_CTRL2_SENS2\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0039, \"Matrix Control 2 Destination 3\", \"RFPC_CTRL2_DST3\", 0, 0, 33, INTEGER1x6),\n Node:new(0x003A, \"Matrix Control 2 Sens 3\", \"RFPC_CTRL2_SENS3\", 64, 1, 127, INTEGER1x7),\n Node:new(0x003B, \"Matrix Control 2 Destination 4\", \"RFPC_CTRL2_DST4\", 0, 0, 33, INTEGER1x6),\n Node:new(0x003C, \"Matrix Control 2 Sens 4\", \"RFPC_CTRL2_SENS4\", 64, 1, 127, INTEGER1x7),\n Node:new(0x003D, \"Matrix Control 3 Source\", \"RFPC_CTRL3_SRC\", 0, 0, 109, INTEGER1x7),\n Node:new(0x003E, \"Matrix Control 3 Destination 1\", \"RFPC_CTRL3_DST1\", 0, 0, 33, INTEGER1x6),\n Node:new(0x003F, \"Matrix Control 3 Sens 1\", \"RFPC_CTRL3_SENS1\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0040, \"Matrix Control 3 Destination 2\", \"RFPC_CTRL3_DST2\", 0, 0, 33, INTEGER1x6),\n Node:new(0x0041, \"Matrix Control 3 Sens 2\", \"RFPC_CTRL3_SENS2\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0042, \"Matrix Control 3 Destination 3\", \"RFPC_CTRL3_DST3\", 0, 0, 33, INTEGER1x6),\n Node:new(0x0043, \"Matrix Control 3 Sens 3\", \"RFPC_CTRL3_SENS3\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0044, \"Matrix Control 3 Destination 4\", \"RFPC_CTRL3_DST4\", 0, 0, 33, INTEGER1x6),\n Node:new(0x0045, \"Matrix Control 3 Sens 4\", \"RFPC_CTRL3_SENS4\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0046, \"Matrix Control 4 Source\", \"RFPC_CTRL4_SRC\", 0, 0, 109, INTEGER1x7),\n Node:new(0x0047, \"Matrix Control 4 Destination 1\", \"RFPC_CTRL4_DST1\", 0, 0, 33, INTEGER1x6),\n Node:new(0x0048, \"Matrix Control 4 Sens 1\", \"RFPC_CTRL4_SENS1\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0049, \"Matrix Control 4 Destination 2\", \"RFPC_CTRL4_DST2\", 0, 0, 33, INTEGER1x6),\n Node:new(0x004A, \"Matrix Control 4 Sens 2\", \"RFPC_CTRL4_SENS2\", 64, 1, 127, INTEGER1x7),\n Node:new(0x004B, \"Matrix Control 4 Destination 3\", \"RFPC_CTRL4_DST3\", 0, 0, 33, INTEGER1x6),\n Node:new(0x004C, \"Matrix Control 4 Sens 3\", \"RFPC_CTRL4_SENS3\", 64, 1, 127, INTEGER1x7),\n Node:new(0x004D, \"Matrix Control 4 Destination 4\", \"RFPC_CTRL4_DST4\", 0, 0, 33, INTEGER1x6),\n Node:new(0x004E, \"Matrix Control 4 Sens 4\", \"RFPC_CTRL4_SENS4\", 64, 1, 127, INTEGER1x7),\n Node:new(0x004F, \"Part Modulation Switch\", \"RFPC_PART_MOD_SW\", 0, 0, 1, INTEGER1x1),\n}\n\nlocal PF = -- PCM Tone Common MFX\n{\n Node:new(0x0000, \"MFX Type\", \"RFPF_MFX_TYPE\", 0, 0, 67, INTEGER1x7, \"mfx\"),\n Node:new(0x0001, \"MFX Dry Send Level\", \"RFPF_MFX_DRY_SEND\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"MFX Chorus Send Level\", \"RFPF_MFX_CHO_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"MFX Reverb Send Level\", \"RFPF_MFX_REV_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"MFX Control 1 Source\", \"RFPF_MFX_CTRL1_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0006, \"MFX Control 1 Sens\", \"RFPF_MFX_CTRL1_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0007, \"MFX Control 2 Source\", \"RFPF_MFX_CTRL2_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0008, \"MFX Control 2 Sens\", \"RFPF_MFX_CTRL2_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0009, \"MFX Control 3 Source\", \"RFPF_MFX_CTRL3_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000A, \"MFX Control 3 Sens\", \"RFPF_MFX_CTRL3_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000B, \"MFX Control 4 Source\", \"RFPF_MFX_CTRL4_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000C, \"MFX Control 4 Sens\", \"RFPF_MFX_CTRL4_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000D, \"MFX Control Assign 1\", \"RFPF_MFX_CTRL_ASGN1\", 0, 0, 16, INTEGER1x5, \"mfx\", 0),\n Node:new(0x000E, \"MFX Control Assign 2\", \"RFPF_MFX_CTRL_ASGN2\", 0, 0, 16, INTEGER1x5, \"mfx\", 1),\n Node:new(0x000F, \"MFX Control Assign 3\", \"RFPF_MFX_CTRL_ASGN3\", 0, 0, 16, INTEGER1x5, \"mfx\", 2),\n Node:new(0x0010, \"MFX Control Assign 4\", \"RFPF_MFX_CTRL_ASGN4\", 0, 0, 16, INTEGER1x5, \"mfx\", 3),\n Node:new(0x0011, \"MFX Parameter 1 \", \"RFPF_MFX_PRM1\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 4),\n Node:new(0x0015, \"MFX Parameter 2 \", \"RFPF_MFX_PRM2\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 5),\n Node:new(0x0019, \"MFX Parameter 3 \", \"RFPF_MFX_PRM3\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 6),\n Node:new(0x001D, \"MFX Parameter 4 \", \"RFPF_MFX_PRM4\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 7),\n Node:new(0x0021, \"MFX Parameter 5 \", \"RFPF_MFX_PRM5\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 8),\n Node:new(0x0025, \"MFX Parameter 6 \", \"RFPF_MFX_PRM6\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 9),\n Node:new(0x0029, \"MFX Parameter 7 \", \"RFPF_MFX_PRM7\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 10),\n Node:new(0x002D, \"MFX Parameter 8 \", \"RFPF_MFX_PRM8\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 11),\n Node:new(0x0031, \"MFX Parameter 9 \", \"RFPF_MFX_PRM9\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 12),\n Node:new(0x0035, \"MFX Parameter 10\", \"RFPF_MFX_PRM10\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 13),\n Node:new(0x0039, \"MFX Parameter 11\", \"RFPF_MFX_PRM11\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 14),\n Node:new(0x003D, \"MFX Parameter 12\", \"RFPF_MFX_PRM12\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 15),\n Node:new(0x0041, \"MFX Parameter 13\", \"RFPF_MFX_PRM13\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 16),\n Node:new(0x0045, \"MFX Parameter 14\", \"RFPF_MFX_PRM14\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 17),\n Node:new(0x0049, \"MFX Parameter 15\", \"RFPF_MFX_PRM15\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 18),\n Node:new(0x004D, \"MFX Parameter 16\", \"RFPF_MFX_PRM16\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 19),\n Node:new(0x0051, \"MFX Parameter 17\", \"RFPF_MFX_PRM17\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 20),\n Node:new(0x0055, \"MFX Parameter 18\", \"RFPF_MFX_PRM18\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 21),\n Node:new(0x0059, \"MFX Parameter 19\", \"RFPF_MFX_PRM19\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 22),\n Node:new(0x005D, \"MFX Parameter 20\", \"RFPF_MFX_PRM20\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 23),\n Node:new(0x0061, \"MFX Parameter 21\", \"RFPF_MFX_PRM21\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 24),\n Node:new(0x0065, \"MFX Parameter 22\", \"RFPF_MFX_PRM22\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 25),\n Node:new(0x0069, \"MFX Parameter 23\", \"RFPF_MFX_PRM23\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 26),\n Node:new(0x006D, \"MFX Parameter 24\", \"RFPF_MFX_PRM24\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 27),\n Node:new(0x0071, \"MFX Parameter 25\", \"RFPF_MFX_PRM25\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 28),\n Node:new(0x0075, \"MFX Parameter 26\", \"RFPF_MFX_PRM26\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 29),\n Node:new(0x0079, \"MFX Parameter 27\", \"RFPF_MFX_PRM27\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 30),\n Node:new(0x007D, \"MFX Parameter 28\", \"RFPF_MFX_PRM28\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 31),\n Node:new(0x0101, \"MFX Parameter 29\", \"RFPF_MFX_PRM29\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 32),\n Node:new(0x0105, \"MFX Parameter 30\", \"RFPF_MFX_PRM30\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 33),\n Node:new(0x0109, \"MFX Parameter 31\", \"RFPF_MFX_PRM31\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 34),\n Node:new(0x010D, \"MFX Parameter 32\", \"RFPF_MFX_PRM32\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 35),\n}\n\nlocal PX = -- PCM Tone PMT (Partial Mix Table)\n{\n Node:new(0x0000, \"Structure Type 1 & 2\", \"RFPX_STRUCT1\", 0, 0, 9, INTEGER1x4),\n Node:new(0x0001, \"Booster 1 & 2\", \"RFPX_BOOST1\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0002, \"Structure Type 3 & 4\", \"RFPX_STRUCT3\", 0, 0, 9, INTEGER1x4),\n Node:new(0x0003, \"Booster 3 & 4\", \"RFPX_BOOST3\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0004, \"PMT Velocity Control\", \"RFPX_TMT_VELO_CTRL\", 1, 0, 3, INTEGER1x2),\n Node:new(0x0005, \"PMT1 Partial Switch\", \"RFPX_TMT1_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0006, \"PMT1 Keyboard Range Lower\", \"RFPX_TMT1_KRANGE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0007, \"PMT1 Keyboard Range Upper\", \"RFPX_TMT1_KRANGE_UP\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"PMT1 Keyboard Fade Width Lower\", \"RFPX_TMT1_KFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0009, \"PMT1 Keyboard Fade Width Upper\", \"RFPX_TMT1_KFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000A, \"PMT1 Velocity Range Lower\", \"RFPX_TMT1_VRANGE_LO\", 1, 1, 127, INTEGER1x7),\n Node:new(0x000B, \"PMT1 Velocity Range Upper\", \"RFPX_TMT1_VRANGE_UP\", 127, 1, 127, INTEGER1x7),\n Node:new(0x000C, \"PMT1 Velocity Fade Width Lower\", \"RFPX_TMT1_VFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000D, \"PMT1 Velocity Fade Width Upper\", \"RFPX_TMT1_VFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000E, \"PMT2 Partial Switch\", \"RFPX_TMT2_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x000F, \"PMT2 Keyboard Range Lower\", \"RFPX_TMT2_KRANGE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"PMT2 Keyboard Range Upper\", \"RFPX_TMT2_KRANGE_UP\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0011, \"PMT2 Keyboard Fade Width Lower\", \"RFPX_TMT2_KFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"PMT2 Keyboard Fade Width Upper\", \"RFPX_TMT2_KFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"PMT2 Velocity Range Lower\", \"RFPX_TMT2_VRANGE_LO\", 1, 1, 127, INTEGER1x7),\n Node:new(0x0014, \"PMT2 Velocity Range Upper\", \"RFPX_TMT2_VRANGE_UP\", 127, 1, 127, INTEGER1x7),\n Node:new(0x0015, \"PMT2 Velocity Fade Width Lower\", \"RFPX_TMT2_VFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0016, \"PMT2 Velocity Fade Width Upper\", \"RFPX_TMT2_VFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0017, \"PMT3 Partial Switch\", \"RFPX_TMT3_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0018, \"PMT3 Keyboard Range Lower\", \"RFPX_TMT3_KRANGE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"PMT3 Keyboard Range Upper\", \"RFPX_TMT3_KRANGE_UP\", 127, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"PMT3 Keyboard Fade Width Lower\", \"RFPX_TMT3_KFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"PMT3 Keyboard Fade Width Upper\", \"RFPX_TMT3_KFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001C, \"PMT3 Velocity Range Lower\", \"RFPX_TMT3_VRANGE_LO\", 1, 1, 127, INTEGER1x7),\n Node:new(0x001D, \"PMT3 Velocity Range Upper\", \"RFPX_TMT3_VRANGE_UP\", 127, 1, 127, INTEGER1x7),\n Node:new(0x001E, \"PMT3 Velocity Fade Width Lower\", \"RFPX_TMT3_VFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001F, \"PMT3 Velocity Fade Width Upper\", \"RFPX_TMT3_VFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"PMT4 Partial Switch\", \"RFPX_TMT4_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0021, \"PMT4 Keyboard Range Lower\", \"RFPX_TMT4_KRANGE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0022, \"PMT4 Keyboard Range Upper\", \"RFPX_TMT4_KRANGE_UP\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0023, \"PMT4 Keyboard Fade Width Lower\", \"RFPX_TMT4_KFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0024, \"PMT4 Keyboard Fade Width Upper\", \"RFPX_TMT4_KFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0025, \"PMT4 Velocity Range Lower\", \"RFPX_TMT4_VRANGE_LO\", 1, 1, 127, INTEGER1x7),\n Node:new(0x0026, \"PMT4 Velocity Range Upper\", \"RFPX_TMT4_VRANGE_UP\", 127, 1, 127, INTEGER1x7),\n Node:new(0x0027, \"PMT4 Velocity Fade Width Lower\", \"RFPX_TMT4_VFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0028, \"PMT4 Velocity Fade Width Upper\", \"RFPX_TMT4_VFADE_UP\", 0, 0, 127, INTEGER1x7),\n}\n\nlocal PT = -- PCM Tone Partial\n{\n Node:new(0x0000, \"Partial Level\", \"RFPT_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0001, \"Partial Coarse Tune\", \"RFPT_PIT_CRS\", 64, 16, 112, INTEGER1x7),\n Node:new(0x0002, \"Partial Fine Tune\", \"RFPT_PIT_FINE\", 64, 14, 114, INTEGER1x7),\n Node:new(0x0003, \"Partial Random Pitch Depth\", \"RFPT_PIT_RND\", 0, 0, 30, INTEGER1x5),\n Node:new(0x0004, \"Partial Pan\", \"RFPT_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"Partial Pan Keyfollow\", \"RFPT_PAN_KF\", 64, 54, 74, INTEGER1x5),\n Node:new(0x0006, \"Partial Random Pan Depth\", \"RFPT_PAN_RND\", 0, 0, 63, INTEGER1x6),\n Node:new(0x0007, \"Partial Alternate Pan Depth\", \"RFPT_PAN_ALT\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0008, \"Partial Env Mode\", \"RFPT_ENV_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0009, \"Partial Delay Mode\", \"RFPT_DELAY_MODE\", 0, 0, 3, INTEGER1x2),\n Node:new(0x000A, \"Partial Delay Time\", \"RFPT_DELAY_TIME\", 0, 0, 149, INTEGER2x4),\n Node:new(0x000C, \"Partial Dry Send Level\", \"RFPT_DRY_SEND\", 127, 0, 127, INTEGER1x7),\n Node:new(0x000F, \"Partial Chorus Send Level\", \"RFPT_CHO_SEND_A\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"Partial Reverb Send Level\", \"RFPT_REV_SEND_A\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Partial Receive Bender\", \"RFPT_RX_BEND\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0013, \"Partial Receive Expression\", \"RFPT_RX_EXPR\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0014, \"Partial Receive Hold-1\", \"RFPT_RX_HOLD\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0016, \"Partial Redamper Switch\", \"RFPT_REDAMP_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0017, \"Partial Control 1 Switch 1\", \"RFPT_CTRL1_SW1\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0018, \"Partial Control 1 Switch 2\", \"RFPT_CTRL1_SW2\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0019, \"Partial Control 1 Switch 3\", \"RFPT_CTRL1_SW3\", 1, 0, 2, INTEGER1x2),\n Node:new(0x001A, \"Partial Control 1 Switch 4\", \"RFPT_CTRL1_SW4\", 1, 0, 2, INTEGER1x2),\n Node:new(0x001B, \"Partial Control 2 Switch 1\", \"RFPT_CTRL2_SW1\", 1, 0, 2, INTEGER1x2),\n Node:new(0x001C, \"Partial Control 2 Switch 2\", \"RFPT_CTRL2_SW2\", 1, 0, 2, INTEGER1x2),\n Node:new(0x001D, \"Partial Control 2 Switch 3\", \"RFPT_CTRL2_SW3\", 1, 0, 2, INTEGER1x2),\n Node:new(0x001E, \"Partial Control 2 Switch 4\", \"RFPT_CTRL2_SW4\", 1, 0, 2, INTEGER1x2),\n Node:new(0x001F, \"Partial Control 3 Switch 1\", \"RFPT_CTRL3_SW1\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0020, \"Partial Control 3 Switch 2\", \"RFPT_CTRL3_SW2\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0021, \"Partial Control 3 Switch 3\", \"RFPT_CTRL3_SW3\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0022, \"Partial Control 3 Switch 4\", \"RFPT_CTRL3_SW4\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0023, \"Partial Control 4 Switch 1\", \"RFPT_CTRL4_SW1\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0024, \"Partial Control 4 Switch 2\", \"RFPT_CTRL4_SW2\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0025, \"Partial Control 4 Switch 3\", \"RFPT_CTRL4_SW3\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0026, \"Partial Control 4 Switch 4\", \"RFPT_CTRL4_SW4\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0027, \"Wave Group Type\", \"RFPT_WAV_GTYPE\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0028, \"Wave Group ID\", \"RFPT_WAV_GID\", 1, 0, 16384, INTEGER4x4),\n Node:new(0x002C, \"Wave Number L (Mono)\", \"RFPT_WAV_NUML\", 1, 0, 16384, INTEGER4x4),\n Node:new(0x0030, \"Wave Number R\", \"RFPT_WAV_NUMR\", 0, 0, 16384, INTEGER4x4),\n Node:new(0x0034, \"Wave Gain\", \"RFPT_WAV_GAIN\", 1, 0, 3, INTEGER1x2),\n Node:new(0x0035, \"Wave FXM Switch\", \"RFPT_FXM_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0036, \"Wave FXM Color\", \"RFPT_FXM_COLOR\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0037, \"Wave FXM Depth\", \"RFPT_FXM_DEPTH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0038, \"Wave Tempo Sync\", \"RFPT_TEMPO_SYNC\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0039, \"Wave Pitch Keyfollow\", \"RFPT_PIT_KF\", 74, 44, 84, INTEGER1x6),\n Node:new(0x003A, \"Pitch Env Depth\", \"RFPT_PENV_DEPTH\", 64, 52, 76, INTEGER1x5),\n Node:new(0x003B, \"Pitch Env Velocity Sens\", \"RFPT_PENV_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x003C, \"Pitch Env Time 1 Velocity Sens\", \"RFPT_PENV_T1_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x003D, \"Pitch Env Time 4 Velocity Sens\", \"RFPT_PENV_T4_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x003E, \"Pitch Env Time Keyfollow\", \"RFPT_PENV_TKF\", 64, 54, 74, INTEGER1x5),\n Node:new(0x003F, \"Pitch Env Time 1\", \"RFPT_PENV_T1\", 40, 0, 127, INTEGER1x7),\n Node:new(0x0040, \"Pitch Env Time 2\", \"RFPT_PENV_T2\", 80, 0, 127, INTEGER1x7),\n Node:new(0x0041, \"Pitch Env Time 3\", \"RFPT_PENV_T3\", 40, 0, 127, INTEGER1x7),\n Node:new(0x0042, \"Pitch Env Time 4\", \"RFPT_PENV_T4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0043, \"Pitch Env Level 0\", \"RFPT_PENV_L0\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0044, \"Pitch Env Level 1\", \"RFPT_PENV_L1\", 34, 1, 127, INTEGER1x7),\n Node:new(0x0045, \"Pitch Env Level 2\", \"RFPT_PENV_L2\", 94, 1, 127, INTEGER1x7),\n Node:new(0x0046, \"Pitch Env Level 3\", \"RFPT_PENV_L3\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0047, \"Pitch Env Level 4\", \"RFPT_PENV_L4\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0048, \"TVF Filter Type\", \"RFPT_FILTER_TYPE\", 1, 0, 6, INTEGER1x3),\n Node:new(0x0049, \"TVF Cutoff Frequency\", \"RFPT_CUTOFF\", 127, 0, 127, INTEGER1x7),\n Node:new(0x004A, \"TVF Cutoff Keyfollow\", \"RFPT_CUTOFF_KF\", 64, 44, 84, INTEGER1x6),\n Node:new(0x004B, \"TVF Cutoff Velocity Curve\", \"RFPT_CUTOFF_VCRV\", 1, 0, 7, INTEGER1x3),\n Node:new(0x004C, \"TVF Cutoff Velocity Sens\", \"RFPT_CUTOFF_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x004D, \"TVF Resonance\", \"RFPT_RESO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x004E, \"TVF Resonance Velocity Sens\", \"RFPT_RESO_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x004F, \"TVF Env Depth\", \"RFPT_FENV_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0050, \"TVF Env Velocity Curve\", \"RFPT_FENV_VCRV\", 1, 0, 7, INTEGER1x3),\n Node:new(0x0051, \"TVF Env Velocity Sens\", \"RFPT_FENV_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0052, \"TVF Env Time 1 Velocity Sens\", \"RFPT_FENV_T1_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0053, \"TVF Env Time 4 Velocity Sens\", \"RFPT_FENV_T4_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0054, \"TVF Env Time Keyfollow\", \"RFPT_FENV_TKF\", 64, 54, 74, INTEGER1x5),\n Node:new(0x0055, \"TVF Env Time 1\", \"RFPT_FENV_T1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0056, \"TVF Env Time 2\", \"RFPT_FENV_T2\", 10, 0, 127, INTEGER1x7),\n Node:new(0x0057, \"TVF Env Time 3\", \"RFPT_FENV_T3\", 10, 0, 127, INTEGER1x7),\n Node:new(0x0058, \"TVF Env Time 4\", \"RFPT_FENV_T4\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0059, \"TVF Env Level 0\", \"RFPT_FENV_L0\", 0, 0, 127, INTEGER1x7),\n Node:new(0x005A, \"TVF Env Level 1\", \"RFPT_FENV_L1\", 127, 0, 127, INTEGER1x7),\n Node:new(0x005B, \"TVF Env Level 2\", \"RFPT_FENV_L2\", 127, 0, 127, INTEGER1x7),\n Node:new(0x005C, \"TVF Env Level 3\", \"RFPT_FENV_L3\", 127, 0, 127, INTEGER1x7),\n Node:new(0x005D, \"TVF Env Level 4\", \"RFPT_FENV_L4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x005E, \"Bias Level\", \"RFPT_BIAS_LEVEL\", 64, 54, 74, INTEGER1x5),\n Node:new(0x005F, \"Bias Position\", \"RFPT_BIAS_POS\", 60, 0, 127, INTEGER1x7),\n Node:new(0x0060, \"Bias Direction\", \"RFPT_BIAS_DIR\", 3, 0, 3, INTEGER1x2),\n Node:new(0x0061, \"TVA Level Velocity Curve\", \"RFPT_LEVEL_VCRV\", 1, 0, 7, INTEGER1x3),\n Node:new(0x0062, \"TVA Level Velocity Sens\", \"RFPT_LEVEL_VSENS\", 96, 1, 127, INTEGER1x7),\n Node:new(0x0063, \"TVA Env Time 1 Velocity Sens\", \"RFPT_AENV_T1_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0064, \"TVA Env Time 4 Velocity Sens\", \"RFPT_AENV_T4_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0065, \"TVA Env Time Keyfollow\", \"RFPT_AENV_TKF\", 64, 54, 74, INTEGER1x5),\n Node:new(0x0066, \"TVA Env Time 1\", \"RFPT_AENV_T1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0067, \"TVA Env Time 2\", \"RFPT_AENV_T2\", 10, 0, 127, INTEGER1x7),\n Node:new(0x0068, \"TVA Env Time 3\", \"RFPT_AENV_T3\", 10, 0, 127, INTEGER1x7),\n Node:new(0x0069, \"TVA Env Time 4\", \"RFPT_AENV_T4\", 10, 0, 127, INTEGER1x7),\n Node:new(0x006A, \"TVA Env Level 1\", \"RFPT_AENV_L1\", 127, 0, 127, INTEGER1x7),\n Node:new(0x006B, \"TVA Env Level 2\", \"RFPT_AENV_L2\", 127, 0, 127, INTEGER1x7),\n Node:new(0x006C, \"TVA Env Level 3\", \"RFPT_AENV_L3\", 127, 0, 127, INTEGER1x7),\n Node:new(0x006D, \"LFO1 Waveform\", \"RFPT_LFO1_FORM\", 1, 0, 12, INTEGER1x4),\n Node:new(0x006E, \"LFO1 Rate\", \"RFPT_LFO1_RATE\", 92, 0, 149, INTEGER2x4),\n Node:new(0x0070, \"LFO1 Offset\", \"RFPT_LFO1_OFST\", 2, 0, 4, INTEGER1x3),\n Node:new(0x0071, \"LFO1 Rate Detune\", \"RFPT_LFO1_RATE_DETN\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0072, \"LFO1 Delay Time\", \"RFPT_LFO1_DELAY\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0073, \"LFO1 Delay Time Keyfollow\", \"RFPT_LFO1_DELAY_KF\", 64, 54, 74, INTEGER1x5),\n Node:new(0x0074, \"LFO1 Fade Mode\", \"RFPT_LFO1_FADE_MODE\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0075, \"LFO1 Fade Time\", \"RFPT_LFO1_FADE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0076, \"LFO1 Key Trigger\", \"RFPT_LFO1_KEY_TRIG\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0077, \"LFO1 Pitch Depth\", \"RFPT_LFO1_PIT_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0078, \"LFO1 TVF Depth\", \"RFPT_LFO1_TVF_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0079, \"LFO1 TVA Depth\", \"RFPT_LFO1_TVA_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x007A, \"LFO1 Pan Depth\", \"RFPT_LFO1_PAN_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x007B, \"LFO2 Waveform\", \"RFPT_LFO2_FORM\", 1, 0, 12, INTEGER1x4),\n Node:new(0x007C, \"LFO2 Rate\", \"RFPT_LFO2_RATE\", 92, 0, 149, INTEGER2x4),\n Node:new(0x007E, \"LFO2 Offset\", \"RFPT_LFO2_OFST\", 2, 0, 4, INTEGER1x3),\n Node:new(0x007F, \"LFO2 Rate Detune\", \"RFPT_LFO2_RATE_DETN\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0100, \"LFO2 Delay Time\", \"RFPT_LFO2_DELAY\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0101, \"LFO2 Delay Time Keyfollow\", \"RFPT_LFO2_DELAY_KF\", 64, 54, 74, INTEGER1x5),\n Node:new(0x0102, \"LFO2 Fade Mode\", \"RFPT_LFO2_FADE_MODE\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0103, \"LFO2 Fade Time\", \"RFPT_LFO2_FADE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0104, \"LFO2 Key Trigger\", \"RFPT_LFO2_KEY_TRIG\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0105, \"LFO2 Pitch Depth\", \"RFPT_LFO2_PIT_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0106, \"LFO2 TVF Depth\", \"RFPT_LFO2_TVF_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0107, \"LFO2 TVA Depth\", \"RFPT_LFO2_TVA_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0108, \"LFO2 Pan Depth\", \"RFPT_LFO2_PAN_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0109, \"LFO Step Type\", \"RFPT_LFO_STEP_TYPE\", 0, 0, 1, INTEGER1x4),\n Node:new(0x010A, \"LFO Step1\", \"RFPT_LFO_STEP1\", 64, 28, 100, INTEGER1x7),\n Node:new(0x010B, \"LFO Step2\", \"RFPT_LFO_STEP2\", 64, 28, 100, INTEGER1x7),\n Node:new(0x010C, \"LFO Step3\", \"RFPT_LFO_STEP3\", 64, 28, 100, INTEGER1x7),\n Node:new(0x010D, \"LFO Step4\", \"RFPT_LFO_STEP4\", 64, 28, 100, INTEGER1x7),\n Node:new(0x010E, \"LFO Step5\", \"RFPT_LFO_STEP5\", 64, 28, 100, INTEGER1x7),\n Node:new(0x010F, \"LFO Step6\", \"RFPT_LFO_STEP6\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0110, \"LFO Step7\", \"RFPT_LFO_STEP7\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0111, \"LFO Step8\", \"RFPT_LFO_STEP8\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0112, \"LFO Step9\", \"RFPT_LFO_STEP9\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0113, \"LFO Step10\", \"RFPT_LFO_STEP10\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0114, \"LFO Step11\", \"RFPT_LFO_STEP11\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0115, \"LFO Step12\", \"RFPT_LFO_STEP12\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0116, \"LFO Step13\", \"RFPT_LFO_STEP13\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0117, \"LFO Step14\", \"RFPT_LFO_STEP14\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0118, \"LFO Step15\", \"RFPT_LFO_STEP15\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0119, \"LFO Step16\", \"RFPT_LFO_STEP16\", 64, 28, 100, INTEGER1x7),\n}\n\nlocal PLGT4 = -- PCM Tone Controller\n{\n Node:new(0x0000, \"Beam Switch\", \"RFPLGT4_BEAM_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0001, \"Beam Assign\", \"RFPLGT4_BEAM_ASGN\", 2, 0, 109, INTEGER1x7),\n Node:new(0x0002, \"Beam Polarity\", \"RFPLGT4_BEAM_POL\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0003, \"Beam Range Lower\", \"RFPLGT4_BEAM_RANGE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0004, \"Beam Range Upper\", \"RFPLGT4_BEAM_RANGE_UP\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"Knob 1 Assign\", \"RFPLGT4_KNOB1_ASGN\", 0, 0, 102, INTEGER1x7),\n Node:new(0x0006, \"Knob 2 Assign\", \"RFPLGT4_KNOB2_ASGN\", 0, 0, 102, INTEGER1x7),\n Node:new(0x0007, \"Knob 3 Assign\", \"RFPLGT4_KNOB3_ASGN\", 0, 0, 102, INTEGER1x7),\n Node:new(0x0008, \"Knob 4 Assign\", \"RFPLGT4_KNOB4_ASGN\", 0, 0, 102, INTEGER1x7),\n Node:new(0x0009, \"Switch 1 Assign\", \"RFPLGT4_SW1_ASGN\", 0, 0, 105, INTEGER1x7),\n Node:new(0x000A, \"Switch 1 Assign Mode\", \"RFPLGT4_SW1_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x000B, \"Switch 2 Assign\", \"RFPLGT4_SW2_ASGN\", 0, 0, 105, INTEGER1x7),\n Node:new(0x000C, \"Switch 2 Assign Mode\", \"RFPLGT4_SW2_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x000D, \"Switch 3 Assign\", \"RFPLGT4_SW3_ASGN\", 0, 0, 105, INTEGER1x7),\n Node:new(0x000E, \"Switch 3 Assign Mode\", \"RFPLGT4_SW3_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x000F, \"Switch 4 Assign\", \"RFPLGT4_SW4_ASGN\", 0, 0, 105, INTEGER1x7),\n Node:new(0x0010, \"Switch 4 Assign Mode\", \"RFPLGT4_SW4_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0011, \"Arpeggio Switch\", \"RFPLGT4_ARP_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0012, \"Arpeggio Hold\", \"RFPLGT4_ARP_HOLD\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0013, \"Arpeggio Style\", \"RFPLGT4_ARP_STYLE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Arpeggio Variation\", \"RFPLGT4_ARP_VARIAT\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0015, \"Arpeggio Motif\", \"RFPLGT4_ARP_MOTIF\", 0, 0, 9, INTEGER1x7),\n Node:new(0x0016, \"Arpeggio Accent Rate\", \"RFPLGT4_ARP_ACCT_RATE\", 100, 0, 100, INTEGER1x7),\n Node:new(0x0017, \"Arpeggio Shuffle Rate\", \"RFPLGT4_ARP_SHFL_RATE\", 50, 0, 100, INTEGER1x7),\n Node:new(0x0018, \"Arpeggio Shuffle Resolution\", \"RFPLGT4_ARP_SHFL_RESO\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0019, \"Arpeggio Keyboard Velocity\", \"RFPLGT4_ARP_VELO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Arpeggio Octave Range\", \"RFPLGT4_ARP_RANGE\", 64, 61, 67, INTEGER1x3),\n Node:new(0x001B, \"Arpeggio Key Trigger\", \"RFPLGT4_ARP_KEY_TRIG\", 0, 0, 1, INTEGER1x1),\n}\n\nlocal PC2 = -- PCM Tone Common 2\n{\n Node:new(0x0000, \"(reserve)\", \"RESERVE_DUMMY\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"Tone Category\", \"RFPC2_CATE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"Phrase Octave Shift\", \"RFPC2_PHRASE_OCT\", 64, 61, 67, INTEGER1x3),\n Node:new(0x0014, \"Keyword Flag 1 \", \"RFPC2_KEYWORD1\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0015, \"Keyword Flag 2 \", \"RFPC2_KEYWORD2\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0016, \"Keyword Flag 3 \", \"RFPC2_KEYWORD3\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0017, \"Keyword Flag 4 \", \"RFPC2_KEYWORD4\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0018, \"Keyword Flag 5 \", \"RFPC2_KEYWORD5\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0019, \"Keyword Flag 6 \", \"RFPC2_KEYWORD6\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001A, \"Keyword Flag 7 \", \"RFPC2_KEYWORD7\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001B, \"Keyword Flag 8 \", \"RFPC2_KEYWORD8\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001C, \"Keyword Flag 9 \", \"RFPC2_KEYWORD9\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001D, \"Keyword Flag 10\", \"RFPC2_KEYWORD10\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001E, \"Keyword Flag 11\", \"RFPC2_KEYWORD11\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001F, \"Keyword Flag 12\", \"RFPC2_KEYWORD12\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0020, \"Keyword Flag 13\", \"RFPC2_KEYWORD13\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0021, \"Keyword Flag 14\", \"RFPC2_KEYWORD14\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0022, \"Keyword Flag 15\", \"RFPC2_KEYWORD15\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0023, \"Keyword Flag 16\", \"RFPC2_KEYWORD16\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0024, \"Keyword Flag 17\", \"RFPC2_KEYWORD17\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0025, \"Keyword Flag 18\", \"RFPC2_KEYWORD18\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0026, \"Keyword Flag 19\", \"RFPC2_KEYWORD19\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0027, \"Keyword Flag 20\", \"RFPC2_KEYWORD20\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0028, \"Keyword Flag 21\", \"RFPC2_KEYWORD21\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0029, \"Keyword Flag 22\", \"RFPC2_KEYWORD22\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002A, \"Keyword Flag 23\", \"RFPC2_KEYWORD23\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002B, \"Keyword Flag 24\", \"RFPC2_KEYWORD24\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002C, \"Keyword Flag 25\", \"RFPC2_KEYWORD25\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002D, \"Keyword Flag 26\", \"RFPC2_KEYWORD26\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002E, \"Keyword Flag 27\", \"RFPC2_KEYWORD27\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002F, \"Keyword Flag 28\", \"RFPC2_KEYWORD28\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0030, \"Keyword Flag 29\", \"RFPC2_KEYWORD29\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0031, \"Keyword Flag 30\", \"RFPC2_KEYWORD30\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0032, \"Keyword Flag 31\", \"RFPC2_KEYWORD31\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0033, \"TFX Switch\", \"RFPC2_TFX_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0034, \"Meta 1 \", \"RFPC2_META1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0035, \"Meta 2 \", \"RFPC2_META2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0036, \"Meta 3 \", \"RFPC2_META3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0037, \"Meta 4 \", \"RFPC2_META4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0038, \"Phrase Number\", \"RFPC2_PHRASE\", 0, 0, 65535, INTEGER4x4),\n}\n\nlocal PTM = -- PCM Tone Modify\n{\n Node:new(0x0001, \"Modify Parameter 1 \", \"RFPTM_MOD_PRM1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"Modify Parameter 2 \", \"RFPTM_MOD_PRM2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"Modify Parameter 3 \", \"RFPTM_MOD_PRM3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0004, \"Modify Parameter 4 \", \"RFPTM_MOD_PRM4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"Modify Parameter 5 \", \"RFPTM_MOD_PRM5\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0006, \"Modify Parameter 6 \", \"RFPTM_MOD_PRM6\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0007, \"Modify Parameter 7 \", \"RFPTM_MOD_PRM7\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"Modify Parameter 8 \", \"RFPTM_MOD_PRM8\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0009, \"Modify Parameter 9 \", \"RFPTM_MOD_PRM9\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000A, \"Modify Parameter 10\", \"RFPTM_MOD_PRM10\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000B, \"Modify Parameter 11\", \"RFPTM_MOD_PRM11\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000C, \"Modify Parameter 12\", \"RFPTM_MOD_PRM12\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000D, \"Modify Parameter 13\", \"RFPTM_MOD_PRM13\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000E, \"Modify Parameter 14\", \"RFPTM_MOD_PRM14\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000F, \"Modify Parameter 15\", \"RFPTM_MOD_PRM15\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"Modify Parameter 16\", \"RFPTM_MOD_PRM16\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0011, \"Modify Parameter 17\", \"RFPTM_MOD_PRM17\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Modify Parameter 18\", \"RFPTM_MOD_PRM18\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"Modify Parameter 19\", \"RFPTM_MOD_PRM19\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Modify Parameter 20\", \"RFPTM_MOD_PRM20\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0015, \"Modify Parameter 21\", \"RFPTM_MOD_PRM21\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0016, \"Modify Parameter 22\", \"RFPTM_MOD_PRM22\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0017, \"Modify Parameter 23\", \"RFPTM_MOD_PRM23\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"Modify Parameter 24\", \"RFPTM_MOD_PRM24\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"Modify Parameter 25\", \"RFPTM_MOD_PRM25\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Modify Parameter 26\", \"RFPTM_MOD_PRM26\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"Modify Parameter 27\", \"RFPTM_MOD_PRM27\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001C, \"Modify Parameter 28\", \"RFPTM_MOD_PRM28\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001D, \"Modify Parameter 29\", \"RFPTM_MOD_PRM29\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001E, \"Modify Parameter 30\", \"RFPTM_MOD_PRM30\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001F, \"Modify Parameter 31\", \"RFPTM_MOD_PRM31\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"Modify Parameter 32\", \"RFPTM_MOD_PRM32\", 0, 0, 127, INTEGER1x7),\n}\n\nlocal RC = -- Rhythm Set Common\n{\n Node:new(0x0000, \"Rhythm Name\", \"RFRC_NAME\", 0, 32, 127, ByteSize12),\n Node:new(0x000C, \"Rhythm Level\", \"RFRC_LEVEL\", 127, 0, 127, INTEGER1x7),\n}\n\nlocal RF = -- Rhythm Set Common MFX\n{\n Node:new(0x0000, \"MFX Type\", \"RFRF_MFX_TYPE\", 0, 0, 67, INTEGER1x7, \"mfx\"),\n Node:new(0x0001, \"MFX Dry Send Level\", \"RFRF_MFX_DRY_SEND\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"MFX Chorus Send Level\", \"RFRF_MFX_CHO_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"MFX Reverb Send Level\", \"RFRF_MFX_REV_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"MFX Control 1 Source\", \"RFRF_MFX_CTRL1_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0006, \"MFX Control 1 Sens\", \"RFRF_MFX_CTRL1_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0007, \"MFX Control 2 Source\", \"RFRF_MFX_CTRL2_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0008, \"MFX Control 2 Sens\", \"RFRF_MFX_CTRL2_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0009, \"MFX Control 3 Source\", \"RFRF_MFX_CTRL3_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000A, \"MFX Control 3 Sens\", \"RFRF_MFX_CTRL3_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000B, \"MFX Control 4 Source\", \"RFRF_MFX_CTRL4_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000C, \"MFX Control 4 Sens\", \"RFRF_MFX_CTRL4_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000D, \"MFX Control Assign 1\", \"RFRF_MFX_CTRL_ASGN1\", 0, 0, 16, INTEGER1x5, \"mfx\", 0),\n Node:new(0x000E, \"MFX Control Assign 2\", \"RFRF_MFX_CTRL_ASGN2\", 0, 0, 16, INTEGER1x5, \"mfx\", 1),\n Node:new(0x000F, \"MFX Control Assign 3\", \"RFRF_MFX_CTRL_ASGN3\", 0, 0, 16, INTEGER1x5, \"mfx\", 2),\n Node:new(0x0010, \"MFX Control Assign 4\", \"RFRF_MFX_CTRL_ASGN4\", 0, 0, 16, INTEGER1x5, \"mfx\", 3),\n Node:new(0x0011, \"MFX Parameter 1 \", \"RFRF_MFX_PRM1\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 4),\n Node:new(0x0015, \"MFX Parameter 2 \", \"RFRF_MFX_PRM2\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 5),\n Node:new(0x0019, \"MFX Parameter 3 \", \"RFRF_MFX_PRM3\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 6),\n Node:new(0x001D, \"MFX Parameter 4 \", \"RFRF_MFX_PRM4\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 7),\n Node:new(0x0021, \"MFX Parameter 5 \", \"RFRF_MFX_PRM5\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 8),\n Node:new(0x0025, \"MFX Parameter 6 \", \"RFRF_MFX_PRM6\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 9),\n Node:new(0x0029, \"MFX Parameter 7 \", \"RFRF_MFX_PRM7\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 10),\n Node:new(0x002D, \"MFX Parameter 8 \", \"RFRF_MFX_PRM8\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 11),\n Node:new(0x0031, \"MFX Parameter 9 \", \"RFRF_MFX_PRM9\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 12),\n Node:new(0x0035, \"MFX Parameter 10\", \"RFRF_MFX_PRM10\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 13),\n Node:new(0x0039, \"MFX Parameter 11\", \"RFRF_MFX_PRM11\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 14),\n Node:new(0x003D, \"MFX Parameter 12\", \"RFRF_MFX_PRM12\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 15),\n Node:new(0x0041, \"MFX Parameter 13\", \"RFRF_MFX_PRM13\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 16),\n Node:new(0x0045, \"MFX Parameter 14\", \"RFRF_MFX_PRM14\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 17),\n Node:new(0x0049, \"MFX Parameter 15\", \"RFRF_MFX_PRM15\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 18),\n Node:new(0x004D, \"MFX Parameter 16\", \"RFRF_MFX_PRM16\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 19),\n Node:new(0x0051, \"MFX Parameter 17\", \"RFRF_MFX_PRM17\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 20),\n Node:new(0x0055, \"MFX Parameter 18\", \"RFRF_MFX_PRM18\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 21),\n Node:new(0x0059, \"MFX Parameter 19\", \"RFRF_MFX_PRM19\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 22),\n Node:new(0x005D, \"MFX Parameter 20\", \"RFRF_MFX_PRM20\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 23),\n Node:new(0x0061, \"MFX Parameter 21\", \"RFRF_MFX_PRM21\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 24),\n Node:new(0x0065, \"MFX Parameter 22\", \"RFRF_MFX_PRM22\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 25),\n Node:new(0x0069, \"MFX Parameter 23\", \"RFRF_MFX_PRM23\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 26),\n Node:new(0x006D, \"MFX Parameter 24\", \"RFRF_MFX_PRM24\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 27),\n Node:new(0x0071, \"MFX Parameter 25\", \"RFRF_MFX_PRM25\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 28),\n Node:new(0x0075, \"MFX Parameter 26\", \"RFRF_MFX_PRM26\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 29),\n Node:new(0x0079, \"MFX Parameter 27\", \"RFRF_MFX_PRM27\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 30),\n Node:new(0x007D, \"MFX Parameter 28\", \"RFRF_MFX_PRM28\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 31),\n Node:new(0x0101, \"MFX Parameter 29\", \"RFRF_MFX_PRM29\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 32),\n Node:new(0x0105, \"MFX Parameter 30\", \"RFRF_MFX_PRM30\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 33),\n Node:new(0x0109, \"MFX Parameter 31\", \"RFRF_MFX_PRM31\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 34),\n Node:new(0x010D, \"MFX Parameter 32\", \"RFRF_MFX_PRM32\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 35),\n}\n\nlocal RCQ = -- Rhythm Set Common Comp/EQ\n{\n Node:new(0x0000, \"Comp1 Switch\", \"RFRCQ_COMP1_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0001, \"Comp1 Attack Time\", \"RFRCQ_COMP1_ATTACK\", 9, 0, 31, INTEGER1x5),\n Node:new(0x0002, \"Comp1 Release Time\", \"RFRCQ_COMP1_RELEASE\", 9, 0, 23, INTEGER1x5),\n Node:new(0x0003, \"Comp1 Threshold\", \"RFRCQ_COMP1_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0004, \"Comp1 Ratio\", \"RFRCQ_COMP1_RATIO\", 3, 0, 19, INTEGER1x5),\n Node:new(0x0005, \"Comp1 Output Gain\", \"RFRCQ_COMP1_POSTGAIN\", 6, 0, 24, INTEGER1x5),\n Node:new(0x0006, \"EQ1 Switch\", \"RFRCQ_EQ1_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0007, \"EQ1 Low Freq\", \"RFRCQ_EQ1_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0008, \"EQ1 Low Gain\", \"RFRCQ_EQ1_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0009, \"EQ1 Mid Freq\", \"RFRCQ_EQ1_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x000A, \"EQ1 Mid Gain\", \"RFRCQ_EQ1_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x000B, \"EQ1 Mid Q\", \"RFRCQ_EQ1_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x000C, \"EQ1 High Freq\", \"RFRCQ_EQ1_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x000D, \"EQ1 High Gain\", \"RFRCQ_EQ1_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x000E, \"Comp2 Switch\", \"RFRCQ_COMP2_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x000F, \"Comp2 Attack Time\", \"RFRCQ_COMP2_ATTACK\", 9, 0, 31, INTEGER1x5),\n Node:new(0x0010, \"Comp2 Release Time\", \"RFRCQ_COMP2_RELEASE\", 9, 0, 23, INTEGER1x5),\n Node:new(0x0011, \"Comp2 Threshold\", \"RFRCQ_COMP2_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Comp2 Ratio\", \"RFRCQ_COMP2_RATIO\", 3, 0, 19, INTEGER1x5),\n Node:new(0x0013, \"Comp2 Output Gain\", \"RFRCQ_COMP2_POSTGAIN\", 6, 0, 24, INTEGER1x5),\n Node:new(0x0014, \"EQ2 Switch\", \"RFRCQ_EQ2_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0015, \"EQ2 Low Freq\", \"RFRCQ_EQ2_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0016, \"EQ2 Low Gain\", \"RFRCQ_EQ2_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0017, \"EQ2 Mid Freq\", \"RFRCQ_EQ2_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0018, \"EQ2 Mid Gain\", \"RFRCQ_EQ2_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0019, \"EQ2 Mid Q\", \"RFRCQ_EQ2_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x001A, \"EQ2 High Freq\", \"RFRCQ_EQ2_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x001B, \"EQ2 High Gain\", \"RFRCQ_EQ2_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x001C, \"Comp3 Switch\", \"RFRCQ_COMP3_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001D, \"Comp3 Attack Time\", \"RFRCQ_COMP3_ATTACK\", 9, 0, 31, INTEGER1x5),\n Node:new(0x001E, \"Comp3 Release Time\", \"RFRCQ_COMP3_RELEASE\", 9, 0, 23, INTEGER1x5),\n Node:new(0x001F, \"Comp3 Threshold\", \"RFRCQ_COMP3_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"Comp3 Ratio\", \"RFRCQ_COMP3_RATIO\", 3, 0, 19, INTEGER1x5),\n Node:new(0x0021, \"Comp3 Output Gain\", \"RFRCQ_COMP3_POSTGAIN\", 6, 0, 24, INTEGER1x5),\n Node:new(0x0022, \"EQ3 Switch\", \"RFRCQ_EQ3_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0023, \"EQ3 Low Freq\", \"RFRCQ_EQ3_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0024, \"EQ3 Low Gain\", \"RFRCQ_EQ3_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0025, \"EQ3 Mid Freq\", \"RFRCQ_EQ3_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0026, \"EQ3 Mid Gain\", \"RFRCQ_EQ3_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0027, \"EQ3 Mid Q\", \"RFRCQ_EQ3_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0028, \"EQ3 High Freq\", \"RFRCQ_EQ3_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0029, \"EQ3 High Gain\", \"RFRCQ_EQ3_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x002A, \"Comp4 Switch\", \"RFRCQ_COMP4_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002B, \"Comp4 Attack Time\", \"RFRCQ_COMP4_ATTACK\", 9, 0, 31, INTEGER1x5),\n Node:new(0x002C, \"Comp4 Release Time\", \"RFRCQ_COMP4_RELEASE\", 9, 0, 23, INTEGER1x5),\n Node:new(0x002D, \"Comp4 Threshold\", \"RFRCQ_COMP4_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x002E, \"Comp4 Ratio\", \"RFRCQ_COMP4_RATIO\", 3, 0, 19, INTEGER1x5),\n Node:new(0x002F, \"Comp4 Output Gain\", \"RFRCQ_COMP4_POSTGAIN\", 6, 0, 24, INTEGER1x5),\n Node:new(0x0030, \"EQ4 Switch\", \"RFRCQ_EQ4_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0031, \"EQ4 Low Freq\", \"RFRCQ_EQ4_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0032, \"EQ4 Low Gain\", \"RFRCQ_EQ4_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0033, \"EQ4 Mid Freq\", \"RFRCQ_EQ4_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0034, \"EQ4 Mid Gain\", \"RFRCQ_EQ4_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0035, \"EQ4 Mid Q\", \"RFRCQ_EQ4_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0036, \"EQ4 High Freq\", \"RFRCQ_EQ4_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0037, \"EQ4 High Gain\", \"RFRCQ_EQ4_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0038, \"Comp5 Switch\", \"RFRCQ_COMP5_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0039, \"Comp5 Attack Time\", \"RFRCQ_COMP5_ATTACK\", 9, 0, 31, INTEGER1x5),\n Node:new(0x003A, \"Comp5 Release Time\", \"RFRCQ_COMP5_RELEASE\", 9, 0, 23, INTEGER1x5),\n Node:new(0x003B, \"Comp5 Threshold\", \"RFRCQ_COMP5_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x003C, \"Comp5 Ratio\", \"RFRCQ_COMP5_RATIO\", 3, 0, 19, INTEGER1x5),\n Node:new(0x003D, \"Comp5 Output Gain\", \"RFRCQ_COMP5_POSTGAIN\", 6, 0, 24, INTEGER1x5),\n Node:new(0x003E, \"EQ5 Switch\", \"RFRCQ_EQ5_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x003F, \"EQ5 Low Freq\", \"RFRCQ_EQ5_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0040, \"EQ5 Low Gain\", \"RFRCQ_EQ5_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0041, \"EQ5 Mid Freq\", \"RFRCQ_EQ5_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0042, \"EQ5 Mid Gain\", \"RFRCQ_EQ5_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0043, \"EQ5 Mid Q\", \"RFRCQ_EQ5_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0044, \"EQ5 High Freq\", \"RFRCQ_EQ5_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0045, \"EQ5 High Gain\", \"RFRCQ_EQ5_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0046, \"Comp6 Switch\", \"RFRCQ_COMP6_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0047, \"Comp6 Attack Time\", \"RFRCQ_COMP6_ATTACK\", 9, 0, 31, INTEGER1x5),\n Node:new(0x0048, \"Comp6 Release Time\", \"RFRCQ_COMP6_RELEASE\", 9, 0, 23, INTEGER1x5),\n Node:new(0x0049, \"Comp6 Threshold\", \"RFRCQ_COMP6_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x004A, \"Comp6 Ratio\", \"RFRCQ_COMP6_RATIO\", 3, 0, 19, INTEGER1x5),\n Node:new(0x004B, \"Comp6 Output Gain\", \"RFRCQ_COMP6_POSTGAIN\", 6, 0, 24, INTEGER1x5),\n Node:new(0x004C, \"EQ6 Switch\", \"RFRCQ_EQ6_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x004D, \"EQ6 Low Freq\", \"RFRCQ_EQ6_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x004E, \"EQ6 Low Gain\", \"RFRCQ_EQ6_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x004F, \"EQ6 Mid Freq\", \"RFRCQ_EQ6_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0050, \"EQ6 Mid Gain\", \"RFRCQ_EQ6_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0051, \"EQ6 Mid Q\", \"RFRCQ_EQ6_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0052, \"EQ6 High Freq\", \"RFRCQ_EQ6_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0053, \"EQ6 High Gain\", \"RFRCQ_EQ6_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n}\n\nlocal RT = -- Rhythm Set Partial\n{\n Node:new(0x0000, \"Partial Name\", \"RFRT_NAME\", 0, 32, 127, ByteSize12),\n Node:new(0x000C, \"Assign Type\", \"RFRT_ASGN_TYPE\", 0, 0, 1, INTEGER1x1),\n Node:new(0x000D, \"Mute Group\", \"RFRT_MUTE_GRP\", 0, 0, 31, INTEGER1x5),\n Node:new(0x000E, \"Partial Level\", \"RFRT_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x000F, \"Partial Coarse Tune\", \"RFRT_SRC_KEY\", 60, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"Partial Fine Tune\", \"RFRT_PIT_FINE\", 64, 14, 114, INTEGER1x7),\n Node:new(0x0011, \"Partial Random Pitch Depth\", \"RFRT_PIT_RND\", 0, 0, 30, INTEGER1x5),\n Node:new(0x0012, \"Partial Pan\", \"RFRT_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"Partial Random Pan Depth\", \"RFRT_PAN_RND\", 0, 0, 63, INTEGER1x6),\n Node:new(0x0014, \"Partial Alternate Pan Depth\", \"RFRT_PAN_ALT\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0015, \"Partial Env Mode\", \"RFRT_ENV_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0016, \"Partial Dry Send Level\", \"RFRT_DRY_SEND\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"Partial Chorus Send Level\", \"RFRT_CHO_SEND_A\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Partial Reverb Send Level\", \"RFRT_REV_SEND_A\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"Partial Output Assign\", \"RFRT_OUT_ASGN\", 0, 0, 6, INTEGER1x4),\n Node:new(0x001C, \"Partial Pitch Bend Range\", \"RFRT_BEND_RANGE\", 2, 0, 48, INTEGER1x6),\n Node:new(0x001D, \"Partial Receive Expression\", \"RFRT_RX_EXPR\", 1, 0, 1, INTEGER1x1),\n Node:new(0x001E, \"Partial Receive Hold-1\", \"RFRT_RX_HOLD\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0020, \"WMT Velocity Control\", \"RFRT_WMT_VELO_CTRL\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0021, \"WMT1 Wave Switch\", \"RFRT_WMT1_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0022, \"WMT1 Wave Group Type\", \"RFRT_WMT1_WAV_GTYPE\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0023, \"WMT1 Wave Group ID\", \"RFRT_WMT1_WAV_GID\", 1, 0, 16384, INTEGER4x4),\n Node:new(0x0027, \"WMT1 Wave Number L (Mono)\", \"RFRT_WMT1_WAV_NUML\", 0, 0, 16384, INTEGER4x4),\n Node:new(0x002B, \"WMT1 Wave Number R\", \"RFRT_WMT1_WAV_NUMR\", 0, 0, 16384, INTEGER4x4),\n Node:new(0x002F, \"WMT1 Wave Gain\", \"RFRT_WMT1_WAV_GAIN\", 1, 0, 3, INTEGER1x2),\n Node:new(0x0030, \"WMT1 Wave FXM Switch\", \"RFRT_WMT1_FXM_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0031, \"WMT1 Wave FXM Color\", \"RFRT_WMT1_FXM_COLOR\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0032, \"WMT1 Wave FXM Depth\", \"RFRT_WMT1_FXM_DEPTH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0033, \"WMT1 Wave Tempo Sync\", \"RFRT_WMT1_TEMPO_SYNC\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0034, \"WMT1 Wave Coarse Tune\", \"RFRT_WMT1_PIT_CRS\", 64, 16, 112, INTEGER1x7),\n Node:new(0x0035, \"WMT1 Wave Fine Tune\", \"RFRT_WMT1_PIT_FINE\", 64, 14, 114, INTEGER1x7),\n Node:new(0x0036, \"WMT1 Wave Pan\", \"RFRT_WMT1_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0037, \"WMT1 Wave Random Pan Switch\", \"RFRT_WMT1_PAN_RND\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0038, \"WMT1 Wave Alternate Pan Switch\", \"RFRT_WMT1_PAN_ALT\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0039, \"WMT1 Wave Level\", \"RFRT_WMT1_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x003A, \"WMT1 Velocity Range Lower\", \"RFRT_WMT1_VRANGE_LO\", 1, 1, 127, INTEGER1x7),\n Node:new(0x003B, \"WMT1 Velocity Range Upper\", \"RFRT_WMT1_VRANGE_UP\", 127, 1, 127, INTEGER1x7),\n Node:new(0x003C, \"WMT1 Velocity Fade Width Lower\", \"RFRT_WMT1_VFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x003D, \"WMT1 Velocity Fade Width Upper\", \"RFRT_WMT1_VFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x003E, \"WMT2 Wave Switch\", \"RFRT_WMT2_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x003F, \"WMT2 Wave Group Type\", \"RFRT_WMT2_WAV_GTYPE\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0040, \"WMT2 Wave Group ID\", \"RFRT_WMT2_WAV_GID\", 1, 0, 16384, INTEGER4x4),\n Node:new(0x0044, \"WMT2 Wave Number L (Mono)\", \"RFRT_WMT2_WAV_NUML\", 0, 0, 16384, INTEGER4x4),\n Node:new(0x0048, \"WMT2 Wave Number R\", \"RFRT_WMT2_WAV_NUMR\", 0, 0, 16384, INTEGER4x4),\n Node:new(0x004C, \"WMT2 Wave Gain\", \"RFRT_WMT2_WAV_GAIN\", 1, 0, 3, INTEGER1x2),\n Node:new(0x004D, \"WMT2 Wave FXM Switch\", \"RFRT_WMT2_FXM_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x004E, \"WMT2 Wave FXM Color\", \"RFRT_WMT2_FXM_COLOR\", 0, 0, 3, INTEGER1x2),\n Node:new(0x004F, \"WMT2 Wave FXM Depth\", \"RFRT_WMT2_FXM_DEPTH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0050, \"WMT2 Wave Tempo Sync\", \"RFRT_WMT2_TEMPO_SYNC\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0051, \"WMT2 Wave Coarse Tune\", \"RFRT_WMT2_PIT_CRS\", 64, 16, 112, INTEGER1x7),\n Node:new(0x0052, \"WMT2 Wave Fine Tune\", \"RFRT_WMT2_PIT_FINE\", 64, 14, 114, INTEGER1x7),\n Node:new(0x0053, \"WMT2 Wave Pan\", \"RFRT_WMT2_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0054, \"WMT2 Wave Random Pan Switch\", \"RFRT_WMT2_PAN_RND\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0055, \"WMT2 Wave Alternate Pan Switch\", \"RFRT_WMT2_PAN_ALT\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0056, \"WMT2 Wave Level\", \"RFRT_WMT2_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0057, \"WMT2 Velocity Range Lower\", \"RFRT_WMT2_VRANGE_LO\", 1, 1, 127, INTEGER1x7),\n Node:new(0x0058, \"WMT2 Velocity Range Upper\", \"RFRT_WMT2_VRANGE_UP\", 127, 1, 127, INTEGER1x7),\n Node:new(0x0059, \"WMT2 Velocity Fade Width Lower\", \"RFRT_WMT2_VFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x005A, \"WMT2 Velocity Fade Width Upper\", \"RFRT_WMT2_VFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x005B, \"WMT3 Wave Switch\", \"RFRT_WMT3_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x005C, \"WMT3 Wave Group Type\", \"RFRT_WMT3_WAV_GTYPE\", 0, 0, 3, INTEGER1x2),\n Node:new(0x005D, \"WMT3 Wave Group ID\", \"RFRT_WMT3_WAV_GID\", 1, 0, 16384, INTEGER4x4),\n Node:new(0x0061, \"WMT3 Wave Number L (Mono)\", \"RFRT_WMT3_WAV_NUML\", 0, 0, 16384, INTEGER4x4),\n Node:new(0x0065, \"WMT3 Wave Number R\", \"RFRT_WMT3_WAV_NUMR\", 0, 0, 16384, INTEGER4x4),\n Node:new(0x0069, \"WMT3 Wave Gain\", \"RFRT_WMT3_WAV_GAIN\", 1, 0, 3, INTEGER1x2),\n Node:new(0x006A, \"WMT3 Wave FXM Switch\", \"RFRT_WMT3_FXM_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x006B, \"WMT3 Wave FXM Color\", \"RFRT_WMT3_FXM_COLOR\", 0, 0, 3, INTEGER1x2),\n Node:new(0x006C, \"WMT3 Wave FXM Depth\", \"RFRT_WMT3_FXM_DEPTH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x006D, \"WMT3 Wave Tempo Sync\", \"RFRT_WMT3_TEMPO_SYNC\", 0, 0, 1, INTEGER1x1),\n Node:new(0x006E, \"WMT3 Wave Coarse Tune\", \"RFRT_WMT3_PIT_CRS\", 64, 16, 112, INTEGER1x7),\n Node:new(0x006F, \"WMT3 Wave Fine Tune\", \"RFRT_WMT3_PIT_FINE\", 64, 14, 114, INTEGER1x7),\n Node:new(0x0070, \"WMT3 Wave Pan\", \"RFRT_WMT3_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0071, \"WMT3 Wave Random Pan Switch\", \"RFRT_WMT3_PAN_RND\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0072, \"WMT3 Wave Alternate Pan Switch\", \"RFRT_WMT3_PAN_ALT\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0073, \"WMT3 Wave Level\", \"RFRT_WMT3_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0074, \"WMT3 Velocity Range Lower\", \"RFRT_WMT3_VRANGE_LO\", 1, 1, 127, INTEGER1x7),\n Node:new(0x0075, \"WMT3 Velocity Range Upper\", \"RFRT_WMT3_VRANGE_UP\", 127, 1, 127, INTEGER1x7),\n Node:new(0x0076, \"WMT3 Velocity Fade Width Lower\", \"RFRT_WMT3_VFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0077, \"WMT3 Velocity Fade Width Upper\", \"RFRT_WMT3_VFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0078, \"WMT4 Wave Switch\", \"RFRT_WMT4_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0079, \"WMT4 Wave Group Type\", \"RFRT_WMT4_WAV_GTYPE\", 0, 0, 3, INTEGER1x2),\n Node:new(0x007A, \"WMT4 Wave Group ID\", \"RFRT_WMT4_WAV_GID\", 1, 0, 16384, INTEGER4x4),\n Node:new(0x007E, \"WMT4 Wave Number L (Mono)\", \"RFRT_WMT4_WAV_NUML\", 0, 0, 16384, INTEGER4x4),\n Node:new(0x0102, \"WMT4 Wave Number R\", \"RFRT_WMT4_WAV_NUMR\", 0, 0, 16384, INTEGER4x4),\n Node:new(0x0106, \"WMT4 Wave Gain\", \"RFRT_WMT4_WAV_GAIN\", 1, 0, 3, INTEGER1x2),\n Node:new(0x0107, \"WMT4 Wave FXM Switch\", \"RFRT_WMT4_FXM_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0108, \"WMT4 Wave FXM Color\", \"RFRT_WMT4_FXM_COLOR\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0109, \"WMT4 Wave FXM Depth\", \"RFRT_WMT4_FXM_DEPTH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x010A, \"WMT4 Wave Tempo Sync\", \"RFRT_WMT4_TEMPO_SYNC\", 0, 0, 1, INTEGER1x1),\n Node:new(0x010B, \"WMT4 Wave Coarse Tune\", \"RFRT_WMT4_PIT_CRS\", 64, 16, 112, INTEGER1x7),\n Node:new(0x010C, \"WMT4 Wave Fine Tune\", \"RFRT_WMT4_PIT_FINE\", 64, 14, 114, INTEGER1x7),\n Node:new(0x010D, \"WMT4 Wave Pan\", \"RFRT_WMT4_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x010E, \"WMT4 Wave Random Pan Switch\", \"RFRT_WMT4_PAN_RND\", 1, 0, 1, INTEGER1x1),\n Node:new(0x010F, \"WMT4 Wave Alternate Pan Switch\", \"RFRT_WMT4_PAN_ALT\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0110, \"WMT4 Wave Level\", \"RFRT_WMT4_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0111, \"WMT4 Velocity Range Lower\", \"RFRT_WMT4_VRANGE_LO\", 1, 1, 127, INTEGER1x7),\n Node:new(0x0112, \"WMT4 Velocity Range Upper\", \"RFRT_WMT4_VRANGE_UP\", 127, 1, 127, INTEGER1x7),\n Node:new(0x0113, \"WMT4 Velocity Fade Width Lower\", \"RFRT_WMT4_VFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0114, \"WMT4 Velocity Fade Width Upper\", \"RFRT_WMT4_VFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0115, \"Pitch Env Depth\", \"RFRT_PENV_DEPTH\", 64, 52, 76, INTEGER1x5),\n Node:new(0x0116, \"Pitch Env Velocity Sens\", \"RFRT_PENV_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0117, \"Pitch Env Time 1 Velocity Sens\", \"RFRT_PENV_T1_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0118, \"Pitch Env Time 4 Velocity Sens\", \"RFRT_PENV_T4_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0119, \"Pitch Env Time 1\", \"RFRT_PENV_T1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x011A, \"Pitch Env Time 2\", \"RFRT_PENV_T2\", 40, 0, 127, INTEGER1x7),\n Node:new(0x011B, \"Pitch Env Time 3\", \"RFRT_PENV_T3\", 80, 0, 127, INTEGER1x7),\n Node:new(0x011C, \"Pitch Env Time 4\", \"RFRT_PENV_T4\", 40, 0, 127, INTEGER1x7),\n Node:new(0x011D, \"Pitch Env Level 0\", \"RFRT_PENV_L0\", 64, 1, 127, INTEGER1x7),\n Node:new(0x011E, \"Pitch Env Level 1\", \"RFRT_PENV_L1\", 34, 1, 127, INTEGER1x7),\n Node:new(0x011F, \"Pitch Env Level 2\", \"RFRT_PENV_L2\", 94, 1, 127, INTEGER1x7),\n Node:new(0x0120, \"Pitch Env Level 3\", \"RFRT_PENV_L3\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0121, \"Pitch Env Level 4\", \"RFRT_PENV_L4\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0122, \"TVF Filter Type\", \"RFRT_FILTER_TYPE\", 1, 0, 6, INTEGER1x3),\n Node:new(0x0123, \"TVF Cutoff Frequency\", \"RFRT_CUTOFF\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0124, \"TVF Cutoff Velocity Curve\", \"RFRT_CUTOFF_VCRV\", 1, 0, 7, INTEGER1x3),\n Node:new(0x0125, \"TVF Cutoff Velocity Sens\", \"RFRT_CUTOFF_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0126, \"TVF Resonance\", \"RFRT_RESO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0127, \"TVF Resonance Velocity Sens\", \"RFRT_RESO_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0128, \"TVF Env Depth\", \"RFRT_FENV_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0129, \"TVF Env Velocity Curve Type\", \"RFRT_FENV_VCRV\", 1, 0, 7, INTEGER1x3),\n Node:new(0x012A, \"TVF Env Velocity Sens\", \"RFRT_FENV_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x012B, \"TVF Env Time 1 Velocity Sens\", \"RFRT_FENV_T1_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x012C, \"TVF Env Time 4 Velocity Sens\", \"RFRT_FENV_T4_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x012D, \"TVF Env Time 1\", \"RFRT_FENV_T1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x012E, \"TVF Env Time 2\", \"RFRT_FENV_T2\", 10, 0, 127, INTEGER1x7),\n Node:new(0x012F, \"TVF Env Time 3\", \"RFRT_FENV_T3\", 10, 0, 127, INTEGER1x7),\n Node:new(0x0130, \"TVF Env Time 4\", \"RFRT_FENV_T4\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0131, \"TVF Env Level 0\", \"RFRT_FENV_L0\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0132, \"TVF Env Level 1\", \"RFRT_FENV_L1\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0133, \"TVF Env Level 2\", \"RFRT_FENV_L2\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0134, \"TVF Env Level 3\", \"RFRT_FENV_L3\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0135, \"TVF Env Level 4\", \"RFRT_FENV_L4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0136, \"TVA Level Velocity Curve\", \"RFRT_LEVEL_VCRV\", 1, 0, 7, INTEGER1x3),\n Node:new(0x0137, \"TVA Level Velocity Sens\", \"RFRT_LEVEL_VSENS\", 96, 1, 127, INTEGER1x7),\n Node:new(0x0138, \"TVA Env Time 1 Velocity Sens\", \"RFRT_AENV_T1_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0139, \"TVA Env Time 4 Velocity Sens\", \"RFRT_AENV_T4_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x013A, \"TVA Env Time 1\", \"RFRT_AENV_T1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x013B, \"TVA Env Time 2\", \"RFRT_AENV_T2\", 10, 0, 127, INTEGER1x7),\n Node:new(0x013C, \"TVA Env Time 3\", \"RFRT_AENV_T3\", 10, 0, 127, INTEGER1x7),\n Node:new(0x013D, \"TVA Env Time 4\", \"RFRT_AENV_T4\", 10, 0, 127, INTEGER1x7),\n Node:new(0x013E, \"TVA Env Level 1\", \"RFRT_AENV_L1\", 127, 0, 127, INTEGER1x7),\n Node:new(0x013F, \"TVA Env Level 2\", \"RFRT_AENV_L2\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0140, \"TVA Env Level 3\", \"RFRT_AENV_L3\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0141, \"One Shot Mode\", \"RFRT_ONE_SHOT\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0142, \"Relative Level\", \"RFRT_LEVEL_MOD\", 64, 0, 127, INTEGER1x7),\n}\n\nlocal RLGT4 = -- Rhythm Set Controller\n{\n Node:new(0x0000, \"Beam Switch\", \"RFRLGT4_BEAM_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0001, \"Beam Assign\", \"RFRLGT4_BEAM_ASGN\", 2, 0, 106, INTEGER1x7),\n Node:new(0x0002, \"Beam Polarity\", \"RFRLGT4_BEAM_POL\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0003, \"Beam Range Lower\", \"RFRLGT4_BEAM_RANGE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0004, \"Beam Range Upper\", \"RFRLGT4_BEAM_RANGE_UP\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"Knob 1 Assign\", \"RFRLGT4_KNOB1_ASGN\", 0, 0, 100, INTEGER1x7),\n Node:new(0x0006, \"Knob 2 Assign\", \"RFRLGT4_KNOB2_ASGN\", 0, 0, 100, INTEGER1x7),\n Node:new(0x0007, \"Knob 3 Assign\", \"RFRLGT4_KNOB3_ASGN\", 0, 0, 100, INTEGER1x7),\n Node:new(0x0008, \"Knob 4 Assign\", \"RFRLGT4_KNOB4_ASGN\", 0, 0, 100, INTEGER1x7),\n Node:new(0x0009, \"Switch 1 Assign\", \"RFRLGT4_SW1_ASGN\", 0, 0, 104, INTEGER1x7),\n Node:new(0x000A, \"Switch 1 Assign Mode\", \"RFRLGT4_SW1_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x000B, \"Switch 2 Assign\", \"RFRLGT4_SW2_ASGN\", 0, 0, 104, INTEGER1x7),\n Node:new(0x000C, \"Switch 2 Assign Mode\", \"RFRLGT4_SW2_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x000D, \"Switch 3 Assign\", \"RFRLGT4_SW3_ASGN\", 0, 0, 104, INTEGER1x7),\n Node:new(0x000E, \"Switch 3 Assign Mode\", \"RFRLGT4_SW3_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x000F, \"Switch 4 Assign\", \"RFRLGT4_SW4_ASGN\", 0, 0, 104, INTEGER1x7),\n Node:new(0x0010, \"Switch 4 Assign Mode\", \"RFRLGT4_SW4_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0011, \"Pattern Switch\", \"RFRLGT4_PTN_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0012, \"Pattern Hold\", \"RFRLGT4_PTN_HOLD\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0013, \"Pattern Style\", \"RFRLGT4_PTN_STYLE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Pattern Accent Rate\", \"RFRLGT4_PTN_ACCT_RATE\", 100, 0, 100, INTEGER1x7),\n Node:new(0x0015, \"Pattern Shuffle Rate\", \"RFRLGT4_PTN_SHFL_RATE\", 50, 0, 100, INTEGER1x7),\n Node:new(0x0016, \"Pattern Shuffle Resolution\", \"RFRLGT4_PTN_SHFL_RESO\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0017, \"Pattern Keyboard Velocity\", \"RFRLGT4_PTN_VELO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"Pattern Note Assign\", \"RFRLGT4_PTN_NOTE_ASGN\", 60, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"Pattern Key Trigger\", \"RFRLGT4_PTN_KEY_TRIG\", 0, 0, 1, INTEGER1x1),\n}\n\nlocal RC2 = -- Rhythm Set Common 2\n{\n Node:new(0x0000, \"(reserve)\", \"RESERVE_DUMMY\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"Phrase Number\", \"RFRC2_PHRASE\", 0, 0, 255, INTEGER2x4),\n Node:new(0x0012, \"Keyword Flag 1 \", \"RFRC2_KEYWORD1\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0013, \"Keyword Flag 2 \", \"RFRC2_KEYWORD2\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0014, \"Keyword Flag 3 \", \"RFRC2_KEYWORD3\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0015, \"Keyword Flag 4 \", \"RFRC2_KEYWORD4\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0016, \"Keyword Flag 5 \", \"RFRC2_KEYWORD5\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0017, \"Keyword Flag 6 \", \"RFRC2_KEYWORD6\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0018, \"Keyword Flag 7 \", \"RFRC2_KEYWORD7\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0019, \"Keyword Flag 8 \", \"RFRC2_KEYWORD8\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001A, \"Keyword Flag 9 \", \"RFRC2_KEYWORD9\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001B, \"Keyword Flag 10\", \"RFRC2_KEYWORD10\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001C, \"Keyword Flag 11\", \"RFRC2_KEYWORD11\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001D, \"Keyword Flag 12\", \"RFRC2_KEYWORD12\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001E, \"Keyword Flag 13\", \"RFRC2_KEYWORD13\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001F, \"Keyword Flag 14\", \"RFRC2_KEYWORD14\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0020, \"Keyword Flag 15\", \"RFRC2_KEYWORD15\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0021, \"Keyword Flag 16\", \"RFRC2_KEYWORD16\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0022, \"Keyword Flag 17\", \"RFRC2_KEYWORD17\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0023, \"Keyword Flag 18\", \"RFRC2_KEYWORD18\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0024, \"Keyword Flag 19\", \"RFRC2_KEYWORD19\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0025, \"Keyword Flag 20\", \"RFRC2_KEYWORD20\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0026, \"Keyword Flag 21\", \"RFRC2_KEYWORD21\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0027, \"Keyword Flag 22\", \"RFRC2_KEYWORD22\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0028, \"Keyword Flag 23\", \"RFRC2_KEYWORD23\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0029, \"Keyword Flag 24\", \"RFRC2_KEYWORD24\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002A, \"Keyword Flag 25\", \"RFRC2_KEYWORD25\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002B, \"Keyword Flag 26\", \"RFRC2_KEYWORD26\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002C, \"Keyword Flag 27\", \"RFRC2_KEYWORD27\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002D, \"Keyword Flag 28\", \"RFRC2_KEYWORD28\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002E, \"Keyword Flag 29\", \"RFRC2_KEYWORD29\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002F, \"Keyword Flag 30\", \"RFRC2_KEYWORD30\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0030, \"Keyword Flag 31\", \"RFRC2_KEYWORD31\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0031, \"TFX Switch\", \"RFRC2_TFX_SW\", 1, 0, 1, INTEGER1x1),\n}\n\nlocal RTM = -- Rhythm Set Tone Modify\n{\n Node:new(0x0001, \"Modify Parameter 1 \", \"RFRTM_MOD_PRM1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"Modify Parameter 2 \", \"RFRTM_MOD_PRM2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"Modify Parameter 3 \", \"RFRTM_MOD_PRM3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0004, \"Modify Parameter 4 \", \"RFRTM_MOD_PRM4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"Modify Parameter 5 \", \"RFRTM_MOD_PRM5\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0006, \"Modify Parameter 6 \", \"RFRTM_MOD_PRM6\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0007, \"Modify Parameter 7 \", \"RFRTM_MOD_PRM7\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"Modify Parameter 8 \", \"RFRTM_MOD_PRM8\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0009, \"Modify Parameter 9 \", \"RFRTM_MOD_PRM9\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000A, \"Modify Parameter 10\", \"RFRTM_MOD_PRM10\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000B, \"Modify Parameter 11\", \"RFRTM_MOD_PRM11\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000C, \"Modify Parameter 12\", \"RFRTM_MOD_PRM12\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000D, \"Modify Parameter 13\", \"RFRTM_MOD_PRM13\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000E, \"Modify Parameter 14\", \"RFRTM_MOD_PRM14\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000F, \"Modify Parameter 15\", \"RFRTM_MOD_PRM15\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"Modify Parameter 16\", \"RFRTM_MOD_PRM16\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0011, \"Modify Parameter 17\", \"RFRTM_MOD_PRM17\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Modify Parameter 18\", \"RFRTM_MOD_PRM18\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"Modify Parameter 19\", \"RFRTM_MOD_PRM19\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Modify Parameter 20\", \"RFRTM_MOD_PRM20\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0015, \"Modify Parameter 21\", \"RFRTM_MOD_PRM21\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0016, \"Modify Parameter 22\", \"RFRTM_MOD_PRM22\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0017, \"Modify Parameter 23\", \"RFRTM_MOD_PRM23\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"Modify Parameter 24\", \"RFRTM_MOD_PRM24\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"Modify Parameter 25\", \"RFRTM_MOD_PRM25\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Modify Parameter 26\", \"RFRTM_MOD_PRM26\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"Modify Parameter 27\", \"RFRTM_MOD_PRM27\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001C, \"Modify Parameter 28\", \"RFRTM_MOD_PRM28\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001D, \"Modify Parameter 29\", \"RFRTM_MOD_PRM29\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001E, \"Modify Parameter 30\", \"RFRTM_MOD_PRM30\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001F, \"Modify Parameter 31\", \"RFRTM_MOD_PRM31\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"Modify Parameter 32\", \"RFRTM_MOD_PRM32\", 0, 0, 127, INTEGER1x7),\n}\n\nlocal SHPC = -- SN Synth Tone Common\n{\n Node:new(0x0000, \"Tone Name\", \"SHPC_NAME\", 0, 32, 127, ByteSize12),\n Node:new(0x000C, \"Tone Level\", \"SHPC_LEVEL\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Portamento Switch\", \"SHPC_PORT_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0013, \"Portamento Time\", \"SHPC_PORT_TIME\", 20, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Mono Switch\", \"SHPC_MONO_SW\", 0, 0, 1, INTEGER1x2),\n Node:new(0x0015, \"Octave Shift\", \"SHPC_OCTAVE\", 64, 61, 67, INTEGER1x3),\n Node:new(0x0016, \"Pitch Bend Range Up\", \"SHPC_BEND_RANGE_UP\", 2, 0, 24, INTEGER1x5),\n Node:new(0x0017, \"Pitch Bend Range Down\", \"SHPC_BEND_RANGE_DW\", 2, 0, 24, INTEGER1x5),\n Node:new(0x0019, \"Partial1 Switch\", \"SHPC_TONE1_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001A, \"Partial1 Select\", \"SHPC_TONE1_SEL\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001B, \"Partial2 Switch\", \"SHPC_TONE2_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001C, \"Partial2 Select\", \"SHPC_TONE2_SEL\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001D, \"Partial3 Switch\", \"SHPC_TONE3_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001E, \"Partial3 Select\", \"SHPC_TONE3_SEL\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001F, \"RING Switch\", \"SHPC_SYNC_RING_SEL\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0020, \"TFX Switch\", \"SHPC_TFX_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x002E, \"Unison Switch\", \"SHPC_UNISON\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0031, \"Portamento Mode\", \"SHPC_PORT_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0032, \"Legato Switch\", \"SHPC_LEGATO_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0034, \"Analog Feel\", \"SHPC_ANALOG_FEEL\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0035, \"Wave Shape\", \"SHPC_CROSS_MOD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0036, \"Tone Category\", \"SHPC_CATE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0037, \"Phrase Number\", \"SHPC_PHRASE\", 0, 0, 65535, INTEGER4x4),\n Node:new(0x003B, \"Phrase Octave Shift\", \"SHPC_PHRASE_OCT\", 64, 61, 67, INTEGER1x3),\n Node:new(0x003C, \"Unison Size\", \"SHPC_UNISON_SIZE\", 3, 0, 3, INTEGER1x2),\n}\n\nlocal SHPF = -- SN Synth Tone Common MFX\n{\n Node:new(0x0000, \"MFX Type\", \"SHPF_MFX_TYPE\", 0, 0, 67, INTEGER1x7, \"mfx\"),\n Node:new(0x0001, \"MFX Dry Send Level\", \"SHPF_MFX_DRY_SEND\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"MFX Chorus Send Level\", \"SHPF_MFX_CHO_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"MFX Reverb Send Level\", \"SHPF_MFX_REV_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"MFX Control 1 Source\", \"SHPF_MFX_CTRL1_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0006, \"MFX Control 1 Sens\", \"SHPF_MFX_CTRL1_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0007, \"MFX Control 2 Source\", \"SHPF_MFX_CTRL2_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0008, \"MFX Control 2 Sens\", \"SHPF_MFX_CTRL2_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0009, \"MFX Control 3 Source\", \"SHPF_MFX_CTRL3_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000A, \"MFX Control 3 Sens\", \"SHPF_MFX_CTRL3_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000B, \"MFX Control 4 Source\", \"SHPF_MFX_CTRL4_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000C, \"MFX Control 4 Sens\", \"SHPF_MFX_CTRL4_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000D, \"MFX Control Assign 1\", \"SHPF_MFX_CTRL_ASGN1\", 0, 0, 16, INTEGER1x5, \"mfx\", 0),\n Node:new(0x000E, \"MFX Control Assign 2\", \"SHPF_MFX_CTRL_ASGN2\", 0, 0, 16, INTEGER1x5, \"mfx\", 1),\n Node:new(0x000F, \"MFX Control Assign 3\", \"SHPF_MFX_CTRL_ASGN3\", 0, 0, 16, INTEGER1x5, \"mfx\", 2),\n Node:new(0x0010, \"MFX Control Assign 4\", \"SHPF_MFX_CTRL_ASGN4\", 0, 0, 16, INTEGER1x5, \"mfx\", 3),\n Node:new(0x0011, \"MFX Parameter 1 \", \"SHPF_MFX_PRM1\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 4),\n Node:new(0x0015, \"MFX Parameter 2 \", \"SHPF_MFX_PRM2\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 5),\n Node:new(0x0019, \"MFX Parameter 3 \", \"SHPF_MFX_PRM3\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 6),\n Node:new(0x001D, \"MFX Parameter 4 \", \"SHPF_MFX_PRM4\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 7),\n Node:new(0x0021, \"MFX Parameter 5 \", \"SHPF_MFX_PRM5\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 8),\n Node:new(0x0025, \"MFX Parameter 6 \", \"SHPF_MFX_PRM6\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 9),\n Node:new(0x0029, \"MFX Parameter 7 \", \"SHPF_MFX_PRM7\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 10),\n Node:new(0x002D, \"MFX Parameter 8 \", \"SHPF_MFX_PRM8\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 11),\n Node:new(0x0031, \"MFX Parameter 9 \", \"SHPF_MFX_PRM9\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 12),\n Node:new(0x0035, \"MFX Parameter 10\", \"SHPF_MFX_PRM10\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 13),\n Node:new(0x0039, \"MFX Parameter 11\", \"SHPF_MFX_PRM11\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 14),\n Node:new(0x003D, \"MFX Parameter 12\", \"SHPF_MFX_PRM12\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 15),\n Node:new(0x0041, \"MFX Parameter 13\", \"SHPF_MFX_PRM13\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 16),\n Node:new(0x0045, \"MFX Parameter 14\", \"SHPF_MFX_PRM14\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 17),\n Node:new(0x0049, \"MFX Parameter 15\", \"SHPF_MFX_PRM15\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 18),\n Node:new(0x004D, \"MFX Parameter 16\", \"SHPF_MFX_PRM16\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 19),\n Node:new(0x0051, \"MFX Parameter 17\", \"SHPF_MFX_PRM17\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 20),\n Node:new(0x0055, \"MFX Parameter 18\", \"SHPF_MFX_PRM18\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 21),\n Node:new(0x0059, \"MFX Parameter 19\", \"SHPF_MFX_PRM19\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 22),\n Node:new(0x005D, \"MFX Parameter 20\", \"SHPF_MFX_PRM20\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 23),\n Node:new(0x0061, \"MFX Parameter 21\", \"SHPF_MFX_PRM21\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 24),\n Node:new(0x0065, \"MFX Parameter 22\", \"SHPF_MFX_PRM22\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 25),\n Node:new(0x0069, \"MFX Parameter 23\", \"SHPF_MFX_PRM23\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 26),\n Node:new(0x006D, \"MFX Parameter 24\", \"SHPF_MFX_PRM24\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 27),\n Node:new(0x0071, \"MFX Parameter 25\", \"SHPF_MFX_PRM25\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 28),\n Node:new(0x0075, \"MFX Parameter 26\", \"SHPF_MFX_PRM26\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 29),\n Node:new(0x0079, \"MFX Parameter 27\", \"SHPF_MFX_PRM27\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 30),\n Node:new(0x007D, \"MFX Parameter 28\", \"SHPF_MFX_PRM28\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 31),\n Node:new(0x0101, \"MFX Parameter 29\", \"SHPF_MFX_PRM29\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 32),\n Node:new(0x0105, \"MFX Parameter 30\", \"SHPF_MFX_PRM30\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 33),\n Node:new(0x0109, \"MFX Parameter 31\", \"SHPF_MFX_PRM31\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 34),\n Node:new(0x010D, \"MFX Parameter 32\", \"SHPF_MFX_PRM32\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 35),\n}\n\nlocal SHPTM = -- SN Synth Tone Modify\n{\n Node:new(0x0000, \"(reserve)\", \"RESERVE_DUMMY\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0001, \"Attack Time Interval Sens \", \"SHPTM_MOD_PRM1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"Release Time Interval Sens \", \"SHPTM_MOD_PRM2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"Portamento Time Interval Sens \", \"SHPTM_MOD_PRM3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0004, \"Envelope Loop Mode \", \"SHPTM_MOD_PRM4\", 0, 0, 2, INTEGER1x7),\n Node:new(0x0005, \"Envelope Loop Sync Note \", \"SHPTM_MOD_PRM5\", 0, 0, 21, INTEGER1x7),\n Node:new(0x0006, \"Chromatic Portamento \", \"SHPTM_MOD_PRM6\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0007, \"Modify Parameter 7 \", \"SHPTM_MOD_PRM7\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"Modify Parameter 8 \", \"SHPTM_MOD_PRM8\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0009, \"Modify Parameter 9 \", \"SHPTM_MOD_PRM9\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000A, \"Modify Parameter 10\", \"SHPTM_MOD_PRM10\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000B, \"Modify Parameter 11\", \"SHPTM_MOD_PRM11\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000C, \"Modify Parameter 12\", \"SHPTM_MOD_PRM12\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000D, \"Modify Parameter 13\", \"SHPTM_MOD_PRM13\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000E, \"Modify Parameter 14\", \"SHPTM_MOD_PRM14\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000F, \"Modify Parameter 15\", \"SHPTM_MOD_PRM15\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"Modify Parameter 16\", \"SHPTM_MOD_PRM16\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0011, \"Modify Parameter 17\", \"SHPTM_MOD_PRM17\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Modify Parameter 18\", \"SHPTM_MOD_PRM18\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"Modify Parameter 19\", \"SHPTM_MOD_PRM19\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Modify Parameter 20\", \"SHPTM_MOD_PRM20\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0015, \"Modify Parameter 21\", \"SHPTM_MOD_PRM21\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0016, \"Modify Parameter 22\", \"SHPTM_MOD_PRM22\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0017, \"Modify Parameter 23\", \"SHPTM_MOD_PRM23\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"Modify Parameter 24\", \"SHPTM_MOD_PRM24\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"Modify Parameter 25\", \"SHPTM_MOD_PRM25\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Modify Parameter 26\", \"SHPTM_MOD_PRM26\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"Modify Parameter 27\", \"SHPTM_MOD_PRM27\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001C, \"Modify Parameter 28\", \"SHPTM_MOD_PRM28\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001D, \"Modify Parameter 29\", \"SHPTM_MOD_PRM29\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001E, \"Modify Parameter 30\", \"SHPTM_MOD_PRM30\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001F, \"Modify Parameter 31\", \"SHPTM_MOD_PRM31\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"Modify Parameter 32\", \"SHPTM_MOD_PRM32\", 0, 0, 127, INTEGER1x7),\n}\n\nlocal SHPT = -- SN Synth Tone Partial\n{\n Node:new(0x0000, \"OSC Wave\", \"SHPT_OSC_WAVE\", 0, 0, 7, INTEGER1x3),\n Node:new(0x0001, \"OSC Wave Variation\", \"SHPT_OSC_WAVE_VAR\", 0, 0, 2, INTEGER1x6),\n Node:new(0x0003, \"OSC Pitch\", \"SHPT_OSC_PIT_CRS\", 64, 40, 88, INTEGER1x6),\n Node:new(0x0004, \"OSC Detune\", \"SHPT_OSC_PIT_DETUNE\", 64, 14, 114, INTEGER1x7),\n Node:new(0x0005, \"OSC Pulse Width Mod Depth\", \"SHPT_OSC_PWM\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0006, \"OSC Pulse Width\", \"SHPT_OSC_PW\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0007, \"OSC Pitch Env Attack Time\", \"SHPT_OSC_PENV_ATK\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"OSC Pitch Env Decay \", \"SHPT_OSC_PENV_DCY\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0009, \"OSC Pitch Env Depth \", \"SHPT_OSC_PENV_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000A, \"FILTER Mode\", \"SHPT_FILT_MODE\", 1, 0, 7, INTEGER1x3),\n Node:new(0x000B, \"FILTER Slope\", \"SHPT_FILT_SLOPE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x000C, \"FILTER Cutoff\", \"SHPT_FILT_FREQ\", 127, 0, 127, INTEGER1x7),\n Node:new(0x000D, \"FILTER Cutoff Keyfollow\", \"SHPT_FILT_FREQ_KF\", 64, 54, 74, INTEGER1x6),\n Node:new(0x000E, \"FILTER Env Velocity Sens\", \"SHPT_FILT_ENV_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000F, \"FILTER Resonance\", \"SHPT_FILT_RESO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"FILTER Env Attack Time\", \"SHPT_FILT_ENV_ATK\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0011, \"FILTER Env Decay Time \", \"SHPT_FILT_ENV_DCY\", 36, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"FILTER Env Sustain Level\", \"SHPT_FILT_ENV_SUS\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"FILTER Env Release Time\", \"SHPT_FILT_ENV_REL\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"FILTER Env Depth \", \"SHPT_FILT_ENV_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0015, \"AMP Level\", \"SHPT_AMP_LEVEL\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0016, \"AMP Level Velocity Sens\", \"SHPT_AMP_LEVEL_VSENS\", 83, 1, 127, INTEGER1x7),\n Node:new(0x0017, \"AMP Env Attack Time\", \"SHPT_AMP_ENV_ATK\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"AMP Env Decay Time \", \"SHPT_AMP_ENV_DCY\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"AMP Env Sustain Level\", \"SHPT_AMP_ENV_SUS\", 127, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"AMP Env Release Time\", \"SHPT_AMP_ENV_REL\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"AMP Pan\", \"SHPT_AMP_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001C, \"LFO Shape\", \"SHPT_LFO_SHAPE\", 0, 0, 5, INTEGER1x3),\n Node:new(0x001D, \"LFO Rate\", \"SHPT_LFO_RATE\", 81, 0, 127, INTEGER1x7),\n Node:new(0x001E, \"LFO Tempo Sync Switch\", \"SHPT_LFO_SYNC_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001F, \"LFO Tempo Sync Note\", \"SHPT_LFO_SYNC_NOTE\", 17, 0, 19, INTEGER1x5),\n Node:new(0x0020, \"LFO Fade Time\", \"SHPT_LFO_FADE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0021, \"LFO Key Trigger\", \"SHPT_LFO_KEY_TRIG\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0022, \"LFO Pitch Depth\", \"SHPT_LFO_PITCH_MOD\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0023, \"LFO Filter Depth\", \"SHPT_LFO_FILTER_MOD\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0024, \"LFO Amp Depth\", \"SHPT_LFO_AMP_MOD\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0025, \"LFO Pan Depth\", \"SHPT_LFO_PAN_MOD\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0026, \"Modulation LFO Shape\", \"SHPT_MLFO_SHAPE\", 0, 0, 5, INTEGER1x3),\n Node:new(0x0027, \"Modulation LFO Rate\", \"SHPT_MLFO_RATE\", 88, 0, 127, INTEGER1x7),\n Node:new(0x0028, \"Modulation LFO Tempo Sync Switch\", \"SHPT_MLFO_SYNC_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0029, \"Modulation LFO Tempo Sync Note\", \"SHPT_MLFO_SYNC_NOTE\", 17, 0, 19, INTEGER1x5),\n Node:new(0x002A, \"OSC Pulse Width Shift\", \"SHPT_OSC_PW_SHIFT\", 127, 0, 127, INTEGER1x7),\n Node:new(0x002C, \"Modulation LFO Pitch Depth\", \"SHPT_MLFO_PITCH_MOD\", 80, 1, 127, INTEGER1x7),\n Node:new(0x002D, \"Modulation LFO Filter Depth\", \"SHPT_MLFO_FILTER_MOD\", 64, 1, 127, INTEGER1x7),\n Node:new(0x002E, \"Modulation LFO Amp Depth\", \"SHPT_MLFO_AMP_MOD\", 64, 1, 127, INTEGER1x7),\n Node:new(0x002F, \"Modulation LFO Pan Depth\", \"SHPT_MLFO_PAN_MOD\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0030, \"Cutoff Aftertouch Sens\", \"SHPT_AFT_CUTOFF_SENS\", 73, 1, 127, INTEGER1x7),\n Node:new(0x0031, \"Level Aftertouch Sens\", \"SHPT_AFT_LEVEL_SENS\", 74, 1, 127, INTEGER1x7),\n Node:new(0x0034, \"Wave Gain\", \"SHPT_WAV_GAIN\", 1, 0, 3, INTEGER1x2),\n Node:new(0x0035, \"Wave Number\", \"SHPT_WAV_NUML\", 45, 1, 450, INTEGER4x4),\n Node:new(0x0039, \"HPF Cutoff\", \"SHPT_HPF_CUTOFF\", 0, 0, 127, INTEGER1x7),\n Node:new(0x003A, \"Super Saw Detune\", \"SHPT_SSAW_DETUNE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x003B, \"Modulation LFO Rate Control\", \"SHPT_MLFO_RATE_MOD\", 82, 1, 127, INTEGER1x7),\n Node:new(0x003C, \"AMP Level Keyfollow\", \"SHPT_BIAS_LEVEL\", 64, 54, 74, INTEGER1x5),\n}\n\nlocal SNTC = -- SN Tone Common\n{\n Node:new(0x0000, \"Tone Name\", \"SNTC_NAME\", 0, 32, 127, ByteSize16),\n Node:new(0x0010, \"Tone Level\", \"SNTC_TONE_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0011, \"Mono/Poly\", \"SNTC_MONO_POLY\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0012, \"Portamento Time Offset\", \"SNTC_PORT_TIME\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"Cutoff Offset\", \"SNTC_CUTOFF_OFST\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Resonance Offset\", \"SNTC_RESO_OFST\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0015, \"Attack Time Offset\", \"SNTC_ATK_OFST\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0016, \"Release Time Offset\", \"SNTC_REL_OFST\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0017, \"Vibrato Rate\", \"SNTC_VIB_RATE\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"Vibrato Depth\", \"SNTC_VIB_DEPTH\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"Vibrato Delay\", \"SNTC_VIB_DELAY\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Octave Shift\", \"SNTC_OCTAVE\", 64, 61, 67, INTEGER1x3),\n Node:new(0x001B, \"Category\", \"SNTC_CATE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001C, \"Phrase Number\", \"SNTC_PHRASE\", 0, 0, 255, INTEGER2x4),\n Node:new(0x001E, \"Phrase Octave Shift\", \"SNTC_PHRASE_OCT\", 64, 61, 67, INTEGER1x3),\n Node:new(0x001F, \"TFX Switch\", \"SNTC_TFX_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0020, \"Inst Variation\", \"SNTC_INST_BS_LSB\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0021, \"Inst Number\", \"SNTC_INST_BS_PC\", 0, 0, 127, INTEGER1x7, \"mod\", 0),\n Node:new(0x0022, \"Modify Parameter 1 \", \"SNTC_MOD_PRM1\", 0, 0, 127, INTEGER1x7, \"mod\", 0),\n Node:new(0x0023, \"Modify Parameter 2 \", \"SNTC_MOD_PRM2\", 0, 0, 127, INTEGER1x7, \"mod\", 1),\n Node:new(0x0024, \"Modify Parameter 3 \", \"SNTC_MOD_PRM3\", 0, 0, 127, INTEGER1x7, \"mod\", 2),\n Node:new(0x0025, \"Modify Parameter 4 \", \"SNTC_MOD_PRM4\", 0, 0, 127, INTEGER1x7, \"mod\", 3),\n Node:new(0x0026, \"Modify Parameter 5 \", \"SNTC_MOD_PRM5\", 0, 0, 127, INTEGER1x7, \"mod\", 4),\n Node:new(0x0027, \"Modify Parameter 6 \", \"SNTC_MOD_PRM6\", 0, 0, 127, INTEGER1x7, \"mod\", 5),\n Node:new(0x0028, \"Modify Parameter 7 \", \"SNTC_MOD_PRM7\", 0, 0, 127, INTEGER1x7, \"mod\", 6),\n Node:new(0x0029, \"Modify Parameter 8 \", \"SNTC_MOD_PRM8\", 0, 0, 127, INTEGER1x7, \"mod\", 7),\n Node:new(0x002A, \"Modify Parameter 9 \", \"SNTC_MOD_PRM9\", 0, 0, 127, INTEGER1x7, \"mod\", 8),\n Node:new(0x002B, \"Modify Parameter 10\", \"SNTC_MOD_PRM10\", 0, 0, 127, INTEGER1x7, \"mod\", 9),\n Node:new(0x002C, \"Modify Parameter 11\", \"SNTC_MOD_PRM11\", 0, 0, 127, INTEGER1x7, \"mod\", 10),\n Node:new(0x002D, \"Modify Parameter 12\", \"SNTC_MOD_PRM12\", 0, 0, 127, INTEGER1x7, \"mod\", 11),\n Node:new(0x002E, \"Modify Parameter 13\", \"SNTC_MOD_PRM13\", 0, 0, 127, INTEGER1x7, \"mod\", 12),\n Node:new(0x002F, \"Modify Parameter 14\", \"SNTC_MOD_PRM14\", 0, 0, 127, INTEGER1x7, \"mod\", 13),\n Node:new(0x0030, \"Modify Parameter 15\", \"SNTC_MOD_PRM15\", 0, 0, 127, INTEGER1x7, \"mod\", 14),\n Node:new(0x0031, \"Modify Parameter 16\", \"SNTC_MOD_PRM16\", 0, 0, 127, INTEGER1x7, \"mod\", 15),\n Node:new(0x0032, \"Modify Parameter 17\", \"SNTC_MOD_PRM17\", 0, 0, 127, INTEGER1x7, \"mod\", 16),\n Node:new(0x0033, \"Modify Parameter 18\", \"SNTC_MOD_PRM18\", 0, 0, 127, INTEGER1x7, \"mod\", 17),\n Node:new(0x0034, \"Modify Parameter 19\", \"SNTC_MOD_PRM19\", 0, 0, 127, INTEGER1x7, \"mod\", 18),\n Node:new(0x0035, \"Modify Parameter 20\", \"SNTC_MOD_PRM20\", 0, 0, 127, INTEGER1x7, \"mod\", 19),\n Node:new(0x0036, \"Modify Parameter 21\", \"SNTC_MOD_PRM21\", 0, 0, 127, INTEGER1x7, \"mod\", 20),\n Node:new(0x0037, \"Modify Parameter 22\", \"SNTC_MOD_PRM22\", 0, 0, 127, INTEGER1x7, \"mod\", 21),\n Node:new(0x0038, \"Modify Parameter 23\", \"SNTC_MOD_PRM23\", 0, 0, 127, INTEGER1x7, \"mod\", 22),\n Node:new(0x0039, \"Modify Parameter 24\", \"SNTC_MOD_PRM24\", 0, 0, 127, INTEGER1x7, \"mod\", 23),\n Node:new(0x003A, \"Modify Parameter 25\", \"SNTC_MOD_PRM25\", 0, 0, 127, INTEGER1x7, \"mod\", 24),\n Node:new(0x003B, \"Modify Parameter 26\", \"SNTC_MOD_PRM26\", 0, 0, 127, INTEGER1x7, \"mod\", 25),\n Node:new(0x003C, \"Modify Parameter 27\", \"SNTC_MOD_PRM27\", 0, 0, 127, INTEGER1x7, \"mod\", 26),\n Node:new(0x003D, \"Modify Parameter 28\", \"SNTC_MOD_PRM28\", 0, 0, 127, INTEGER1x7, \"mod\", 27),\n Node:new(0x003E, \"Modify Parameter 29\", \"SNTC_MOD_PRM29\", 0, 0, 127, INTEGER1x7, \"mod\", 28),\n Node:new(0x003F, \"Modify Parameter 30\", \"SNTC_MOD_PRM30\", 0, 0, 127, INTEGER1x7, \"mod\", 29),\n Node:new(0x0040, \"Modify Parameter 31\", \"SNTC_MOD_PRM31\", 0, 0, 127, INTEGER1x7, \"mod\", 30),\n Node:new(0x0041, \"Modify Parameter 32\", \"SNTC_MOD_PRM32\", 0, 0, 127, INTEGER1x7, \"mod\", 31),\n}\n\nlocal SNTF = -- SN Tone MFX\n{\n Node:new(0x0000, \"MFX Type\", \"SNTF_MFX_TYPE\", 0, 0, 67, INTEGER1x7, \"mfx\"),\n Node:new(0x0001, \"MFX Dry Send Level\", \"SNTF_MFX_DRY_SEND\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"MFX Chorus Send Level\", \"SNTF_MFX_CHO_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"MFX Reverb Send Level\", \"SNTF_MFX_REV_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"MFX Control 1 Source\", \"SNTF_MFX_CTRL1_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0006, \"MFX Control 1 Sens\", \"SNTF_MFX_CTRL1_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0007, \"MFX Control 2 Source\", \"SNTF_MFX_CTRL2_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0008, \"MFX Control 2 Sens\", \"SNTF_MFX_CTRL2_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0009, \"MFX Control 3 Source\", \"SNTF_MFX_CTRL3_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000A, \"MFX Control 3 Sens\", \"SNTF_MFX_CTRL3_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000B, \"MFX Control 4 Source\", \"SNTF_MFX_CTRL4_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000C, \"MFX Control 4 Sens\", \"SNTF_MFX_CTRL4_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000D, \"MFX Control Assign 1\", \"SNTF_MFX_CTRL_ASGN1\", 0, 0, 16, INTEGER1x5, \"mfx\", 0),\n Node:new(0x000E, \"MFX Control Assign 2\", \"SNTF_MFX_CTRL_ASGN2\", 0, 0, 16, INTEGER1x5, \"mfx\", 1),\n Node:new(0x000F, \"MFX Control Assign 3\", \"SNTF_MFX_CTRL_ASGN3\", 0, 0, 16, INTEGER1x5, \"mfx\", 2),\n Node:new(0x0010, \"MFX Control Assign 4\", \"SNTF_MFX_CTRL_ASGN4\", 0, 0, 16, INTEGER1x5, \"mfx\", 3),\n Node:new(0x0011, \"MFX Parameter 1 \", \"SNTF_MFX_PRM1\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 4),\n Node:new(0x0015, \"MFX Parameter 2 \", \"SNTF_MFX_PRM2\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 5),\n Node:new(0x0019, \"MFX Parameter 3 \", \"SNTF_MFX_PRM3\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 6),\n Node:new(0x001D, \"MFX Parameter 4 \", \"SNTF_MFX_PRM4\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 7),\n Node:new(0x0021, \"MFX Parameter 5 \", \"SNTF_MFX_PRM5\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 8),\n Node:new(0x0025, \"MFX Parameter 6 \", \"SNTF_MFX_PRM6\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 9),\n Node:new(0x0029, \"MFX Parameter 7 \", \"SNTF_MFX_PRM7\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 10),\n Node:new(0x002D, \"MFX Parameter 8 \", \"SNTF_MFX_PRM8\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 11),\n Node:new(0x0031, \"MFX Parameter 9 \", \"SNTF_MFX_PRM9\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 12),\n Node:new(0x0035, \"MFX Parameter 10\", \"SNTF_MFX_PRM10\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 13),\n Node:new(0x0039, \"MFX Parameter 11\", \"SNTF_MFX_PRM11\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 14),\n Node:new(0x003D, \"MFX Parameter 12\", \"SNTF_MFX_PRM12\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 15),\n Node:new(0x0041, \"MFX Parameter 13\", \"SNTF_MFX_PRM13\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 16),\n Node:new(0x0045, \"MFX Parameter 14\", \"SNTF_MFX_PRM14\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 17),\n Node:new(0x0049, \"MFX Parameter 15\", \"SNTF_MFX_PRM15\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 18),\n Node:new(0x004D, \"MFX Parameter 16\", \"SNTF_MFX_PRM16\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 19),\n Node:new(0x0051, \"MFX Parameter 17\", \"SNTF_MFX_PRM17\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 20),\n Node:new(0x0055, \"MFX Parameter 18\", \"SNTF_MFX_PRM18\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 21),\n Node:new(0x0059, \"MFX Parameter 19\", \"SNTF_MFX_PRM19\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 22),\n Node:new(0x005D, \"MFX Parameter 20\", \"SNTF_MFX_PRM20\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 23),\n Node:new(0x0061, \"MFX Parameter 21\", \"SNTF_MFX_PRM21\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 24),\n Node:new(0x0065, \"MFX Parameter 22\", \"SNTF_MFX_PRM22\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 25),\n Node:new(0x0069, \"MFX Parameter 23\", \"SNTF_MFX_PRM23\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 26),\n Node:new(0x006D, \"MFX Parameter 24\", \"SNTF_MFX_PRM24\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 27),\n Node:new(0x0071, \"MFX Parameter 25\", \"SNTF_MFX_PRM25\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 28),\n Node:new(0x0075, \"MFX Parameter 26\", \"SNTF_MFX_PRM26\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 29),\n Node:new(0x0079, \"MFX Parameter 27\", \"SNTF_MFX_PRM27\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 30),\n Node:new(0x007D, \"MFX Parameter 28\", \"SNTF_MFX_PRM28\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 31),\n Node:new(0x0101, \"MFX Parameter 29\", \"SNTF_MFX_PRM29\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 32),\n Node:new(0x0105, \"MFX Parameter 30\", \"SNTF_MFX_PRM30\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 33),\n Node:new(0x0109, \"MFX Parameter 31\", \"SNTF_MFX_PRM31\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 34),\n Node:new(0x010D, \"MFX Parameter 32\", \"SNTF_MFX_PRM32\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 35),\n}\n\nlocal KC = -- Kit Common\n{\n Node:new(0x0000, \"Kit Name\", \"SDKC_NAME\", 0, 32, 127, ByteSize16),\n Node:new(0x0010, \"Kit Level\", \"SDKC_LEVEL\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0011, \"Ambience Level\", \"SDKC_AMBIENCE_LEVEL\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Phrase Number\", \"SDKC_PHRASE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"TFX Switch\", \"SDKC_TFX_SW\", 1, 0, 1, INTEGER1x1),\n}\n\nlocal KF = -- Kit MFX\n{\n Node:new(0x0000, \"MFX Type\", \"SDKF_MFX_TYPE\", 0, 0, 67, INTEGER1x7, \"mfx\"),\n Node:new(0x0001, \"MFX Dry Send Level\", \"SDKF_MFX_DRY_SEND\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"MFX Chorus Send Level\", \"SDKF_MFX_CHO_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"MFX Reverb Send Level\", \"SDKF_MFX_REV_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"MFX Control 1 Source\", \"SDKF_MFX_CTRL1_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0006, \"MFX Control 1 Sens\", \"SDKF_MFX_CTRL1_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0007, \"MFX Control 2 Source\", \"SDKF_MFX_CTRL2_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0008, \"MFX Control 2 Sens\", \"SDKF_MFX_CTRL2_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0009, \"MFX Control 3 Source\", \"SDKF_MFX_CTRL3_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000A, \"MFX Control 3 Sens\", \"SDKF_MFX_CTRL3_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000B, \"MFX Control 4 Source\", \"SDKF_MFX_CTRL4_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000C, \"MFX Control 4 Sens\", \"SDKF_MFX_CTRL4_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000D, \"MFX Control Assign 1\", \"SDKF_MFX_CTRL_ASGN1\", 0, 0, 16, INTEGER1x5, \"mfx\", 0),\n Node:new(0x000E, \"MFX Control Assign 2\", \"SDKF_MFX_CTRL_ASGN2\", 0, 0, 16, INTEGER1x5, \"mfx\", 1),\n Node:new(0x000F, \"MFX Control Assign 3\", \"SDKF_MFX_CTRL_ASGN3\", 0, 0, 16, INTEGER1x5, \"mfx\", 2),\n Node:new(0x0010, \"MFX Control Assign 4\", \"SDKF_MFX_CTRL_ASGN4\", 0, 0, 16, INTEGER1x5, \"mfx\", 3),\n Node:new(0x0011, \"MFX Parameter 1 \", \"SDKF_MFX_PRM1\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 4),\n Node:new(0x0015, \"MFX Parameter 2 \", \"SDKF_MFX_PRM2\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 5),\n Node:new(0x0019, \"MFX Parameter 3 \", \"SDKF_MFX_PRM3\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 6),\n Node:new(0x001D, \"MFX Parameter 4 \", \"SDKF_MFX_PRM4\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 7),\n Node:new(0x0021, \"MFX Parameter 5 \", \"SDKF_MFX_PRM5\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 8),\n Node:new(0x0025, \"MFX Parameter 6 \", \"SDKF_MFX_PRM6\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 9),\n Node:new(0x0029, \"MFX Parameter 7 \", \"SDKF_MFX_PRM7\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 10),\n Node:new(0x002D, \"MFX Parameter 8 \", \"SDKF_MFX_PRM8\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 11),\n Node:new(0x0031, \"MFX Parameter 9 \", \"SDKF_MFX_PRM9\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 12),\n Node:new(0x0035, \"MFX Parameter 10\", \"SDKF_MFX_PRM10\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 13),\n Node:new(0x0039, \"MFX Parameter 11\", \"SDKF_MFX_PRM11\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 14),\n Node:new(0x003D, \"MFX Parameter 12\", \"SDKF_MFX_PRM12\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 15),\n Node:new(0x0041, \"MFX Parameter 13\", \"SDKF_MFX_PRM13\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 16),\n Node:new(0x0045, \"MFX Parameter 14\", \"SDKF_MFX_PRM14\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 17),\n Node:new(0x0049, \"MFX Parameter 15\", \"SDKF_MFX_PRM15\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 18),\n Node:new(0x004D, \"MFX Parameter 16\", \"SDKF_MFX_PRM16\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 19),\n Node:new(0x0051, \"MFX Parameter 17\", \"SDKF_MFX_PRM17\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 20),\n Node:new(0x0055, \"MFX Parameter 18\", \"SDKF_MFX_PRM18\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 21),\n Node:new(0x0059, \"MFX Parameter 19\", \"SDKF_MFX_PRM19\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 22),\n Node:new(0x005D, \"MFX Parameter 20\", \"SDKF_MFX_PRM20\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 23),\n Node:new(0x0061, \"MFX Parameter 21\", \"SDKF_MFX_PRM21\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 24),\n Node:new(0x0065, \"MFX Parameter 22\", \"SDKF_MFX_PRM22\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 25),\n Node:new(0x0069, \"MFX Parameter 23\", \"SDKF_MFX_PRM23\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 26),\n Node:new(0x006D, \"MFX Parameter 24\", \"SDKF_MFX_PRM24\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 27),\n Node:new(0x0071, \"MFX Parameter 25\", \"SDKF_MFX_PRM25\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 28),\n Node:new(0x0075, \"MFX Parameter 26\", \"SDKF_MFX_PRM26\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 29),\n Node:new(0x0079, \"MFX Parameter 27\", \"SDKF_MFX_PRM27\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 30),\n Node:new(0x007D, \"MFX Parameter 28\", \"SDKF_MFX_PRM28\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 31),\n Node:new(0x0101, \"MFX Parameter 29\", \"SDKF_MFX_PRM29\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 32),\n Node:new(0x0105, \"MFX Parameter 30\", \"SDKF_MFX_PRM30\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 33),\n Node:new(0x0109, \"MFX Parameter 31\", \"SDKF_MFX_PRM31\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 34),\n Node:new(0x010D, \"MFX Parameter 32\", \"SDKF_MFX_PRM32\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 35),\n}\n\nlocal KCQ = -- Kit Common Comp/EQ\n{\n Node:new(0x0000, \"Comp1 Switch\", \"SDKCQ_COMP1_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0001, \"Comp1 Attack Time\", \"SDKCQ_COMP1_ATTACK\", 0, 0, 31, INTEGER1x5),\n Node:new(0x0002, \"Comp1 Release Time\", \"SDKCQ_COMP1_RELEASE\", 0, 0, 23, INTEGER1x5),\n Node:new(0x0003, \"Comp1 Threshold\", \"SDKCQ_COMP1_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0004, \"Comp1 Ratio\", \"SDKCQ_COMP1_RATIO\", 0, 0, 19, INTEGER1x5),\n Node:new(0x0005, \"Comp1 Output Gain\", \"SDKCQ_COMP1_POSTGAIN\", 0, 0, 24, INTEGER1x5),\n Node:new(0x0006, \"EQ1 Switch\", \"SDKCQ_EQ1_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0007, \"EQ1 Low Freq\", \"SDKCQ_EQ1_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0008, \"EQ1 Low Gain\", \"SDKCQ_EQ1_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0009, \"EQ1 Mid Freq\", \"SDKCQ_EQ1_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x000A, \"EQ1 Mid Gain\", \"SDKCQ_EQ1_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x000B, \"EQ1 Mid Q\", \"SDKCQ_EQ1_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x000C, \"EQ1 High Freq\", \"SDKCQ_EQ1_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x000D, \"EQ1 High Gain\", \"SDKCQ_EQ1_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x000E, \"Comp2 Switch\", \"SDKCQ_COMP2_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x000F, \"Comp2 Attack Time\", \"SDKCQ_COMP2_ATTACK\", 0, 0, 31, INTEGER1x5),\n Node:new(0x0010, \"Comp2 Release Time\", \"SDKCQ_COMP2_RELEASE\", 0, 0, 23, INTEGER1x5),\n Node:new(0x0011, \"Comp2 Threshold\", \"SDKCQ_COMP2_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Comp2 Ratio\", \"SDKCQ_COMP2_RATIO\", 0, 0, 19, INTEGER1x5),\n Node:new(0x0013, \"Comp2 Output Gain\", \"SDKCQ_COMP2_POSTGAIN\", 0, 0, 24, INTEGER1x5),\n Node:new(0x0014, \"EQ2 Switch\", \"SDKCQ_EQ2_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0015, \"EQ2 Low Freq\", \"SDKCQ_EQ2_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0016, \"EQ2 Low Gain\", \"SDKCQ_EQ2_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0017, \"EQ2 Mid Freq\", \"SDKCQ_EQ2_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0018, \"EQ2 Mid Gain\", \"SDKCQ_EQ2_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0019, \"EQ2 Mid Q\", \"SDKCQ_EQ2_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x001A, \"EQ2 High Freq\", \"SDKCQ_EQ2_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x001B, \"EQ2 High Gain\", \"SDKCQ_EQ2_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x001C, \"Comp3 Switch\", \"SDKCQ_COMP3_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001D, \"Comp3 Attack Time\", \"SDKCQ_COMP3_ATTACK\", 0, 0, 31, INTEGER1x5),\n Node:new(0x001E, \"Comp3 Release Time\", \"SDKCQ_COMP3_RELEASE\", 0, 0, 23, INTEGER1x5),\n Node:new(0x001F, \"Comp3 Threshold\", \"SDKCQ_COMP3_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"Comp3 Ratio\", \"SDKCQ_COMP3_RATIO\", 0, 0, 19, INTEGER1x5),\n Node:new(0x0021, \"Comp3 Output Gain\", \"SDKCQ_COMP3_POSTGAIN\", 0, 0, 24, INTEGER1x5),\n Node:new(0x0022, \"EQ3 Switch\", \"SDKCQ_EQ3_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0023, \"EQ3 Low Freq\", \"SDKCQ_EQ3_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0024, \"EQ3 Low Gain\", \"SDKCQ_EQ3_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0025, \"EQ3 Mid Freq\", \"SDKCQ_EQ3_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0026, \"EQ3 Mid Gain\", \"SDKCQ_EQ3_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0027, \"EQ3 Mid Q\", \"SDKCQ_EQ3_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0028, \"EQ3 High Freq\", \"SDKCQ_EQ3_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0029, \"EQ3 High Gain\", \"SDKCQ_EQ3_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x002A, \"Comp4 Switch\", \"SDKCQ_COMP4_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002B, \"Comp4 Attack Time\", \"SDKCQ_COMP4_ATTACK\", 0, 0, 31, INTEGER1x5),\n Node:new(0x002C, \"Comp4 Release Time\", \"SDKCQ_COMP4_RELEASE\", 0, 0, 23, INTEGER1x5),\n Node:new(0x002D, \"Comp4 Threshold\", \"SDKCQ_COMP4_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x002E, \"Comp4 Ratio\", \"SDKCQ_COMP4_RATIO\", 0, 0, 19, INTEGER1x5),\n Node:new(0x002F, \"Comp4 Output Gain\", \"SDKCQ_COMP4_POSTGAIN\", 0, 0, 24, INTEGER1x5),\n Node:new(0x0030, \"EQ4 Switch\", \"SDKCQ_EQ4_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0031, \"EQ4 Low Freq\", \"SDKCQ_EQ4_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0032, \"EQ4 Low Gain\", \"SDKCQ_EQ4_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0033, \"EQ4 Mid Freq\", \"SDKCQ_EQ4_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0034, \"EQ4 Mid Gain\", \"SDKCQ_EQ4_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0035, \"EQ4 Mid Q\", \"SDKCQ_EQ4_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0036, \"EQ4 High Freq\", \"SDKCQ_EQ4_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0037, \"EQ4 High Gain\", \"SDKCQ_EQ4_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0038, \"Comp5 Switch\", \"SDKCQ_COMP5_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0039, \"Comp5 Attack Time\", \"SDKCQ_COMP5_ATTACK\", 0, 0, 31, INTEGER1x5),\n Node:new(0x003A, \"Comp5 Release Time\", \"SDKCQ_COMP5_RELEASE\", 0, 0, 23, INTEGER1x5),\n Node:new(0x003B, \"Comp5 Threshold\", \"SDKCQ_COMP5_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x003C, \"Comp5 Ratio\", \"SDKCQ_COMP5_RATIO\", 0, 0, 19, INTEGER1x5),\n Node:new(0x003D, \"Comp5 Output Gain\", \"SDKCQ_COMP5_POSTGAIN\", 0, 0, 24, INTEGER1x5),\n Node:new(0x003E, \"EQ5 Switch\", \"SDKCQ_EQ5_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x003F, \"EQ5 Low Freq\", \"SDKCQ_EQ5_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0040, \"EQ5 Low Gain\", \"SDKCQ_EQ5_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0041, \"EQ5 Mid Freq\", \"SDKCQ_EQ5_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0042, \"EQ5 Mid Gain\", \"SDKCQ_EQ5_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0043, \"EQ5 Mid Q\", \"SDKCQ_EQ5_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0044, \"EQ5 High Freq\", \"SDKCQ_EQ5_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0045, \"EQ5 High Gain\", \"SDKCQ_EQ5_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0046, \"Comp6 Switch\", \"SDKCQ_COMP6_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0047, \"Comp6 Attack Time\", \"SDKCQ_COMP6_ATTACK\", 0, 0, 31, INTEGER1x5),\n Node:new(0x0048, \"Comp6 Release Time\", \"SDKCQ_COMP6_RELEASE\", 0, 0, 23, INTEGER1x5),\n Node:new(0x0049, \"Comp6 Threshold\", \"SDKCQ_COMP6_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x004A, \"Comp6 Ratio\", \"SDKCQ_COMP6_RATIO\", 0, 0, 19, INTEGER1x5),\n Node:new(0x004B, \"Comp6 Output Gain\", \"SDKCQ_COMP6_POSTGAIN\", 0, 0, 24, INTEGER1x5),\n Node:new(0x004C, \"EQ6 Switch\", \"SDKCQ_EQ6_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x004D, \"EQ6 Low Freq\", \"SDKCQ_EQ6_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x004E, \"EQ6 Low Gain\", \"SDKCQ_EQ6_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x004F, \"EQ6 Mid Freq\", \"SDKCQ_EQ6_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0050, \"EQ6 Mid Gain\", \"SDKCQ_EQ6_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0051, \"EQ6 Mid Q\", \"SDKCQ_EQ6_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0052, \"EQ6 High Freq\", \"SDKCQ_EQ6_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0053, \"EQ6 High Gain\", \"SDKCQ_EQ6_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n}\n\nlocal KN = -- Kit Note\n{\n Node:new(0x0000, \"Inst Number\", \"SDKN_INST_NUM\", 1, 0, 512, INTEGER4x4),\n Node:new(0x0004, \"Level\", \"SDKN_INST_LEVEL\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"Pan\", \"SDKN_INST_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0006, \"Chorus Send Level\", \"SDKN_INST_CHO_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0007, \"Reverb Send Level\", \"SDKN_INST_REV_SEND\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"Tune\", \"SDKN_PIT_FINE\", 128, 8, 248, INTEGER4x4),\n Node:new(0x000C, \"Attack\", \"SDKN_ATTACK\", 100, 0, 100, INTEGER1x7),\n Node:new(0x000D, \"Decay\", \"SDKN_DECAY\", 64, 1, 64, INTEGER1x7),\n Node:new(0x000E, \"Brilliance\", \"SDKN_BRIGHTNESS\", 64, 49, 76, INTEGER1x5),\n Node:new(0x000F, \"Variation\", \"SDKN_FLAM_CTRL\", 0, 0, 7, INTEGER1x7),\n Node:new(0x0010, \"Dynamic Range\", \"SDKN_DYN_RANG\", 32, 0, 63, INTEGER1x6),\n Node:new(0x0011, \"Stereo Width\", \"SDKN_STEREO_WIDTH\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Output Assign\", \"SDKN_OUTPUT_ASSIGN\", 0, 0, 6, INTEGER1x3),\n}\n\nlocal PAT = -- PCM Tone\n{\n Node:new_parent(0x0, 0, \"PCM Tone Common\", \"_PC\", PC),\n Node:new_parent(0x200, 0, \"PCM Tone Common MFX\", \"_PF\", PF),\n Node:new_parent(0x1000, 110, \"PCM Tone PMT (Partial Mix Table)\", \"_PX\", PX),\n Node:new_parent(0x2000, 151, \"PCM Tone Partial (Partial 1)\", \"_PT1\", PT),\n Node:new_parent(0x2200, 289, \"PCM Tone Partial (Partial 2)\", \"_PT2\", PT),\n Node:new_parent(0x2400, 427, \"PCM Tone Partial (Partial 3)\", \"_PT3\", PT),\n Node:new_parent(0x2600, 565, \"PCM Tone Partial (Partial 4)\", \"_PT4\", PT),\n Node:new_parent(0x3000, 703, \"PCM Tone Common 2\", \"_PC2\", PC2)\n}\n\nlocal RHY = -- Rhythm Set\n{\n Node:new_parent(0x0, 0, \"Rhythm Set Common\", \"_RC\", RC),\n Node:new_parent(0x200, 2, \"Rhythm Set Common MFX\", \"_RF\", RF),\n Node:new_parent(0x800, 50, \"Rhythm Set Common Comp/EQ\", \"_RCQ\", RCQ),\n Node:new_parent(0x1000, 134, \"Rhythm Set Partial (Key # 21)\", \"_RT21\", RT),\n Node:new_parent(0x1200, 279, \"Rhythm Set Partial (Key # 22)\", \"_RT22\", RT),\n Node:new_parent(0x1400, 424, \"Rhythm Set Partial (Key # 23)\", \"_RT23\", RT),\n Node:new_parent(0x1600, 569, \"Rhythm Set Partial (Key # 24)\", \"_RT24\", RT),\n Node:new_parent(0x1800, 714, \"Rhythm Set Partial (Key # 25)\", \"_RT25\", RT),\n Node:new_parent(0x1A00, 859, \"Rhythm Set Partial (Key # 26)\", \"_RT26\", RT),\n Node:new_parent(0x1C00, 1004, \"Rhythm Set Partial (Key # 27)\", \"_RT27\", RT),\n Node:new_parent(0x1E00, 1149, \"Rhythm Set Partial (Key # 28)\", \"_RT28\", RT),\n Node:new_parent(0x2000, 1294, \"Rhythm Set Partial (Key # 29)\", \"_RT29\", RT),\n Node:new_parent(0x2200, 1439, \"Rhythm Set Partial (Key # 30)\", \"_RT30\", RT),\n Node:new_parent(0x2400, 1584, \"Rhythm Set Partial (Key # 31)\", \"_RT31\", RT),\n Node:new_parent(0x2600, 1729, \"Rhythm Set Partial (Key # 32)\", \"_RT32\", RT),\n Node:new_parent(0x2800, 1874, \"Rhythm Set Partial (Key # 33)\", \"_RT33\", RT),\n Node:new_parent(0x2A00, 2019, \"Rhythm Set Partial (Key # 34)\", \"_RT34\", RT),\n Node:new_parent(0x2C00, 2164, \"Rhythm Set Partial (Key # 35)\", \"_RT35\", RT),\n Node:new_parent(0x2E00, 2309, \"Rhythm Set Partial (Key # 36)\", \"_RT36\", RT),\n Node:new_parent(0x3000, 2454, \"Rhythm Set Partial (Key # 37)\", \"_RT37\", RT),\n Node:new_parent(0x3200, 2599, \"Rhythm Set Partial (Key # 38)\", \"_RT38\", RT),\n Node:new_parent(0x3400, 2744, \"Rhythm Set Partial (Key # 39)\", \"_RT39\", RT),\n Node:new_parent(0x3600, 2889, \"Rhythm Set Partial (Key # 40)\", \"_RT40\", RT),\n Node:new_parent(0x3800, 3034, \"Rhythm Set Partial (Key # 41)\", \"_RT41\", RT),\n Node:new_parent(0x3A00, 3179, \"Rhythm Set Partial (Key # 42)\", \"_RT42\", RT),\n Node:new_parent(0x3C00, 3324, \"Rhythm Set Partial (Key # 43)\", \"_RT43\", RT),\n Node:new_parent(0x3E00, 3469, \"Rhythm Set Partial (Key # 44)\", \"_RT44\", RT),\n Node:new_parent(0x4000, 3614, \"Rhythm Set Partial (Key # 45)\", \"_RT45\", RT),\n Node:new_parent(0x4200, 3759, \"Rhythm Set Partial (Key # 46)\", \"_RT46\", RT),\n Node:new_parent(0x4400, 3904, \"Rhythm Set Partial (Key # 47)\", \"_RT47\", RT),\n Node:new_parent(0x4600, 4049, \"Rhythm Set Partial (Key # 48)\", \"_RT48\", RT),\n Node:new_parent(0x4800, 4194, \"Rhythm Set Partial (Key # 49)\", \"_RT49\", RT),\n Node:new_parent(0x4A00, 4339, \"Rhythm Set Partial (Key # 50)\", \"_RT50\", RT),\n Node:new_parent(0x4C00, 4484, \"Rhythm Set Partial (Key # 51)\", \"_RT51\", RT),\n Node:new_parent(0x4E00, 4629, \"Rhythm Set Partial (Key # 52)\", \"_RT52\", RT),\n Node:new_parent(0x5000, 4774, \"Rhythm Set Partial (Key # 53)\", \"_RT53\", RT),\n Node:new_parent(0x5200, 4919, \"Rhythm Set Partial (Key # 54)\", \"_RT54\", RT),\n Node:new_parent(0x5400, 5064, \"Rhythm Set Partial (Key # 55)\", \"_RT55\", RT),\n Node:new_parent(0x5600, 5209, \"Rhythm Set Partial (Key # 56)\", \"_RT56\", RT),\n Node:new_parent(0x5800, 5354, \"Rhythm Set Partial (Key # 57)\", \"_RT57\", RT),\n Node:new_parent(0x5A00, 5499, \"Rhythm Set Partial (Key # 58)\", \"_RT58\", RT),\n Node:new_parent(0x5C00, 5644, \"Rhythm Set Partial (Key # 59)\", \"_RT59\", RT),\n Node:new_parent(0x5E00, 5789, \"Rhythm Set Partial (Key # 60)\", \"_RT60\", RT),\n Node:new_parent(0x6000, 5934, \"Rhythm Set Partial (Key # 61)\", \"_RT61\", RT),\n Node:new_parent(0x6200, 6079, \"Rhythm Set Partial (Key # 62)\", \"_RT62\", RT),\n Node:new_parent(0x6400, 6224, \"Rhythm Set Partial (Key # 63)\", \"_RT63\", RT),\n Node:new_parent(0x6600, 6369, \"Rhythm Set Partial (Key # 64)\", \"_RT64\", RT),\n Node:new_parent(0x6800, 6514, \"Rhythm Set Partial (Key # 65)\", \"_RT65\", RT),\n Node:new_parent(0x6A00, 6659, \"Rhythm Set Partial (Key # 66)\", \"_RT66\", RT),\n Node:new_parent(0x6C00, 6804, \"Rhythm Set Partial (Key # 67)\", \"_RT67\", RT),\n Node:new_parent(0x6E00, 6949, \"Rhythm Set Partial (Key # 68)\", \"_RT68\", RT),\n Node:new_parent(0x7000, 7094, \"Rhythm Set Partial (Key # 69)\", \"_RT69\", RT),\n Node:new_parent(0x7200, 7239, \"Rhythm Set Partial (Key # 70)\", \"_RT70\", RT),\n Node:new_parent(0x7400, 7384, \"Rhythm Set Partial (Key # 71)\", \"_RT71\", RT),\n Node:new_parent(0x7600, 7529, \"Rhythm Set Partial (Key # 72)\", \"_RT72\", RT),\n Node:new_parent(0x7800, 7674, \"Rhythm Set Partial (Key # 73)\", \"_RT73\", RT),\n Node:new_parent(0x7A00, 7819, \"Rhythm Set Partial (Key # 74)\", \"_RT74\", RT),\n Node:new_parent(0x7C00, 7964, \"Rhythm Set Partial (Key # 75)\", \"_RT75\", RT),\n Node:new_parent(0x7E00, 8109, \"Rhythm Set Partial (Key # 76)\", \"_RT76\", RT),\n Node:new_parent(0x10000, 8254, \"Rhythm Set Partial (Key # 77)\", \"_RT77\", RT),\n Node:new_parent(0x10200, 8399, \"Rhythm Set Partial (Key # 78)\", \"_RT78\", RT),\n Node:new_parent(0x10400, 8544, \"Rhythm Set Partial (Key # 79)\", \"_RT79\", RT),\n Node:new_parent(0x10600, 8689, \"Rhythm Set Partial (Key # 80)\", \"_RT80\", RT),\n Node:new_parent(0x10800, 8834, \"Rhythm Set Partial (Key # 81)\", \"_RT81\", RT),\n Node:new_parent(0x10A00, 8979, \"Rhythm Set Partial (Key # 82)\", \"_RT82\", RT),\n Node:new_parent(0x10C00, 9124, \"Rhythm Set Partial (Key # 83)\", \"_RT83\", RT),\n Node:new_parent(0x10E00, 9269, \"Rhythm Set Partial (Key # 84)\", \"_RT84\", RT),\n Node:new_parent(0x11000, 9414, \"Rhythm Set Partial (Key # 85)\", \"_RT85\", RT),\n Node:new_parent(0x11200, 9559, \"Rhythm Set Partial (Key # 86)\", \"_RT86\", RT),\n Node:new_parent(0x11400, 9704, \"Rhythm Set Partial (Key # 87)\", \"_RT87\", RT),\n Node:new_parent(0x11600, 9849, \"Rhythm Set Partial (Key # 88)\", \"_RT88\", RT),\n Node:new_parent(0x11800, 9994, \"Rhythm Set Partial (Key # 89)\", \"_RT89\", RT),\n Node:new_parent(0x11A00, 10139, \"Rhythm Set Partial (Key # 90)\", \"_RT90\", RT),\n Node:new_parent(0x11C00, 10284, \"Rhythm Set Partial (Key # 91)\", \"_RT91\", RT),\n Node:new_parent(0x11E00, 10429, \"Rhythm Set Partial (Key # 92)\", \"_RT92\", RT),\n Node:new_parent(0x12000, 10574, \"Rhythm Set Partial (Key # 93)\", \"_RT93\", RT),\n Node:new_parent(0x12200, 10719, \"Rhythm Set Partial (Key # 94)\", \"_RT94\", RT),\n Node:new_parent(0x12400, 10864, \"Rhythm Set Partial (Key # 95)\", \"_RT95\", RT),\n Node:new_parent(0x12600, 11009, \"Rhythm Set Partial (Key # 96)\", \"_RT96\", RT),\n Node:new_parent(0x12800, 11154, \"Rhythm Set Partial (Key # 97)\", \"_RT97\", RT),\n Node:new_parent(0x12A00, 11299, \"Rhythm Set Partial (Key # 98)\", \"_RT98\", RT),\n Node:new_parent(0x12C00, 11444, \"Rhythm Set Partial (Key # 99)\", \"_RT99\", RT),\n Node:new_parent(0x12E00, 11589, \"Rhythm Set Partial (Key # 100)\", \"_RT100\", RT),\n Node:new_parent(0x13000, 11734, \"Rhythm Set Partial (Key # 101)\", \"_RT101\", RT),\n Node:new_parent(0x13200, 11879, \"Rhythm Set Partial (Key # 102)\", \"_RT102\", RT),\n Node:new_parent(0x13400, 12024, \"Rhythm Set Partial (Key # 103)\", \"_RT103\", RT),\n Node:new_parent(0x13600, 12169, \"Rhythm Set Partial (Key # 104)\", \"_RT104\", RT),\n Node:new_parent(0x13800, 12314, \"Rhythm Set Partial (Key # 105)\", \"_RT105\", RT),\n Node:new_parent(0x13A00, 12459, \"Rhythm Set Partial (Key # 106)\", \"_RT106\", RT),\n Node:new_parent(0x13C00, 12604, \"Rhythm Set Partial (Key # 107)\", \"_RT107\", RT),\n Node:new_parent(0x13E00, 12749, \"Rhythm Set Partial (Key # 108)\", \"_RT108\", RT),\n Node:new_parent(0x20000, 12894, \"Rhythm Set Common 2\", \"_RC2\", RC2),\n}\n\nlocal SHPAT = -- Synth Tone\n{\n Node:new_parent(0x0, 0, \"Synth Tone Common\", \"_SHPC\", SHPC),\n Node:new_parent(0x200, 25, \"Synth Tone MFX\", \"_SHPF\", SHPF),\n Node:new_parent(0x2000, 73, \"Synth Tone Partial (1)\", \"_SHPT1\", SHPT),\n Node:new_parent(0x2100, 127, \"Synth Tone Partial (2)\", \"_SHPT2\", SHPT),\n Node:new_parent(0x2200, 181, \"Synth Tone Partial (3)\", \"_SHPT3\", SHPT),\n Node:new_parent(0x5000, 235, \"Synth Tone Modify\", \"_SHPTM\", SHPTM)\n}\n\nlocal SNTONE = -- SuperNATURAL Tone\n{\n Node:new_parent(0x0, 0, \"SN Tone Common\", \"_SNTC\", SNTC),\n Node:new_parent(0x200, 0, \"SN Tone MFX\", \"_SNTF\", SNTF)\n}\n\nlocal KIT = -- Drum Kit\n{\n Node:new_parent(0x0, 0, \"Drum Kit Common\", \"_KC\", KC),\n Node:new_parent(0x200, 5, \"Drum Kit MFX\", \"_KF\", KF),\n Node:new_parent(0x800, 53, \"Drum Kit Common Comp/EQ\", \"_KCQ\", KCQ),\n Node:new_parent(0x1000, 137, \"Drum Kit Note (Key # 27)\", \"_KN27\", KN),\n Node:new_parent(0x1100, 150, \"Drum Kit Note (Key # 28)\", \"_KN28\", KN),\n Node:new_parent(0x1200, 163, \"Drum Kit Note (Key # 29)\", \"_KN29\", KN),\n Node:new_parent(0x1300, 176, \"Drum Kit Note (Key # 30)\", \"_KN30\", KN),\n Node:new_parent(0x1400, 189, \"Drum Kit Note (Key # 31)\", \"_KN31\", KN),\n Node:new_parent(0x1500, 202, \"Drum Kit Note (Key # 32)\", \"_KN32\", KN),\n Node:new_parent(0x1600, 215, \"Drum Kit Note (Key # 33)\", \"_KN33\", KN),\n Node:new_parent(0x1700, 228, \"Drum Kit Note (Key # 34)\", \"_KN34\", KN),\n Node:new_parent(0x1800, 241, \"Drum Kit Note (Key # 35)\", \"_KN35\", KN),\n Node:new_parent(0x1900, 254, \"Drum Kit Note (Key # 36)\", \"_KN36\", KN),\n Node:new_parent(0x1A00, 267, \"Drum Kit Note (Key # 37)\", \"_KN37\", KN),\n Node:new_parent(0x1B00, 280, \"Drum Kit Note (Key # 38)\", \"_KN38\", KN),\n Node:new_parent(0x1C00, 293, \"Drum Kit Note (Key # 39)\", \"_KN39\", KN),\n Node:new_parent(0x1D00, 306, \"Drum Kit Note (Key # 40)\", \"_KN40\", KN),\n Node:new_parent(0x1E00, 319, \"Drum Kit Note (Key # 41)\", \"_KN41\", KN),\n Node:new_parent(0x1F00, 332, \"Drum Kit Note (Key # 42)\", \"_KN42\", KN),\n Node:new_parent(0x2000, 345, \"Drum Kit Note (Key # 43)\", \"_KN43\", KN),\n Node:new_parent(0x2100, 358, \"Drum Kit Note (Key # 44)\", \"_KN44\", KN),\n Node:new_parent(0x2200, 371, \"Drum Kit Note (Key # 45)\", \"_KN45\", KN),\n Node:new_parent(0x2300, 384, \"Drum Kit Note (Key # 46)\", \"_KN46\", KN),\n Node:new_parent(0x2400, 397, \"Drum Kit Note (Key # 47)\", \"_KN47\", KN),\n Node:new_parent(0x2500, 410, \"Drum Kit Note (Key # 48)\", \"_KN48\", KN),\n Node:new_parent(0x2600, 423, \"Drum Kit Note (Key # 49)\", \"_KN49\", KN),\n Node:new_parent(0x2700, 436, \"Drum Kit Note (Key # 50)\", \"_KN50\", KN),\n Node:new_parent(0x2800, 449, \"Drum Kit Note (Key # 51)\", \"_KN51\", KN),\n Node:new_parent(0x2900, 462, \"Drum Kit Note (Key # 52)\", \"_KN52\", KN),\n Node:new_parent(0x2A00, 475, \"Drum Kit Note (Key # 53)\", \"_KN53\", KN),\n Node:new_parent(0x2B00, 488, \"Drum Kit Note (Key # 54)\", \"_KN54\", KN),\n Node:new_parent(0x2C00, 501, \"Drum Kit Note (Key # 55)\", \"_KN55\", KN),\n Node:new_parent(0x2D00, 514, \"Drum Kit Note (Key # 56)\", \"_KN56\", KN),\n Node:new_parent(0x2E00, 527, \"Drum Kit Note (Key # 57)\", \"_KN57\", KN),\n Node:new_parent(0x2F00, 540, \"Drum Kit Note (Key # 58)\", \"_KN58\", KN),\n Node:new_parent(0x3000, 553, \"Drum Kit Note (Key # 59)\", \"_KN59\", KN),\n Node:new_parent(0x3100, 566, \"Drum Kit Note (Key # 60)\", \"_KN60\", KN),\n Node:new_parent(0x3200, 579, \"Drum Kit Note (Key # 61)\", \"_KN61\", KN),\n Node:new_parent(0x3300, 592, \"Drum Kit Note (Key # 62)\", \"_KN62\", KN),\n Node:new_parent(0x3400, 605, \"Drum Kit Note (Key # 63)\", \"_KN63\", KN),\n Node:new_parent(0x3500, 618, \"Drum Kit Note (Key # 64)\", \"_KN64\", KN),\n Node:new_parent(0x3600, 631, \"Drum Kit Note (Key # 65)\", \"_KN65\", KN),\n Node:new_parent(0x3700, 644, \"Drum Kit Note (Key # 66)\", \"_KN66\", KN),\n Node:new_parent(0x3800, 657, \"Drum Kit Note (Key # 67)\", \"_KN67\", KN),\n Node:new_parent(0x3900, 670, \"Drum Kit Note (Key # 68)\", \"_KN68\", KN),\n Node:new_parent(0x3A00, 683, \"Drum Kit Note (Key # 69)\", \"_KN69\", KN),\n Node:new_parent(0x3B00, 696, \"Drum Kit Note (Key # 70)\", \"_KN70\", KN),\n Node:new_parent(0x3C00, 709, \"Drum Kit Note (Key # 71)\", \"_KN71\", KN),\n Node:new_parent(0x3D00, 722, \"Drum Kit Note (Key # 72)\", \"_KN72\", KN),\n Node:new_parent(0x3E00, 735, \"Drum Kit Note (Key # 73)\", \"_KN73\", KN),\n Node:new_parent(0x3F00, 748, \"Drum Kit Note (Key # 74)\", \"_KN74\", KN),\n Node:new_parent(0x4000, 761, \"Drum Kit Note (Key # 75)\", \"_KN75\", KN),\n Node:new_parent(0x4100, 774, \"Drum Kit Note (Key # 76)\", \"_KN76\", KN),\n Node:new_parent(0x4200, 787, \"Drum Kit Note (Key # 77)\", \"_KN77\", KN),\n Node:new_parent(0x4300, 800, \"Drum Kit Note (Key # 78)\", \"_KN78\", KN),\n Node:new_parent(0x4400, 813, \"Drum Kit Note (Key # 79)\", \"_KN79\", KN),\n Node:new_parent(0x4500, 826, \"Drum Kit Note (Key # 80)\", \"_KN80\", KN),\n Node:new_parent(0x4600, 839, \"Drum Kit Note (Key # 81)\", \"_KN81\", KN),\n Node:new_parent(0x4700, 852, \"Drum Kit Note (Key # 82)\", \"_KN82\", KN),\n Node:new_parent(0x4800, 865, \"Drum Kit Note (Key # 83)\", \"_KN83\", KN),\n Node:new_parent(0x4900, 878, \"Drum Kit Note (Key # 84)\", \"_KN84\", KN),\n Node:new_parent(0x4A00, 891, \"Drum Kit Note (Key # 85)\", \"_KN85\", KN),\n Node:new_parent(0x4B00, 904, \"Drum Kit Note (Key # 86)\", \"_KN86\", KN),\n Node:new_parent(0x4C00, 917, \"Drum Kit Note (Key # 87)\", \"_KN87\", KN),\n Node:new_parent(0x4D00, 930, \"Drum Kit Note (Key # 88)\", \"_KN88\", KN),\n}\n\nlocal SETUP =\n{\n Node:new_parent(0x0, 0, \"Setup\", \"_STP\", STP),\n}\n\nlocal SYS =\n{\n Node:new_parent(0x0, 0, \"System Common\", \"_SC\", SC),\n}\n\nlocal PRF = -- Studio Set\n{\n Node:new_parent(0x0, 0, \"Studio Set Common\", \"_FC\", FC),\n Node:new_parent(0x400, 51, \"Studio Set Common Chorus\", \"_FH\", FH),\n Node:new_parent(0x600, 75, \"Studio Set Common Reverb\", \"_FV\", FV),\n Node:new_parent(0x800, 102, \"Studio Set Common RSS\", \"_FRSS\", FRSS),\n Node:new_parent(0x900, 115, \"Studio Set Mastering EQ\", \"_FMEQ\", FMEQ),\n Node:new_parent(0x1000, 122, \"Studio Set MIDI (Channel 1)\", \"_FM1\", FM),\n Node:new_parent(0x1100, 123, \"Studio Set MIDI (Channel 2)\", \"_FM2\", FM),\n Node:new_parent(0x1200, 124, \"Studio Set MIDI (Channel 3)\", \"_FM3\", FM),\n Node:new_parent(0x1300, 125, \"Studio Set MIDI (Channel 4)\", \"_FM4\", FM),\n Node:new_parent(0x1400, 126, \"Studio Set MIDI (Channel 5)\", \"_FM5\", FM),\n Node:new_parent(0x1500, 127, \"Studio Set MIDI (Channel 6)\", \"_FM6\", FM),\n Node:new_parent(0x1600, 128, \"Studio Set MIDI (Channel 7)\", \"_FM7\", FM),\n Node:new_parent(0x1700, 129, \"Studio Set MIDI (Channel 8)\", \"_FM8\", FM),\n Node:new_parent(0x1800, 130, \"Studio Set MIDI (Channel 9)\", \"_FM9\", FM),\n Node:new_parent(0x1900, 131, \"Studio Set MIDI (Channel 10)\", \"_FM10\", FM),\n Node:new_parent(0x1A00, 132, \"Studio Set MIDI (Channel 11)\", \"_FM11\", FM),\n Node:new_parent(0x1B00, 133, \"Studio Set MIDI (Channel 12)\", \"_FM12\", FM),\n Node:new_parent(0x1C00, 134, \"Studio Set MIDI (Channel 13)\", \"_FM13\", FM),\n Node:new_parent(0x1D00, 135, \"Studio Set MIDI (Channel 14)\", \"_FM14\", FM),\n Node:new_parent(0x1E00, 136, \"Studio Set MIDI (Channel 15)\", \"_FM15\", FM),\n Node:new_parent(0x1F00, 137, \"Studio Set MIDI (Channel 16)\", \"_FM16\", FM),\n Node:new_parent(0x2000, 138, \"Studio Set Part (Part 1)\", \"_FP1\", FP),\n Node:new_parent(0x2100, 208, \"Studio Set Part (Part 2)\", \"_FP2\", FP),\n Node:new_parent(0x2200, 278, \"Studio Set Part (Part 3)\", \"_FP3\", FP),\n Node:new_parent(0x2300, 348, \"Studio Set Part (Part 4)\", \"_FP4\", FP),\n Node:new_parent(0x2400, 418, \"Studio Set Part (Part 5)\", \"_FP5\", FP),\n Node:new_parent(0x2500, 488, \"Studio Set Part (Part 6)\", \"_FP6\", FP),\n Node:new_parent(0x2600, 558, \"Studio Set Part (Part 7)\", \"_FP7\", FP),\n Node:new_parent(0x2700, 628, \"Studio Set Part (Part 8)\", \"_FP8\", FP),\n Node:new_parent(0x2800, 698, \"Studio Set Part (Part 9)\", \"_FP9\", FP),\n Node:new_parent(0x2900, 768, \"Studio Set Part (Part 10)\", \"_FP10\", FP),\n Node:new_parent(0x2A00, 838, \"Studio Set Part (Part 11)\", \"_FP11\", FP),\n Node:new_parent(0x2B00, 908, \"Studio Set Part (Part 12)\", \"_FP12\", FP),\n Node:new_parent(0x2C00, 978, \"Studio Set Part (Part 13)\", \"_FP13\", FP),\n Node:new_parent(0x2D00, 1048, \"Studio Set Part (Part 14)\", \"_FP14\", FP),\n Node:new_parent(0x2E00, 1118, \"Studio Set Part (Part 15)\", \"_FP15\", FP),\n Node:new_parent(0x2F00, 1188, \"Studio Set Part (Part 16)\", \"_FP16\", FP),\n Node:new_parent(0x5000, 1258, \"Studio Set Part EQ (Part 1)\", \"_FPEQ1\", FPEQ),\n Node:new_parent(0x5100, 1266, \"Studio Set Part EQ (Part 2)\", \"_FPEQ2\", FPEQ),\n Node:new_parent(0x5200, 1274, \"Studio Set Part EQ (Part 3)\", \"_FPEQ3\", FPEQ),\n Node:new_parent(0x5300, 1282, \"Studio Set Part EQ (Part 4)\", \"_FPEQ4\", FPEQ),\n Node:new_parent(0x5400, 1290, \"Studio Set Part EQ (Part 5)\", \"_FPEQ5\", FPEQ),\n Node:new_parent(0x5500, 1298, \"Studio Set Part EQ (Part 6)\", \"_FPEQ6\", FPEQ),\n Node:new_parent(0x5600, 1306, \"Studio Set Part EQ (Part 7)\", \"_FPEQ7\", FPEQ),\n Node:new_parent(0x5700, 1314, \"Studio Set Part EQ (Part 8)\", \"_FPEQ8\", FPEQ),\n Node:new_parent(0x5800, 1322, \"Studio Set Part EQ (Part 9)\", \"_FPEQ9\", FPEQ),\n Node:new_parent(0x5900, 1330, \"Studio Set Part EQ (Part 10)\", \"_FPEQ10\", FPEQ),\n Node:new_parent(0x5A00, 1338, \"Studio Set Part EQ (Part 11)\", \"_FPEQ11\", FPEQ),\n Node:new_parent(0x5B00, 1346, \"Studio Set Part EQ (Part 12)\", \"_FPEQ12\", FPEQ),\n Node:new_parent(0x5C00, 1354, \"Studio Set Part EQ (Part 13)\", \"_FPEQ13\", FPEQ),\n Node:new_parent(0x5D00, 1362, \"Studio Set Part EQ (Part 14)\", \"_FPEQ14\", FPEQ),\n Node:new_parent(0x5E00, 1370, \"Studio Set Part EQ (Part 15)\", \"_FPEQ15\", FPEQ),\n Node:new_parent(0x5F00, 1378, \"Studio Set Part EQ (Part 16)\", \"_FPEQ16\", FPEQ),\n}\n\nlocal FPART = -- Temporary Tone\n{\n Node:new_parent(0x0, 0, \"Temporary PCM Tone\", \"_PAT\", PAT),\n Node:new_parent(0x10000, 743, \"Temporary Synth Tone\", \"_SHPAT\", SHPAT),\n Node:new_parent(0x20000, 1011, \"Temporary SuperNATURAL Tone\", \"_SNTONE\", SNTONE),\n Node:new_parent(0x30000, 1109, \"Temporary Drum Kit\", \"_KIT\", KIT),\n Node:new_parent(0x100000, 2052, \"Temporary Rhythm Set\", \"_RHY\", RHY),\n}\n\nlocal EDITOR_NOP = {}\n\nI7ROOT_NODE =\n{\n Node:new_parent(0x1000000, 0, \"Setup\", \"_SETUP\", SETUP),\n Node:new_parent(0x2000000, 56, \"System\", \"_SYS\", SYS),\n Node:new_parent(0xF000000, 97, \"(for editor nop) \", \"_EDITOR_NOP\", EDITOR_NOP, 0),\n Node:new_parent(0x18000000, 97, \"Temporary Studio Set\", \"_PRF\", PRF),\n Node:new_parent(0x19000000, 1483, \"Temporary Tone (Studio Mode Part 1)\", \"_FPART1\", FPART),\n Node:new_parent(0x19200000, 16463, \"Temporary Tone (Studio Mode Part 2)\", \"_FPART2\", FPART),\n Node:new_parent(0x19400000, 31443, \"Temporary Tone (Studio Mode Part 3)\", \"_FPART3\", FPART),\n Node:new_parent(0x19600000, 46423, \"Temporary Tone (Studio Mode Part 4)\", \"_FPART4\", FPART),\n Node:new_parent(0x1A000000, 61403, \"Temporary Tone (Studio Mode Part 5)\", \"_FPART5\", FPART),\n Node:new_parent(0x1A200000, 76383, \"Temporary Tone (Studio Mode Part 6)\", \"_FPART6\", FPART),\n Node:new_parent(0x1A400000, 91363, \"Temporary Tone (Studio Mode Part 7)\", \"_FPART7\", FPART),\n Node:new_parent(0x1A600000, 106343, \"Temporary Tone (Studio Mode Part 8)\", \"_FPART8\", FPART),\n Node:new_parent(0x1B000000, 121323, \"Temporary Tone (Studio Mode Part 9)\", \"_FPART9\", FPART),\n Node:new_parent(0x1B200000, 136303, \"Temporary Tone (Studio Mode Part 10)\", \"_FPART10\", FPART),\n Node:new_parent(0x1B400000, 151283, \"Temporary Tone (Studio Mode Part 11)\", \"_FPART11\", FPART),\n Node:new_parent(0x1B600000, 166263, \"Temporary Tone (Studio Mode Part 12)\", \"_FPART12\", FPART),\n Node:new_parent(0x1C000000, 181243, \"Temporary Tone (Studio Mode Part 13)\", \"_FPART13\", FPART),\n Node:new_parent(0x1C200000, 196223, \"Temporary Tone (Studio Mode Part 14)\", \"_FPART14\", FPART),\n Node:new_parent(0x1C400000, 211203, \"Temporary Tone (Studio Mode Part 15)\", \"_FPART15\", FPART),\n Node:new_parent(0x1C600000, 226183, \"Temporary Tone (Studio Mode Part 16)\", \"_FPART16\", FPART),\n}\n\nlocal MODEL_ID_MAP =\n{\n [\"_SETUP\"] = 0x01000000,\n [\"_SYS\"] = 0x02000000,\n [\"_EDITOR_NOP\"] = 0x0F000000,\n [\"_PRF\"] = 0x18000000,\n [\"_FPART1\"] = 0x19000000,\n [\"_FPART2\"] = 0x19200000,\n [\"_FPART3\"] = 0x19400000,\n [\"_FPART4\"] = 0x19600000,\n [\"_FPART5\"] = 0x1A000000,\n [\"_FPART6\"] = 0x1A200000,\n [\"_FPART7\"] = 0x1A400000,\n [\"_FPART8\"] = 0x1A600000,\n [\"_FPART9\"] = 0x1B000000,\n [\"_FPART10\"] = 0x1B200000,\n [\"_FPART11\"] = 0x1B400000,\n [\"_FPART12\"] = 0x1B600000,\n [\"_FPART13\"] = 0x1C000000,\n [\"_FPART14\"] = 0x1C200000,\n [\"_FPART15\"] = 0x1C400000,\n [\"_FPART16\"] = 0x1C600000,\n\n [\"_STP\"] = 0x000000,\n\n [\"_SC\"] = 0x000000,\n\n [\"_FC\"] = 0x000000,\n [\"_FH\"] = 0x000400,\n [\"_FV\"] = 0x000600,\n [\"_FRSS\"] = 0x000800,\n [\"_FMEQ\"] = 0x000900,\n [\"_FM1\"] = 0x001000,\n [\"_FM2\"] = 0x001100,\n [\"_FM3\"] = 0x001200,\n [\"_FM4\"] = 0x001300,\n [\"_FM5\"] = 0x001400,\n [\"_FM6\"] = 0x001500,\n [\"_FM7\"] = 0x001600,\n [\"_FM8\"] = 0x001700,\n [\"_FM9\"] = 0x001800,\n [\"_FM10\"] = 0x001900,\n [\"_FM11\"] = 0x001A00,\n [\"_FM12\"] = 0x001B00,\n [\"_FM13\"] = 0x001C00,\n [\"_FM14\"] = 0x001D00,\n [\"_FM15\"] = 0x001E00,\n [\"_FM16\"] = 0x001F00,\n [\"_FP1\"] = 0x002000,\n [\"_FP2\"] = 0x002100,\n [\"_FP3\"] = 0x002200,\n [\"_FP4\"] = 0x002300,\n [\"_FP5\"] = 0x002400,\n [\"_FP6\"] = 0x002500,\n [\"_FP7\"] = 0x002600,\n [\"_FP8\"] = 0x002700,\n [\"_FP9\"] = 0x002800,\n [\"_FP10\"] = 0x002900,\n [\"_FP11\"] = 0x002A00,\n [\"_FP12\"] = 0x002B00,\n [\"_FP13\"] = 0x002C00,\n [\"_FP14\"] = 0x002D00,\n [\"_FP15\"] = 0x002E00,\n [\"_FP16\"] = 0x002F00,\n [\"_FPEQ1\"] = 0x005000,\n [\"_FPEQ2\"] = 0x005100,\n [\"_FPEQ3\"] = 0x005200,\n [\"_FPEQ4\"] = 0x005300,\n [\"_FPEQ5\"] = 0x005400,\n [\"_FPEQ6\"] = 0x005500,\n [\"_FPEQ7\"] = 0x005600,\n [\"_FPEQ8\"] = 0x005700,\n [\"_FPEQ9\"] = 0x005800,\n [\"_FPEQ10\"] = 0x005900,\n [\"_FPEQ11\"] = 0x005A00,\n [\"_FPEQ12\"] = 0x005B00,\n [\"_FPEQ13\"] = 0x005C00,\n [\"_FPEQ14\"] = 0x005D00,\n [\"_FPEQ15\"] = 0x005E00,\n [\"_FPEQ16\"] = 0x005F00,\n\n [\"_PAT\"] = 0x000000,\n [\"_SHPAT\"] = 0x010000,\n [\"_SNTONE\"] = 0x020000,\n [\"_KIT\"] = 0x030000,\n [\"_RHY\"] = 0x100000,\n\n [\"_PC\"] = 0x000000,\n [\"_PF\"] = 0x000200,\n [\"_PX\"] = 0x001000,\n [\"_PT1\"] = 0x002000,\n [\"_PT2\"] = 0x002200,\n [\"_PT3\"] = 0x002400,\n [\"_PT4\"] = 0x002600,\n [\"_PC2\"] = 0x003000,\n\n [\"_RC\"] = 0x000000,\n [\"_RF\"] = 0x000200,\n [\"_RCQ\"] = 0x000800,\n [\"_RT21\"] = 0x001000,\n [\"_RT22\"] = 0x001200,\n [\"_RT23\"] = 0x001400,\n [\"_RT24\"] = 0x001600,\n [\"_RT25\"] = 0x001800,\n [\"_RT26\"] = 0x001A00,\n [\"_RT27\"] = 0x001C00,\n [\"_RT28\"] = 0x001E00,\n [\"_RT29\"] = 0x002000,\n [\"_RT30\"] = 0x002200,\n [\"_RT31\"] = 0x002400,\n [\"_RT32\"] = 0x002600,\n [\"_RT33\"] = 0x002800,\n [\"_RT34\"] = 0x002A00,\n [\"_RT35\"] = 0x002C00,\n [\"_RT36\"] = 0x002E00,\n [\"_RT37\"] = 0x003000,\n [\"_RT38\"] = 0x003200,\n [\"_RT39\"] = 0x003400,\n [\"_RT40\"] = 0x003600,\n [\"_RT41\"] = 0x003800,\n [\"_RT42\"] = 0x003A00,\n [\"_RT43\"] = 0x003C00,\n [\"_RT44\"] = 0x003E00,\n [\"_RT45\"] = 0x004000,\n [\"_RT46\"] = 0x004200,\n [\"_RT47\"] = 0x004400,\n [\"_RT48\"] = 0x004600,\n [\"_RT49\"] = 0x004800,\n [\"_RT50\"] = 0x004A00,\n [\"_RT51\"] = 0x004C00,\n [\"_RT52\"] = 0x004E00,\n [\"_RT53\"] = 0x005000,\n [\"_RT54\"] = 0x005200,\n [\"_RT55\"] = 0x005400,\n [\"_RT56\"] = 0x005600,\n [\"_RT57\"] = 0x005800,\n [\"_RT58\"] = 0x005A00,\n [\"_RT59\"] = 0x005C00,\n [\"_RT60\"] = 0x005E00,\n [\"_RT61\"] = 0x006000,\n [\"_RT62\"] = 0x006200,\n [\"_RT63\"] = 0x006400,\n [\"_RT64\"] = 0x006600,\n [\"_RT65\"] = 0x006800,\n [\"_RT66\"] = 0x006A00,\n [\"_RT67\"] = 0x006C00,\n [\"_RT68\"] = 0x006E00,\n [\"_RT69\"] = 0x007000,\n [\"_RT70\"] = 0x007200,\n [\"_RT71\"] = 0x007400,\n [\"_RT72\"] = 0x007600,\n [\"_RT73\"] = 0x007800,\n [\"_RT74\"] = 0x007A00,\n [\"_RT75\"] = 0x007C00,\n [\"_RT76\"] = 0x007E00,\n [\"_RT77\"] = 0x010000,\n [\"_RT78\"] = 0x010200,\n [\"_RT79\"] = 0x010400,\n [\"_RT80\"] = 0x010600,\n [\"_RT81\"] = 0x010800,\n [\"_RT82\"] = 0x010A00,\n [\"_RT83\"] = 0x010C00,\n [\"_RT84\"] = 0x010E00,\n [\"_RT85\"] = 0x011000,\n [\"_RT86\"] = 0x011200,\n [\"_RT87\"] = 0x011400,\n [\"_RT88\"] = 0x011600,\n [\"_RT89\"] = 0x011800,\n [\"_RT90\"] = 0x011A00,\n [\"_RT91\"] = 0x011C00,\n [\"_RT92\"] = 0x011E00,\n [\"_RT93\"] = 0x012000,\n [\"_RT94\"] = 0x012200,\n [\"_RT95\"] = 0x012400,\n [\"_RT96\"] = 0x012600,\n [\"_RT97\"] = 0x012800,\n [\"_RT98\"] = 0x012A00,\n [\"_RT99\"] = 0x012C00,\n [\"_RT100\"] = 0x012E00,\n [\"_RT101\"] = 0x013000,\n [\"_RT102\"] = 0x013200,\n [\"_RT103\"] = 0x013400,\n [\"_RT104\"] = 0x013600,\n [\"_RT105\"] = 0x013800,\n [\"_RT106\"] = 0x013A00,\n [\"_RT107\"] = 0x013C00,\n [\"_RT108\"] = 0x013E00,\n [\"_RC2\"] = 0x020000,\n\n [\"_SHPC\"] = 0x000000,\n [\"_SHPF\"] = 0x000200,\n [\"_SHPT1\"] = 0x002000,\n [\"_SHPT2\"] = 0x002100,\n [\"_SHPT3\"] = 0x002200,\n [\"_SHPTM\"] = 0x005000,\n\n [\"_SNTC\"] = 0x000000,\n [\"_SNTF\"] = 0x000200,\n\n [\"_KC\"] = 0x000000,\n [\"_KF\"] = 0x000200,\n [\"_KCQ\"] = 0x000800,\n [\"_KN27\"] = 0x001000,\n [\"_KN28\"] = 0x001100,\n [\"_KN29\"] = 0x001200,\n [\"_KN30\"] = 0x001300,\n [\"_KN31\"] = 0x001400,\n [\"_KN32\"] = 0x001500,\n [\"_KN33\"] = 0x001600,\n [\"_KN34\"] = 0x001700,\n [\"_KN35\"] = 0x001800,\n [\"_KN36\"] = 0x001900,\n [\"_KN37\"] = 0x001A00,\n [\"_KN38\"] = 0x001B00,\n [\"_KN39\"] = 0x001C00,\n [\"_KN40\"] = 0x001D00,\n [\"_KN41\"] = 0x001E00,\n [\"_KN42\"] = 0x001F00,\n [\"_KN43\"] = 0x002000,\n [\"_KN44\"] = 0x002100,\n [\"_KN45\"] = 0x002200,\n [\"_KN46\"] = 0x002300,\n [\"_KN47\"] = 0x002400,\n [\"_KN48\"] = 0x002500,\n [\"_KN49\"] = 0x002600,\n [\"_KN50\"] = 0x002700,\n [\"_KN51\"] = 0x002800,\n [\"_KN52\"] = 0x002900,\n [\"_KN53\"] = 0x002A00,\n [\"_KN54\"] = 0x002B00,\n [\"_KN55\"] = 0x002C00,\n [\"_KN56\"] = 0x002D00,\n [\"_KN57\"] = 0x002E00,\n [\"_KN58\"] = 0x002F00,\n [\"_KN59\"] = 0x003000,\n [\"_KN60\"] = 0x003100,\n [\"_KN61\"] = 0x003200,\n [\"_KN62\"] = 0x003300,\n [\"_KN63\"] = 0x003400,\n [\"_KN64\"] = 0x003500,\n [\"_KN65\"] = 0x003600,\n [\"_KN66\"] = 0x003700,\n [\"_KN67\"] = 0x003800,\n [\"_KN68\"] = 0x003900,\n [\"_KN69\"] = 0x003A00,\n [\"_KN70\"] = 0x003B00,\n [\"_KN71\"] = 0x003C00,\n [\"_KN72\"] = 0x003D00,\n [\"_KN73\"] = 0x003E00,\n [\"_KN74\"] = 0x003F00,\n [\"_KN75\"] = 0x004000,\n [\"_KN76\"] = 0x004100,\n [\"_KN77\"] = 0x004200,\n [\"_KN78\"] = 0x004300,\n [\"_KN79\"] = 0x004400,\n [\"_KN80\"] = 0x004500,\n [\"_KN81\"] = 0x004600,\n [\"_KN82\"] = 0x004700,\n [\"_KN83\"] = 0x004800,\n [\"_KN84\"] = 0x004900,\n [\"_KN85\"] = 0x004A00,\n [\"_KN86\"] = 0x004B00,\n [\"_KN87\"] = 0x004C00,\n [\"_KN88\"] = 0x004D00,\n\n [\"NESTP_SND_MODE_SD1\"] = 0x0000,\n [\"NESTP_LIV_BS_MSB_SD1\"] = 0x0001,\n [\"NESTP_LIV_BS_LSB_SD1\"] = 0x0002,\n [\"NESTP_LIV_PC_SD1\"] = 0x0003,\n [\"NESTP_PRF_BS_MSB_SD1\"] = 0x0004,\n [\"NESTP_PRF_BS_LSB_SD1\"] = 0x0005,\n [\"NESTP_PRF_PC_SD1\"] = 0x0006,\n [\"NESTP_LIV_LEVEL_SD1\"] = 0x0007,\n [\"NESTP_LIV_PAN_SD1\"] = 0x0008,\n [\"NESTP_LIV_OCT_SD1\"] = 0x0009,\n [\"NESTP_LIV_KRNG_L_SD1\"] = 0x000A,\n [\"NESTP_LIV_KRNG_U_SD1\"] = 0x000B,\n [\"NESTP_SND_MODE_SD2\"] = 0x000C,\n [\"NESTP_LIV_BS_MSB_SD2\"] = 0x000D,\n [\"NESTP_LIV_BS_LSB_SD2\"] = 0x000E,\n [\"NESTP_LIV_PC_SD2\"] = 0x000F,\n [\"NESTP_PRF_BS_MSB_SD2\"] = 0x0010,\n [\"NESTP_PRF_BS_LSB_SD2\"] = 0x0011,\n [\"NESTP_PRF_PC_SD2\"] = 0x0012,\n [\"NESTP_LIV_LEVEL_SD2\"] = 0x0013,\n [\"NESTP_LIV_PAN_SD2\"] = 0x0014,\n [\"NESTP_LIV_OCT_SD2\"] = 0x0015,\n [\"NESTP_LIV_KRNG_L_SD2\"] = 0x0016,\n [\"NESTP_LIV_KRNG_U_SD2\"] = 0x0017,\n [\"NESTP_SND_MODE_SD3\"] = 0x0018,\n [\"NESTP_LIV_BS_MSB_SD3\"] = 0x0019,\n [\"NESTP_LIV_BS_LSB_SD3\"] = 0x001A,\n [\"NESTP_LIV_PC_SD3\"] = 0x001B,\n [\"NESTP_PRF_BS_MSB_SD3\"] = 0x001C,\n [\"NESTP_PRF_BS_LSB_SD3\"] = 0x001D,\n [\"NESTP_PRF_PC_SD3\"] = 0x001E,\n [\"NESTP_LIV_LEVEL_SD3\"] = 0x001F,\n [\"NESTP_LIV_PAN_SD3\"] = 0x0020,\n [\"NESTP_LIV_OCT_SD3\"] = 0x0021,\n [\"NESTP_LIV_KRNG_L_SD3\"] = 0x0022,\n [\"NESTP_LIV_KRNG_U_SD3\"] = 0x0023,\n [\"NESTP_SND_MODE_SD4\"] = 0x0024,\n [\"NESTP_LIV_BS_MSB_SD4\"] = 0x0025,\n [\"NESTP_LIV_BS_LSB_SD4\"] = 0x0026,\n [\"NESTP_LIV_PC_SD4\"] = 0x0027,\n [\"NESTP_PRF_BS_MSB_SD4\"] = 0x0028,\n [\"NESTP_PRF_BS_LSB_SD4\"] = 0x0029,\n [\"NESTP_PRF_PC_SD4\"] = 0x002A,\n [\"NESTP_LIV_LEVEL_SD4\"] = 0x002B,\n [\"NESTP_LIV_PAN_SD4\"] = 0x002C,\n [\"NESTP_LIV_OCT_SD4\"] = 0x002D,\n [\"NESTP_LIV_KRNG_L_SD4\"] = 0x002E,\n [\"NESTP_LIV_KRNG_U_SD4\"] = 0x002F,\n [\"NESTP_MFX1_SW\"] = 0x0030,\n [\"NESTP_MFX2_SW\"] = 0x0031,\n [\"NESTP_MFX3_SW\"] = 0x0032,\n [\"NESTP_MFX4_SW\"] = 0x0033,\n [\"NESTP_CHO_SW\"] = 0x0034,\n [\"NESTP_REV_SW\"] = 0x0035,\n [\"NESTP_IFX_SW\"] = 0x0036,\n [\"NESTP_GM_MAP\"] = 0x0037,\n\n [\"NESC_TUNE\"] = 0x0000,\n [\"NESC_KEY_SHIFT\"] = 0x0004,\n [\"NESC_LEVEL\"] = 0x0005,\n [\"NESC_SCALE_SW\"] = 0x0006,\n [\"NESC_LIV_MAIN_CH\"] = 0x0009,\n [\"NESC_LIV_SUB1_CH\"] = 0x000A,\n [\"NESC_LIV_SUB2_CH\"] = 0x000B,\n [\"NESC_LIV_SUB3_CH\"] = 0x000C,\n [\"NESC_LIV_SUB4_CH\"] = 0x000D,\n [\"NESC_LIV_SUB5_CH\"] = 0x000E,\n [\"NESC_LIV_SUB6_CH\"] = 0x000F,\n [\"NESC_LIV_SUB7_CH\"] = 0x0010,\n [\"NESC_PRF_CTRL_CH\"] = 0x0011,\n [\"NESC_SCALE_TYPE\"] = 0x0012,\n [\"NESC_SCALE_KEY\"] = 0x0013,\n [\"NESC_TUNE_C\"] = 0x0014,\n [\"NESC_TUNE_CS\"] = 0x0015,\n [\"NESC_TUNE_D\"] = 0x0016,\n [\"NESC_TUNE_DS\"] = 0x0017,\n [\"NESC_TUNE_E\"] = 0x0018,\n [\"NESC_TUNE_F\"] = 0x0019,\n [\"NESC_TUNE_FS\"] = 0x001A,\n [\"NESC_TUNE_G\"] = 0x001B,\n [\"NESC_TUNE_GS\"] = 0x001C,\n [\"NESC_TUNE_A\"] = 0x001D,\n [\"NESC_TUNE_AS\"] = 0x001E,\n [\"NESC_TUNE_B\"] = 0x001F,\n [\"NESC_CTRL1_SRC\"] = 0x0020,\n [\"NESC_CTRL2_SRC\"] = 0x0021,\n [\"NESC_CTRL3_SRC\"] = 0x0022,\n [\"NESC_CTRL4_SRC\"] = 0x0023,\n [\"NESC_CTRL_SRC\"] = 0x0024,\n [\"NESC_CLK_SRC\"] = 0x0025,\n [\"NESC_TEMPO\"] = 0x0026,\n [\"NESC_OR_TEMPO\"] = 0x0028,\n [\"NESC_RX_PC\"] = 0x0029,\n [\"NESC_RX_BS\"] = 0x002A,\n [\"NESC_RSS_CENTERSP_SW\"] = 0x002B,\n [\"NESC_RSS_WOOFER_SW\"] = 0x002C,\n [\"NESC_RSS_OUTMODE\"] = 0x002D,\n [\"NESC_USB_SAMP_RATE\"] = 0x002E,\n\n [\"NEVF_MFX_TYPE\"] = 0x0000,\n [\"NEVF_MFX_DRY_SEND\"] = 0x0001,\n [\"NEVF_MFX_CHO_SEND\"] = 0x0002,\n [\"NEVF_MFX_REV_SEND\"] = 0x0003,\n [\"NEVF_MFX_CTRL1_SRC\"] = 0x0005,\n [\"NEVF_MFX_CTRL1_SENS\"] = 0x0006,\n [\"NEVF_MFX_CTRL2_SRC\"] = 0x0007,\n [\"NEVF_MFX_CTRL2_SENS\"] = 0x0008,\n [\"NEVF_MFX_CTRL3_SRC\"] = 0x0009,\n [\"NEVF_MFX_CTRL3_SENS\"] = 0x000A,\n [\"NEVF_MFX_CTRL4_SRC\"] = 0x000B,\n [\"NEVF_MFX_CTRL4_SENS\"] = 0x000C,\n [\"NEVF_MFX_CTRL_ASGN1\"] = 0x000D,\n [\"NEVF_MFX_CTRL_ASGN2\"] = 0x000E,\n [\"NEVF_MFX_CTRL_ASGN3\"] = 0x000F,\n [\"NEVF_MFX_CTRL_ASGN4\"] = 0x0010,\n [\"NEVF_MFX_PRM1\"] = 0x0011,\n [\"NEVF_MFX_PRM2\"] = 0x0015,\n [\"NEVF_MFX_PRM3\"] = 0x0019,\n [\"NEVF_MFX_PRM4\"] = 0x001D,\n [\"NEVF_MFX_PRM5\"] = 0x0021,\n [\"NEVF_MFX_PRM6\"] = 0x0025,\n [\"NEVF_MFX_PRM7\"] = 0x0029,\n [\"NEVF_MFX_PRM8\"] = 0x002D,\n [\"NEVF_MFX_PRM9\"] = 0x0031,\n [\"NEVF_MFX_PRM10\"] = 0x0035,\n [\"NEVF_MFX_PRM11\"] = 0x0039,\n [\"NEVF_MFX_PRM12\"] = 0x003D,\n [\"NEVF_MFX_PRM13\"] = 0x0041,\n [\"NEVF_MFX_PRM14\"] = 0x0045,\n [\"NEVF_MFX_PRM15\"] = 0x0049,\n [\"NEVF_MFX_PRM16\"] = 0x004D,\n [\"NEVF_MFX_PRM17\"] = 0x0051,\n [\"NEVF_MFX_PRM18\"] = 0x0055,\n [\"NEVF_MFX_PRM19\"] = 0x0059,\n [\"NEVF_MFX_PRM20\"] = 0x005D,\n [\"NEVF_MFX_PRM21\"] = 0x0061,\n [\"NEVF_MFX_PRM22\"] = 0x0065,\n [\"NEVF_MFX_PRM23\"] = 0x0069,\n [\"NEVF_MFX_PRM24\"] = 0x006D,\n [\"NEVF_MFX_PRM25\"] = 0x0071,\n [\"NEVF_MFX_PRM26\"] = 0x0075,\n [\"NEVF_MFX_PRM27\"] = 0x0079,\n [\"NEVF_MFX_PRM28\"] = 0x007D,\n [\"NEVF_MFX_PRM29\"] = 0x0101,\n [\"NEVF_MFX_PRM30\"] = 0x0105,\n [\"NEVF_MFX_PRM31\"] = 0x0109,\n [\"NEVF_MFX_PRM32\"] = 0x010D,\n\n [\"NEVP_LEVEL\"] = 0x0000,\n [\"NEVP_PAN\"] = 0x0001,\n [\"NEVP_TFX_SW\"] = 0x0002,\n\n [\"NEFC_NAME\"] = 0x0000,\n [\"NEFC_MFX1_CTRL_CH\"] = 0x0011,\n [\"NEFC_MFX2_CTRL_CH\"] = 0x0012,\n [\"NEFC_MFX3_CTRL_CH\"] = 0x0013,\n [\"NEFC_MFX_CTRL_SRC1\"] = 0x0014,\n [\"NEFC_MFX_CTRL_SRC2\"] = 0x0015,\n [\"NEFC_MFX_CTRL_SRC3\"] = 0x0016,\n [\"NEFC_MFX_CTRL_SRC4\"] = 0x0017,\n [\"NEFC_VOICE_RESERV1\"] = 0x0018,\n [\"NEFC_VOICE_RESERV2\"] = 0x0019,\n [\"NEFC_VOICE_RESERV3\"] = 0x001A,\n [\"NEFC_VOICE_RESERV4\"] = 0x001B,\n [\"NEFC_VOICE_RESERV5\"] = 0x001C,\n [\"NEFC_VOICE_RESERV6\"] = 0x001D,\n [\"NEFC_VOICE_RESERV7\"] = 0x001E,\n [\"NEFC_VOICE_RESERV8\"] = 0x001F,\n [\"NEFC_VOICE_RESERV9\"] = 0x0020,\n [\"NEFC_VOICE_RESERV10\"] = 0x0021,\n [\"NEFC_VOICE_RESERV11\"] = 0x0022,\n [\"NEFC_VOICE_RESERV12\"] = 0x0023,\n [\"NEFC_VOICE_RESERV13\"] = 0x0024,\n [\"NEFC_VOICE_RESERV14\"] = 0x0025,\n [\"NEFC_VOICE_RESERV15\"] = 0x0026,\n [\"NEFC_VOICE_RESERV16\"] = 0x0027,\n [\"NEFC_MFX_STRUCT\"] = 0x0038,\n [\"NEFC_CTRL1_SRC\"] = 0x0039,\n [\"NEFC_CTRL2_SRC\"] = 0x003A,\n [\"NEFC_CTRL3_SRC\"] = 0x003B,\n [\"NEFC_CTRL4_SRC\"] = 0x003C,\n [\"NEFC_OR_TEMPO\"] = 0x003D,\n [\"NEFC_SOLO_PART\"] = 0x003F,\n [\"NEFC_REVERB_SW\"] = 0x0040,\n [\"NEFC_CHORUS_SW\"] = 0x0041,\n [\"NEFC_MASTER_EQ_SW\"] = 0x0042,\n [\"NEFC_COMPEQ_SW\"] = 0x0043,\n [\"NEFC_COMPEQ_PART\"] = 0x0044,\n [\"NEFC_COMPEQ1_ASSIGN\"] = 0x0045,\n [\"NEFC_COMPEQ2_ASSIGN\"] = 0x0046,\n [\"NEFC_COMPEQ3_ASSIGN\"] = 0x0047,\n [\"NEFC_COMPEQ4_ASSIGN\"] = 0x0048,\n [\"NEFC_COMPEQ5_ASSIGN\"] = 0x0049,\n [\"NEFC_COMPEQ6_ASSIGN\"] = 0x004A,\n [\"NEFC_IN_SRC_SELECT\"] = 0x004B,\n [\"NEFC_IN_LEVEL\"] = 0x004C,\n [\"NEFC_IN_CHO_SEND_LEVEL\"] = 0x004D,\n [\"NEFC_IN_REV_SEND_LEVEL\"] = 0x004E,\n [\"NEFC_IN_MUTE_SW\"] = 0x004F,\n [\"NEFC_EXP_SLOT1_ROMID\"] = 0x0050,\n [\"NEFC_EXP_SLOT2_ROMID\"] = 0x0051,\n [\"NEFC_EXP_SLOT3_ROMID\"] = 0x0052,\n [\"NEFC_EXP_SLOT4_ROMID\"] = 0x0053,\n\n [\"NEFH_CHO_TYPE\"] = 0x0000,\n [\"NEFH_CHO_LEVEL\"] = 0x0001,\n [\"NEFH_CHO_OUT_ASGN\"] = 0x0002,\n [\"NEFH_CHO_OUT_SELECT\"] = 0x0003,\n [\"NEFH_CHO_PRM1\"] = 0x0004,\n [\"NEFH_CHO_PRM2\"] = 0x0008,\n [\"NEFH_CHO_PRM3\"] = 0x000C,\n [\"NEFH_CHO_PRM4\"] = 0x0010,\n [\"NEFH_CHO_PRM5\"] = 0x0014,\n [\"NEFH_CHO_PRM6\"] = 0x0018,\n [\"NEFH_CHO_PRM7\"] = 0x001C,\n [\"NEFH_CHO_PRM8\"] = 0x0020,\n [\"NEFH_CHO_PRM9\"] = 0x0024,\n [\"NEFH_CHO_PRM10\"] = 0x0028,\n [\"NEFH_CHO_PRM11\"] = 0x002C,\n [\"NEFH_CHO_PRM12\"] = 0x0030,\n [\"NEFH_CHO_PRM13\"] = 0x0034,\n [\"NEFH_CHO_PRM14\"] = 0x0038,\n [\"NEFH_CHO_PRM15\"] = 0x003C,\n [\"NEFH_CHO_PRM16\"] = 0x0040,\n [\"NEFH_CHO_PRM17\"] = 0x0044,\n [\"NEFH_CHO_PRM18\"] = 0x0048,\n [\"NEFH_CHO_PRM19\"] = 0x004C,\n [\"NEFH_CHO_PRM20\"] = 0x0050,\n\n [\"NEFV_REV_TYPE\"] = 0x0000,\n [\"NEFV_REV_LEVEL\"] = 0x0001,\n [\"NEFV_REV_OUT_ASGN\"] = 0x0002,\n [\"NEFV_REV_PRM1\"] = 0x0003,\n [\"NEFV_REV_PRM2\"] = 0x0007,\n [\"NEFV_REV_PRM3\"] = 0x000B,\n [\"NEFV_REV_PRM4\"] = 0x000F,\n [\"NEFV_REV_PRM5\"] = 0x0013,\n [\"NEFV_REV_PRM6\"] = 0x0017,\n [\"NEFV_REV_PRM7\"] = 0x001B,\n [\"NEFV_REV_PRM8\"] = 0x001F,\n [\"NEFV_REV_PRM9\"] = 0x0023,\n [\"NEFV_REV_PRM10\"] = 0x0027,\n [\"NEFV_REV_PRM11\"] = 0x002B,\n [\"NEFV_REV_PRM12\"] = 0x002F,\n [\"NEFV_REV_PRM13\"] = 0x0033,\n [\"NEFV_REV_PRM14\"] = 0x0037,\n [\"NEFV_REV_PRM15\"] = 0x003B,\n [\"NEFV_REV_PRM16\"] = 0x003F,\n [\"NEFV_REV_PRM17\"] = 0x0043,\n [\"NEFV_REV_PRM18\"] = 0x0047,\n [\"NEFV_REV_PRM19\"] = 0x004B,\n [\"NEFV_REV_PRM20\"] = 0x004F,\n [\"NEFV_REV_PRM21\"] = 0x0053,\n [\"NEFV_REV_PRM22\"] = 0x0057,\n [\"NEFV_REV_PRM23\"] = 0x005B,\n [\"NEFV_REV_PRM24\"] = 0x005F,\n\n [\"NEFRSS_RSS_SW\"] = 0x0000,\n [\"NEFRSS_RSS_ROOM_TYPE\"] = 0x0001,\n [\"NEFRSS_REV_LEVEL\"] = 0x0002,\n [\"NEFRSS_REV_ROOMSIZE\"] = 0x0003,\n [\"NEFRSS_REV_TIME\"] = 0x0004,\n [\"NEFRSS_REV_DENSITY\"] = 0x0005,\n [\"NEFRSS_REV_HFDUMP\"] = 0x0006,\n [\"NEFRSS_AUX_IN_XPOS\"] = 0x0007,\n [\"NEFRSS_AUX_IN_YPOS\"] = 0x0008,\n [\"NEFRSS_AUX_IN_WIDTH\"] = 0x0009,\n [\"NEFRSS_AUX_IN_RVSEND\"] = 0x000A,\n [\"NEFRSS_AUX_IN_CTRL_CH\"] = 0x000B,\n [\"NEFRSS_SP4XTALKC\"] = 0x000C,\n\n [\"NEFMEQ_EQ_LOWFREQ\"] = 0x0000,\n [\"NEFMEQ_EQ_LOWGAIN\"] = 0x0001,\n [\"NEFMEQ_EQ_MIDFREQ\"] = 0x0002,\n [\"NEFMEQ_EQ_MIDGAIN\"] = 0x0003,\n [\"NEFMEQ_EQ_MIDQ\"] = 0x0004,\n [\"NEFMEQ_EQ_HIGHFREQ\"] = 0x0005,\n [\"NEFMEQ_EQ_HIGHGAIN\"] = 0x0006,\n\n [\"NEFM_PHASE_LOCK\"] = 0x0000,\n\n [\"NEFP_RX_CH\"] = 0x0000,\n [\"NEFP_RX_SW\"] = 0x0001,\n [\"NEFP_RX_SRC1\"] = 0x0002,\n [\"NEFP_RX_SRC2\"] = 0x0003,\n [\"NEFP_RX_SRC3\"] = 0x0004,\n [\"NEFP_RX_SRC4\"] = 0x0005,\n [\"NEFP_PAT_BS_MSB\"] = 0x0006,\n [\"NEFP_PAT_BS_LSB\"] = 0x0007,\n [\"NEFP_PAT_PC\"] = 0x0008,\n [\"NEFP_LEVEL\"] = 0x0009,\n [\"NEFP_PAN\"] = 0x000A,\n [\"NEFP_PIT_CRS\"] = 0x000B,\n [\"NEFP_PIT_FINE\"] = 0x000C,\n [\"NEFP_MONO_POLY\"] = 0x000D,\n [\"NEFP_LEGATO_SW\"] = 0x000E,\n [\"NEFP_BEND_RANGE\"] = 0x000F,\n [\"NEFP_PORT_SW\"] = 0x0010,\n [\"NEFP_PORT_TIME\"] = 0x0011,\n [\"NEFP_CUTOFF_OFST\"] = 0x0013,\n [\"NEFP_RESO_OFST\"] = 0x0014,\n [\"NEFP_ATK_OFST\"] = 0x0015,\n [\"NEFP_DCY_OFST\"] = 0x0016,\n [\"NEFP_REL_OFST\"] = 0x0017,\n [\"NEFP_VIB_RATE\"] = 0x0018,\n [\"NEFP_VIB_DEPTH\"] = 0x0019,\n [\"NEFP_VIB_DELAY\"] = 0x001A,\n [\"NEFP_OCTAVE\"] = 0x001B,\n [\"NEFP_VSENS_OFST\"] = 0x001C,\n [\"NEFP_KRANGE_LO\"] = 0x001D,\n [\"NEFP_KRANGE_UP\"] = 0x001E,\n [\"NEFP_KFADE_LO\"] = 0x001F,\n [\"NEFP_KFADE_UP\"] = 0x0020,\n [\"NEFP_VRANGE_LO\"] = 0x0021,\n [\"NEFP_VRANGE_UP\"] = 0x0022,\n [\"NEFP_VFADE_LO\"] = 0x0023,\n [\"NEFP_VFADE_UP\"] = 0x0024,\n [\"NEFP_MUTE_SW\"] = 0x0025,\n [\"NEFP_DRY_SEND\"] = 0x0026,\n [\"NEFP_CHO_SEND\"] = 0x0027,\n [\"NEFP_REV_SEND\"] = 0x0028,\n [\"NEFP_OUT_ASGN\"] = 0x0029,\n [\"NEFP_SCALE_TYPE\"] = 0x002B,\n [\"NEFP_SCALE_KEY\"] = 0x002C,\n [\"NEFP_TUNE_C\"] = 0x002D,\n [\"NEFP_TUNE_CS\"] = 0x002E,\n [\"NEFP_TUNE_D\"] = 0x002F,\n [\"NEFP_TUNE_DS\"] = 0x0030,\n [\"NEFP_TUNE_E\"] = 0x0031,\n [\"NEFP_TUNE_F\"] = 0x0032,\n [\"NEFP_TUNE_FS\"] = 0x0033,\n [\"NEFP_TUNE_G\"] = 0x0034,\n [\"NEFP_TUNE_GS\"] = 0x0035,\n [\"NEFP_TUNE_A\"] = 0x0036,\n [\"NEFP_TUNE_AS\"] = 0x0037,\n [\"NEFP_TUNE_B\"] = 0x0038,\n [\"NEFP_RX_PC\"] = 0x0039,\n [\"NEFP_RX_BS\"] = 0x003A,\n [\"NEFP_RX_BEND\"] = 0x003B,\n [\"NEFP_RX_PAFT\"] = 0x003C,\n [\"NEFP_RX_CAFT\"] = 0x003D,\n [\"NEFP_RX_MOD\"] = 0x003E,\n [\"NEFP_RX_VOL\"] = 0x003F,\n [\"NEFP_RX_PAN\"] = 0x0040,\n [\"NEFP_RX_EXPR\"] = 0x0041,\n [\"NEFP_RX_HOLD\"] = 0x0042,\n [\"NEFP_VELO_CRV_TYPE\"] = 0x0043,\n [\"NEFP_RSS_X1POS\"] = 0x0044,\n [\"NEFP_RSS_Y1POS\"] = 0x0046,\n [\"NEFP_RSS_WIDTH\"] = 0x0048,\n [\"NEFP_RSS_RVSEND\"] = 0x0049,\n\n [\"NEFPEQ_EQ_SW\"] = 0x0000,\n [\"NEFPEQ_EQ_LOWFREQ\"] = 0x0001,\n [\"NEFPEQ_EQ_LOWGAIN\"] = 0x0002,\n [\"NEFPEQ_EQ_MIDFREQ\"] = 0x0003,\n [\"NEFPEQ_EQ_MIDGAIN\"] = 0x0004,\n [\"NEFPEQ_EQ_MIDQ\"] = 0x0005,\n [\"NEFPEQ_EQ_HIGHFREQ\"] = 0x0006,\n [\"NEFPEQ_EQ_HIGHGAIN\"] = 0x0007,\n\n [\"RFPC_NAME\"] = 0x0000,\n [\"RFPC_LEVEL\"] = 0x000E,\n [\"RFPC_PAN\"] = 0x000F,\n [\"RFPC_PRIORITY\"] = 0x0010,\n [\"RFPC_PIT_CRS\"] = 0x0011,\n [\"RFPC_PIT_FINE\"] = 0x0012,\n [\"RFPC_OCTAVE\"] = 0x0013,\n [\"RFPC_STRETCH\"] = 0x0014,\n [\"RFPC_ANALOG_FEEL\"] = 0x0015,\n [\"RFPC_MONO_POLY\"] = 0x0016,\n [\"RFPC_LEGATO_SW\"] = 0x0017,\n [\"RFPC_LEGATO_RETRIG\"] = 0x0018,\n [\"RFPC_PORT_SW\"] = 0x0019,\n [\"RFPC_PORT_MODE\"] = 0x001A,\n [\"RFPC_PORT_TYPE\"] = 0x001B,\n [\"RFPC_PORT_START\"] = 0x001C,\n [\"RFPC_PORT_TIME\"] = 0x001D,\n [\"RFPC_CUTOFF_OFST\"] = 0x0022,\n [\"RFPC_RESO_OFST\"] = 0x0023,\n [\"RFPC_ATK_OFST\"] = 0x0024,\n [\"RFPC_REL_OFST\"] = 0x0025,\n [\"RFPC_VSENS_OFST\"] = 0x0026,\n [\"RFPC_TMT_CTRL_SW\"] = 0x0028,\n [\"RFPC_BEND_RANGE_UP\"] = 0x0029,\n [\"RFPC_BEND_RANGE_DW\"] = 0x002A,\n [\"RFPC_CTRL1_SRC\"] = 0x002B,\n [\"RFPC_CTRL1_DST1\"] = 0x002C,\n [\"RFPC_CTRL1_SENS1\"] = 0x002D,\n [\"RFPC_CTRL1_DST2\"] = 0x002E,\n [\"RFPC_CTRL1_SENS2\"] = 0x002F,\n [\"RFPC_CTRL1_DST3\"] = 0x0030,\n [\"RFPC_CTRL1_SENS3\"] = 0x0031,\n [\"RFPC_CTRL1_DST4\"] = 0x0032,\n [\"RFPC_CTRL1_SENS4\"] = 0x0033,\n [\"RFPC_CTRL2_SRC\"] = 0x0034,\n [\"RFPC_CTRL2_DST1\"] = 0x0035,\n [\"RFPC_CTRL2_SENS1\"] = 0x0036,\n [\"RFPC_CTRL2_DST2\"] = 0x0037,\n [\"RFPC_CTRL2_SENS2\"] = 0x0038,\n [\"RFPC_CTRL2_DST3\"] = 0x0039,\n [\"RFPC_CTRL2_SENS3\"] = 0x003A,\n [\"RFPC_CTRL2_DST4\"] = 0x003B,\n [\"RFPC_CTRL2_SENS4\"] = 0x003C,\n [\"RFPC_CTRL3_SRC\"] = 0x003D,\n [\"RFPC_CTRL3_DST1\"] = 0x003E,\n [\"RFPC_CTRL3_SENS1\"] = 0x003F,\n [\"RFPC_CTRL3_DST2\"] = 0x0040,\n [\"RFPC_CTRL3_SENS2\"] = 0x0041,\n [\"RFPC_CTRL3_DST3\"] = 0x0042,\n [\"RFPC_CTRL3_SENS3\"] = 0x0043,\n [\"RFPC_CTRL3_DST4\"] = 0x0044,\n [\"RFPC_CTRL3_SENS4\"] = 0x0045,\n [\"RFPC_CTRL4_SRC\"] = 0x0046,\n [\"RFPC_CTRL4_DST1\"] = 0x0047,\n [\"RFPC_CTRL4_SENS1\"] = 0x0048,\n [\"RFPC_CTRL4_DST2\"] = 0x0049,\n [\"RFPC_CTRL4_SENS2\"] = 0x004A,\n [\"RFPC_CTRL4_DST3\"] = 0x004B,\n [\"RFPC_CTRL4_SENS3\"] = 0x004C,\n [\"RFPC_CTRL4_DST4\"] = 0x004D,\n [\"RFPC_CTRL4_SENS4\"] = 0x004E,\n [\"RFPC_PART_MOD_SW\"] = 0x004F,\n\n [\"RFPF_MFX_TYPE\"] = 0x0000,\n [\"RFPF_MFX_DRY_SEND\"] = 0x0001,\n [\"RFPF_MFX_CHO_SEND\"] = 0x0002,\n [\"RFPF_MFX_REV_SEND\"] = 0x0003,\n [\"RFPF_MFX_CTRL1_SRC\"] = 0x0005,\n [\"RFPF_MFX_CTRL1_SENS\"] = 0x0006,\n [\"RFPF_MFX_CTRL2_SRC\"] = 0x0007,\n [\"RFPF_MFX_CTRL2_SENS\"] = 0x0008,\n [\"RFPF_MFX_CTRL3_SRC\"] = 0x0009,\n [\"RFPF_MFX_CTRL3_SENS\"] = 0x000A,\n [\"RFPF_MFX_CTRL4_SRC\"] = 0x000B,\n [\"RFPF_MFX_CTRL4_SENS\"] = 0x000C,\n [\"RFPF_MFX_CTRL_ASGN1\"] = 0x000D,\n [\"RFPF_MFX_CTRL_ASGN2\"] = 0x000E,\n [\"RFPF_MFX_CTRL_ASGN3\"] = 0x000F,\n [\"RFPF_MFX_CTRL_ASGN4\"] = 0x0010,\n [\"RFPF_MFX_PRM1\"] = 0x0011,\n [\"RFPF_MFX_PRM2\"] = 0x0015,\n [\"RFPF_MFX_PRM3\"] = 0x0019,\n [\"RFPF_MFX_PRM4\"] = 0x001D,\n [\"RFPF_MFX_PRM5\"] = 0x0021,\n [\"RFPF_MFX_PRM6\"] = 0x0025,\n [\"RFPF_MFX_PRM7\"] = 0x0029,\n [\"RFPF_MFX_PRM8\"] = 0x002D,\n [\"RFPF_MFX_PRM9\"] = 0x0031,\n [\"RFPF_MFX_PRM10\"] = 0x0035,\n [\"RFPF_MFX_PRM11\"] = 0x0039,\n [\"RFPF_MFX_PRM12\"] = 0x003D,\n [\"RFPF_MFX_PRM13\"] = 0x0041,\n [\"RFPF_MFX_PRM14\"] = 0x0045,\n [\"RFPF_MFX_PRM15\"] = 0x0049,\n [\"RFPF_MFX_PRM16\"] = 0x004D,\n [\"RFPF_MFX_PRM17\"] = 0x0051,\n [\"RFPF_MFX_PRM18\"] = 0x0055,\n [\"RFPF_MFX_PRM19\"] = 0x0059,\n [\"RFPF_MFX_PRM20\"] = 0x005D,\n [\"RFPF_MFX_PRM21\"] = 0x0061,\n [\"RFPF_MFX_PRM22\"] = 0x0065,\n [\"RFPF_MFX_PRM23\"] = 0x0069,\n [\"RFPF_MFX_PRM24\"] = 0x006D,\n [\"RFPF_MFX_PRM25\"] = 0x0071,\n [\"RFPF_MFX_PRM26\"] = 0x0075,\n [\"RFPF_MFX_PRM27\"] = 0x0079,\n [\"RFPF_MFX_PRM28\"] = 0x007D,\n [\"RFPF_MFX_PRM29\"] = 0x0101,\n [\"RFPF_MFX_PRM30\"] = 0x0105,\n [\"RFPF_MFX_PRM31\"] = 0x0109,\n [\"RFPF_MFX_PRM32\"] = 0x010D,\n\n [\"RFPX_STRUCT1\"] = 0x0000,\n [\"RFPX_BOOST1\"] = 0x0001,\n [\"RFPX_STRUCT3\"] = 0x0002,\n [\"RFPX_BOOST3\"] = 0x0003,\n [\"RFPX_TMT_VELO_CTRL\"] = 0x0004,\n [\"RFPX_TMT1_SW\"] = 0x0005,\n [\"RFPX_TMT1_KRANGE_LO\"] = 0x0006,\n [\"RFPX_TMT1_KRANGE_UP\"] = 0x0007,\n [\"RFPX_TMT1_KFADE_LO\"] = 0x0008,\n [\"RFPX_TMT1_KFADE_UP\"] = 0x0009,\n [\"RFPX_TMT1_VRANGE_LO\"] = 0x000A,\n [\"RFPX_TMT1_VRANGE_UP\"] = 0x000B,\n [\"RFPX_TMT1_VFADE_LO\"] = 0x000C,\n [\"RFPX_TMT1_VFADE_UP\"] = 0x000D,\n [\"RFPX_TMT2_SW\"] = 0x000E,\n [\"RFPX_TMT2_KRANGE_LO\"] = 0x000F,\n [\"RFPX_TMT2_KRANGE_UP\"] = 0x0010,\n [\"RFPX_TMT2_KFADE_LO\"] = 0x0011,\n [\"RFPX_TMT2_KFADE_UP\"] = 0x0012,\n [\"RFPX_TMT2_VRANGE_LO\"] = 0x0013,\n [\"RFPX_TMT2_VRANGE_UP\"] = 0x0014,\n [\"RFPX_TMT2_VFADE_LO\"] = 0x0015,\n [\"RFPX_TMT2_VFADE_UP\"] = 0x0016,\n [\"RFPX_TMT3_SW\"] = 0x0017,\n [\"RFPX_TMT3_KRANGE_LO\"] = 0x0018,\n [\"RFPX_TMT3_KRANGE_UP\"] = 0x0019,\n [\"RFPX_TMT3_KFADE_LO\"] = 0x001A,\n [\"RFPX_TMT3_KFADE_UP\"] = 0x001B,\n [\"RFPX_TMT3_VRANGE_LO\"] = 0x001C,\n [\"RFPX_TMT3_VRANGE_UP\"] = 0x001D,\n [\"RFPX_TMT3_VFADE_LO\"] = 0x001E,\n [\"RFPX_TMT3_VFADE_UP\"] = 0x001F,\n [\"RFPX_TMT4_SW\"] = 0x0020,\n [\"RFPX_TMT4_KRANGE_LO\"] = 0x0021,\n [\"RFPX_TMT4_KRANGE_UP\"] = 0x0022,\n [\"RFPX_TMT4_KFADE_LO\"] = 0x0023,\n [\"RFPX_TMT4_KFADE_UP\"] = 0x0024,\n [\"RFPX_TMT4_VRANGE_LO\"] = 0x0025,\n [\"RFPX_TMT4_VRANGE_UP\"] = 0x0026,\n [\"RFPX_TMT4_VFADE_LO\"] = 0x0027,\n [\"RFPX_TMT4_VFADE_UP\"] = 0x0028,\n\n [\"RFPT_LEVEL\"] = 0x0000,\n [\"RFPT_PIT_CRS\"] = 0x0001,\n [\"RFPT_PIT_FINE\"] = 0x0002,\n [\"RFPT_PIT_RND\"] = 0x0003,\n [\"RFPT_PAN\"] = 0x0004,\n [\"RFPT_PAN_KF\"] = 0x0005,\n [\"RFPT_PAN_RND\"] = 0x0006,\n [\"RFPT_PAN_ALT\"] = 0x0007,\n [\"RFPT_ENV_MODE\"] = 0x0008,\n [\"RFPT_DELAY_MODE\"] = 0x0009,\n [\"RFPT_DELAY_TIME\"] = 0x000A,\n [\"RFPT_DRY_SEND\"] = 0x000C,\n [\"RFPT_CHO_SEND_A\"] = 0x000F,\n [\"RFPT_REV_SEND_A\"] = 0x0010,\n [\"RFPT_RX_BEND\"] = 0x0012,\n [\"RFPT_RX_EXPR\"] = 0x0013,\n [\"RFPT_RX_HOLD\"] = 0x0014,\n [\"RFPT_REDAMP_SW\"] = 0x0016,\n [\"RFPT_CTRL1_SW1\"] = 0x0017,\n [\"RFPT_CTRL1_SW2\"] = 0x0018,\n [\"RFPT_CTRL1_SW3\"] = 0x0019,\n [\"RFPT_CTRL1_SW4\"] = 0x001A,\n [\"RFPT_CTRL2_SW1\"] = 0x001B,\n [\"RFPT_CTRL2_SW2\"] = 0x001C,\n [\"RFPT_CTRL2_SW3\"] = 0x001D,\n [\"RFPT_CTRL2_SW4\"] = 0x001E,\n [\"RFPT_CTRL3_SW1\"] = 0x001F,\n [\"RFPT_CTRL3_SW2\"] = 0x0020,\n [\"RFPT_CTRL3_SW3\"] = 0x0021,\n [\"RFPT_CTRL3_SW4\"] = 0x0022,\n [\"RFPT_CTRL4_SW1\"] = 0x0023,\n [\"RFPT_CTRL4_SW2\"] = 0x0024,\n [\"RFPT_CTRL4_SW3\"] = 0x0025,\n [\"RFPT_CTRL4_SW4\"] = 0x0026,\n [\"RFPT_WAV_GTYPE\"] = 0x0027,\n [\"RFPT_WAV_GID\"] = 0x0028,\n [\"RFPT_WAV_NUML\"] = 0x002C,\n [\"RFPT_WAV_NUMR\"] = 0x0030,\n [\"RFPT_WAV_GAIN\"] = 0x0034,\n [\"RFPT_FXM_SW\"] = 0x0035,\n [\"RFPT_FXM_COLOR\"] = 0x0036,\n [\"RFPT_FXM_DEPTH\"] = 0x0037,\n [\"RFPT_TEMPO_SYNC\"] = 0x0038,\n [\"RFPT_PIT_KF\"] = 0x0039,\n [\"RFPT_PENV_DEPTH\"] = 0x003A,\n [\"RFPT_PENV_VSENS\"] = 0x003B,\n [\"RFPT_PENV_T1_VSENS\"] = 0x003C,\n [\"RFPT_PENV_T4_VSENS\"] = 0x003D,\n [\"RFPT_PENV_TKF\"] = 0x003E,\n [\"RFPT_PENV_T1\"] = 0x003F,\n [\"RFPT_PENV_T2\"] = 0x0040,\n [\"RFPT_PENV_T3\"] = 0x0041,\n [\"RFPT_PENV_T4\"] = 0x0042,\n [\"RFPT_PENV_L0\"] = 0x0043,\n [\"RFPT_PENV_L1\"] = 0x0044,\n [\"RFPT_PENV_L2\"] = 0x0045,\n [\"RFPT_PENV_L3\"] = 0x0046,\n [\"RFPT_PENV_L4\"] = 0x0047,\n [\"RFPT_FILTER_TYPE\"] = 0x0048,\n [\"RFPT_CUTOFF\"] = 0x0049,\n [\"RFPT_CUTOFF_KF\"] = 0x004A,\n [\"RFPT_CUTOFF_VCRV\"] = 0x004B,\n [\"RFPT_CUTOFF_VSENS\"] = 0x004C,\n [\"RFPT_RESO\"] = 0x004D,\n [\"RFPT_RESO_VSENS\"] = 0x004E,\n [\"RFPT_FENV_DEPTH\"] = 0x004F,\n [\"RFPT_FENV_VCRV\"] = 0x0050,\n [\"RFPT_FENV_VSENS\"] = 0x0051,\n [\"RFPT_FENV_T1_VSENS\"] = 0x0052,\n [\"RFPT_FENV_T4_VSENS\"] = 0x0053,\n [\"RFPT_FENV_TKF\"] = 0x0054,\n [\"RFPT_FENV_T1\"] = 0x0055,\n [\"RFPT_FENV_T2\"] = 0x0056,\n [\"RFPT_FENV_T3\"] = 0x0057,\n [\"RFPT_FENV_T4\"] = 0x0058,\n [\"RFPT_FENV_L0\"] = 0x0059,\n [\"RFPT_FENV_L1\"] = 0x005A,\n [\"RFPT_FENV_L2\"] = 0x005B,\n [\"RFPT_FENV_L3\"] = 0x005C,\n [\"RFPT_FENV_L4\"] = 0x005D,\n [\"RFPT_BIAS_LEVEL\"] = 0x005E,\n [\"RFPT_BIAS_POS\"] = 0x005F,\n [\"RFPT_BIAS_DIR\"] = 0x0060,\n [\"RFPT_LEVEL_VCRV\"] = 0x0061,\n [\"RFPT_LEVEL_VSENS\"] = 0x0062,\n [\"RFPT_AENV_T1_VSENS\"] = 0x0063,\n [\"RFPT_AENV_T4_VSENS\"] = 0x0064,\n [\"RFPT_AENV_TKF\"] = 0x0065,\n [\"RFPT_AENV_T1\"] = 0x0066,\n [\"RFPT_AENV_T2\"] = 0x0067,\n [\"RFPT_AENV_T3\"] = 0x0068,\n [\"RFPT_AENV_T4\"] = 0x0069,\n [\"RFPT_AENV_L1\"] = 0x006A,\n [\"RFPT_AENV_L2\"] = 0x006B,\n [\"RFPT_AENV_L3\"] = 0x006C,\n [\"RFPT_LFO1_FORM\"] = 0x006D,\n [\"RFPT_LFO1_RATE\"] = 0x006E,\n [\"RFPT_LFO1_OFST\"] = 0x0070,\n [\"RFPT_LFO1_RATE_DETN\"] = 0x0071,\n [\"RFPT_LFO1_DELAY\"] = 0x0072,\n [\"RFPT_LFO1_DELAY_KF\"] = 0x0073,\n [\"RFPT_LFO1_FADE_MODE\"] = 0x0074,\n [\"RFPT_LFO1_FADE\"] = 0x0075,\n [\"RFPT_LFO1_KEY_TRIG\"] = 0x0076,\n [\"RFPT_LFO1_PIT_DEPTH\"] = 0x0077,\n [\"RFPT_LFO1_TVF_DEPTH\"] = 0x0078,\n [\"RFPT_LFO1_TVA_DEPTH\"] = 0x0079,\n [\"RFPT_LFO1_PAN_DEPTH\"] = 0x007A,\n [\"RFPT_LFO2_FORM\"] = 0x007B,\n [\"RFPT_LFO2_RATE\"] = 0x007C,\n [\"RFPT_LFO2_OFST\"] = 0x007E,\n [\"RFPT_LFO2_RATE_DETN\"] = 0x007F,\n [\"RFPT_LFO2_DELAY\"] = 0x0100,\n [\"RFPT_LFO2_DELAY_KF\"] = 0x0101,\n [\"RFPT_LFO2_FADE_MODE\"] = 0x0102,\n [\"RFPT_LFO2_FADE\"] = 0x0103,\n [\"RFPT_LFO2_KEY_TRIG\"] = 0x0104,\n [\"RFPT_LFO2_PIT_DEPTH\"] = 0x0105,\n [\"RFPT_LFO2_TVF_DEPTH\"] = 0x0106,\n [\"RFPT_LFO2_TVA_DEPTH\"] = 0x0107,\n [\"RFPT_LFO2_PAN_DEPTH\"] = 0x0108,\n [\"RFPT_LFO_STEP_TYPE\"] = 0x0109,\n [\"RFPT_LFO_STEP1\"] = 0x010A,\n [\"RFPT_LFO_STEP2\"] = 0x010B,\n [\"RFPT_LFO_STEP3\"] = 0x010C,\n [\"RFPT_LFO_STEP4\"] = 0x010D,\n [\"RFPT_LFO_STEP5\"] = 0x010E,\n [\"RFPT_LFO_STEP6\"] = 0x010F,\n [\"RFPT_LFO_STEP7\"] = 0x0110,\n [\"RFPT_LFO_STEP8\"] = 0x0111,\n [\"RFPT_LFO_STEP9\"] = 0x0112,\n [\"RFPT_LFO_STEP10\"] = 0x0113,\n [\"RFPT_LFO_STEP11\"] = 0x0114,\n [\"RFPT_LFO_STEP12\"] = 0x0115,\n [\"RFPT_LFO_STEP13\"] = 0x0116,\n [\"RFPT_LFO_STEP14\"] = 0x0117,\n [\"RFPT_LFO_STEP15\"] = 0x0118,\n [\"RFPT_LFO_STEP16\"] = 0x0119,\n\n [\"RFPLGT4_BEAM_SW\"] = 0x0000,\n [\"RFPLGT4_BEAM_ASGN\"] = 0x0001,\n [\"RFPLGT4_BEAM_POL\"] = 0x0002,\n [\"RFPLGT4_BEAM_RANGE_LO\"] = 0x0003,\n [\"RFPLGT4_BEAM_RANGE_UP\"] = 0x0004,\n [\"RFPLGT4_KNOB1_ASGN\"] = 0x0005,\n [\"RFPLGT4_KNOB2_ASGN\"] = 0x0006,\n [\"RFPLGT4_KNOB3_ASGN\"] = 0x0007,\n [\"RFPLGT4_KNOB4_ASGN\"] = 0x0008,\n [\"RFPLGT4_SW1_ASGN\"] = 0x0009,\n [\"RFPLGT4_SW1_MODE\"] = 0x000A,\n [\"RFPLGT4_SW2_ASGN\"] = 0x000B,\n [\"RFPLGT4_SW2_MODE\"] = 0x000C,\n [\"RFPLGT4_SW3_ASGN\"] = 0x000D,\n [\"RFPLGT4_SW3_MODE\"] = 0x000E,\n [\"RFPLGT4_SW4_ASGN\"] = 0x000F,\n [\"RFPLGT4_SW4_MODE\"] = 0x0010,\n [\"RFPLGT4_ARP_SW\"] = 0x0011,\n [\"RFPLGT4_ARP_HOLD\"] = 0x0012,\n [\"RFPLGT4_ARP_STYLE\"] = 0x0013,\n [\"RFPLGT4_ARP_VARIAT\"] = 0x0014,\n [\"RFPLGT4_ARP_MOTIF\"] = 0x0015,\n [\"RFPLGT4_ARP_ACCT_RATE\"] = 0x0016,\n [\"RFPLGT4_ARP_SHFL_RATE\"] = 0x0017,\n [\"RFPLGT4_ARP_SHFL_RESO\"] = 0x0018,\n [\"RFPLGT4_ARP_VELO\"] = 0x0019,\n [\"RFPLGT4_ARP_RANGE\"] = 0x001A,\n [\"RFPLGT4_ARP_KEY_TRIG\"] = 0x001B,\n\n [\"RFPC2_CATE\"] = 0x0010,\n [\"RFPC2_PHRASE_OCT\"] = 0x0013,\n [\"RFPC2_KEYWORD1\"] = 0x0014,\n [\"RFPC2_KEYWORD2\"] = 0x0015,\n [\"RFPC2_KEYWORD3\"] = 0x0016,\n [\"RFPC2_KEYWORD4\"] = 0x0017,\n [\"RFPC2_KEYWORD5\"] = 0x0018,\n [\"RFPC2_KEYWORD6\"] = 0x0019,\n [\"RFPC2_KEYWORD7\"] = 0x001A,\n [\"RFPC2_KEYWORD8\"] = 0x001B,\n [\"RFPC2_KEYWORD9\"] = 0x001C,\n [\"RFPC2_KEYWORD10\"] = 0x001D,\n [\"RFPC2_KEYWORD11\"] = 0x001E,\n [\"RFPC2_KEYWORD12\"] = 0x001F,\n [\"RFPC2_KEYWORD13\"] = 0x0020,\n [\"RFPC2_KEYWORD14\"] = 0x0021,\n [\"RFPC2_KEYWORD15\"] = 0x0022,\n [\"RFPC2_KEYWORD16\"] = 0x0023,\n [\"RFPC2_KEYWORD17\"] = 0x0024,\n [\"RFPC2_KEYWORD18\"] = 0x0025,\n [\"RFPC2_KEYWORD19\"] = 0x0026,\n [\"RFPC2_KEYWORD20\"] = 0x0027,\n [\"RFPC2_KEYWORD21\"] = 0x0028,\n [\"RFPC2_KEYWORD22\"] = 0x0029,\n [\"RFPC2_KEYWORD23\"] = 0x002A,\n [\"RFPC2_KEYWORD24\"] = 0x002B,\n [\"RFPC2_KEYWORD25\"] = 0x002C,\n [\"RFPC2_KEYWORD26\"] = 0x002D,\n [\"RFPC2_KEYWORD27\"] = 0x002E,\n [\"RFPC2_KEYWORD28\"] = 0x002F,\n [\"RFPC2_KEYWORD29\"] = 0x0030,\n [\"RFPC2_KEYWORD30\"] = 0x0031,\n [\"RFPC2_KEYWORD31\"] = 0x0032,\n [\"RFPC2_TFX_SW\"] = 0x0033,\n [\"RFPC2_META1\"] = 0x0034,\n [\"RFPC2_META2\"] = 0x0035,\n [\"RFPC2_META3\"] = 0x0036,\n [\"RFPC2_META4\"] = 0x0037,\n [\"RFPC2_PHRASE\"] = 0x0038,\n\n [\"RFPTM_MOD_PRM1\"] = 0x0001,\n [\"RFPTM_MOD_PRM2\"] = 0x0002,\n [\"RFPTM_MOD_PRM3\"] = 0x0003,\n [\"RFPTM_MOD_PRM4\"] = 0x0004,\n [\"RFPTM_MOD_PRM5\"] = 0x0005,\n [\"RFPTM_MOD_PRM6\"] = 0x0006,\n [\"RFPTM_MOD_PRM7\"] = 0x0007,\n [\"RFPTM_MOD_PRM8\"] = 0x0008,\n [\"RFPTM_MOD_PRM9\"] = 0x0009,\n [\"RFPTM_MOD_PRM10\"] = 0x000A,\n [\"RFPTM_MOD_PRM11\"] = 0x000B,\n [\"RFPTM_MOD_PRM12\"] = 0x000C,\n [\"RFPTM_MOD_PRM13\"] = 0x000D,\n [\"RFPTM_MOD_PRM14\"] = 0x000E,\n [\"RFPTM_MOD_PRM15\"] = 0x000F,\n [\"RFPTM_MOD_PRM16\"] = 0x0010,\n [\"RFPTM_MOD_PRM17\"] = 0x0011,\n [\"RFPTM_MOD_PRM18\"] = 0x0012,\n [\"RFPTM_MOD_PRM19\"] = 0x0013,\n [\"RFPTM_MOD_PRM20\"] = 0x0014,\n [\"RFPTM_MOD_PRM21\"] = 0x0015,\n [\"RFPTM_MOD_PRM22\"] = 0x0016,\n [\"RFPTM_MOD_PRM23\"] = 0x0017,\n [\"RFPTM_MOD_PRM24\"] = 0x0018,\n [\"RFPTM_MOD_PRM25\"] = 0x0019,\n [\"RFPTM_MOD_PRM26\"] = 0x001A,\n [\"RFPTM_MOD_PRM27\"] = 0x001B,\n [\"RFPTM_MOD_PRM28\"] = 0x001C,\n [\"RFPTM_MOD_PRM29\"] = 0x001D,\n [\"RFPTM_MOD_PRM30\"] = 0x001E,\n [\"RFPTM_MOD_PRM31\"] = 0x001F,\n [\"RFPTM_MOD_PRM32\"] = 0x0020,\n\n [\"RFRC_NAME\"] = 0x0000,\n [\"RFRC_LEVEL\"] = 0x000C,\n\n [\"RFRF_MFX_TYPE\"] = 0x0000,\n [\"RFRF_MFX_DRY_SEND\"] = 0x0001,\n [\"RFRF_MFX_CHO_SEND\"] = 0x0002,\n [\"RFRF_MFX_REV_SEND\"] = 0x0003,\n [\"RFRF_MFX_CTRL1_SRC\"] = 0x0005,\n [\"RFRF_MFX_CTRL1_SENS\"] = 0x0006,\n [\"RFRF_MFX_CTRL2_SRC\"] = 0x0007,\n [\"RFRF_MFX_CTRL2_SENS\"] = 0x0008,\n [\"RFRF_MFX_CTRL3_SRC\"] = 0x0009,\n [\"RFRF_MFX_CTRL3_SENS\"] = 0x000A,\n [\"RFRF_MFX_CTRL4_SRC\"] = 0x000B,\n [\"RFRF_MFX_CTRL4_SENS\"] = 0x000C,\n [\"RFRF_MFX_CTRL_ASGN1\"] = 0x000D,\n [\"RFRF_MFX_CTRL_ASGN2\"] = 0x000E,\n [\"RFRF_MFX_CTRL_ASGN3\"] = 0x000F,\n [\"RFRF_MFX_CTRL_ASGN4\"] = 0x0010,\n [\"RFRF_MFX_PRM1\"] = 0x0011,\n [\"RFRF_MFX_PRM2\"] = 0x0015,\n [\"RFRF_MFX_PRM3\"] = 0x0019,\n [\"RFRF_MFX_PRM4\"] = 0x001D,\n [\"RFRF_MFX_PRM5\"] = 0x0021,\n [\"RFRF_MFX_PRM6\"] = 0x0025,\n [\"RFRF_MFX_PRM7\"] = 0x0029,\n [\"RFRF_MFX_PRM8\"] = 0x002D,\n [\"RFRF_MFX_PRM9\"] = 0x0031,\n [\"RFRF_MFX_PRM10\"] = 0x0035,\n [\"RFRF_MFX_PRM11\"] = 0x0039,\n [\"RFRF_MFX_PRM12\"] = 0x003D,\n [\"RFRF_MFX_PRM13\"] = 0x0041,\n [\"RFRF_MFX_PRM14\"] = 0x0045,\n [\"RFRF_MFX_PRM15\"] = 0x0049,\n [\"RFRF_MFX_PRM16\"] = 0x004D,\n [\"RFRF_MFX_PRM17\"] = 0x0051,\n [\"RFRF_MFX_PRM18\"] = 0x0055,\n [\"RFRF_MFX_PRM19\"] = 0x0059,\n [\"RFRF_MFX_PRM20\"] = 0x005D,\n [\"RFRF_MFX_PRM21\"] = 0x0061,\n [\"RFRF_MFX_PRM22\"] = 0x0065,\n [\"RFRF_MFX_PRM23\"] = 0x0069,\n [\"RFRF_MFX_PRM24\"] = 0x006D,\n [\"RFRF_MFX_PRM25\"] = 0x0071,\n [\"RFRF_MFX_PRM26\"] = 0x0075,\n [\"RFRF_MFX_PRM27\"] = 0x0079,\n [\"RFRF_MFX_PRM28\"] = 0x007D,\n [\"RFRF_MFX_PRM29\"] = 0x0101,\n [\"RFRF_MFX_PRM30\"] = 0x0105,\n [\"RFRF_MFX_PRM31\"] = 0x0109,\n [\"RFRF_MFX_PRM32\"] = 0x010D,\n\n [\"RFRCQ_COMP1_SW\"] = 0x0000,\n [\"RFRCQ_COMP1_ATTACK\"] = 0x0001,\n [\"RFRCQ_COMP1_RELEASE\"] = 0x0002,\n [\"RFRCQ_COMP1_THRESHOLD\"] = 0x0003,\n [\"RFRCQ_COMP1_RATIO\"] = 0x0004,\n [\"RFRCQ_COMP1_POSTGAIN\"] = 0x0005,\n [\"RFRCQ_EQ1_SW\"] = 0x0006,\n [\"RFRCQ_EQ1_LOWFREQ\"] = 0x0007,\n [\"RFRCQ_EQ1_LOWGAIN\"] = 0x0008,\n [\"RFRCQ_EQ1_MIDFREQ\"] = 0x0009,\n [\"RFRCQ_EQ1_MIDGAIN\"] = 0x000A,\n [\"RFRCQ_EQ1_MIDQ\"] = 0x000B,\n [\"RFRCQ_EQ1_HIGHFREQ\"] = 0x000C,\n [\"RFRCQ_EQ1_HIGHGAIN\"] = 0x000D,\n [\"RFRCQ_COMP2_SW\"] = 0x000E,\n [\"RFRCQ_COMP2_ATTACK\"] = 0x000F,\n [\"RFRCQ_COMP2_RELEASE\"] = 0x0010,\n [\"RFRCQ_COMP2_THRESHOLD\"] = 0x0011,\n [\"RFRCQ_COMP2_RATIO\"] = 0x0012,\n [\"RFRCQ_COMP2_POSTGAIN\"] = 0x0013,\n [\"RFRCQ_EQ2_SW\"] = 0x0014,\n [\"RFRCQ_EQ2_LOWFREQ\"] = 0x0015,\n [\"RFRCQ_EQ2_LOWGAIN\"] = 0x0016,\n [\"RFRCQ_EQ2_MIDFREQ\"] = 0x0017,\n [\"RFRCQ_EQ2_MIDGAIN\"] = 0x0018,\n [\"RFRCQ_EQ2_MIDQ\"] = 0x0019,\n [\"RFRCQ_EQ2_HIGHFREQ\"] = 0x001A,\n [\"RFRCQ_EQ2_HIGHGAIN\"] = 0x001B,\n [\"RFRCQ_COMP3_SW\"] = 0x001C,\n [\"RFRCQ_COMP3_ATTACK\"] = 0x001D,\n [\"RFRCQ_COMP3_RELEASE\"] = 0x001E,\n [\"RFRCQ_COMP3_THRESHOLD\"] = 0x001F,\n [\"RFRCQ_COMP3_RATIO\"] = 0x0020,\n [\"RFRCQ_COMP3_POSTGAIN\"] = 0x0021,\n [\"RFRCQ_EQ3_SW\"] = 0x0022,\n [\"RFRCQ_EQ3_LOWFREQ\"] = 0x0023,\n [\"RFRCQ_EQ3_LOWGAIN\"] = 0x0024,\n [\"RFRCQ_EQ3_MIDFREQ\"] = 0x0025,\n [\"RFRCQ_EQ3_MIDGAIN\"] = 0x0026,\n [\"RFRCQ_EQ3_MIDQ\"] = 0x0027,\n [\"RFRCQ_EQ3_HIGHFREQ\"] = 0x0028,\n [\"RFRCQ_EQ3_HIGHGAIN\"] = 0x0029,\n [\"RFRCQ_COMP4_SW\"] = 0x002A,\n [\"RFRCQ_COMP4_ATTACK\"] = 0x002B,\n [\"RFRCQ_COMP4_RELEASE\"] = 0x002C,\n [\"RFRCQ_COMP4_THRESHOLD\"] = 0x002D,\n [\"RFRCQ_COMP4_RATIO\"] = 0x002E,\n [\"RFRCQ_COMP4_POSTGAIN\"] = 0x002F,\n [\"RFRCQ_EQ4_SW\"] = 0x0030,\n [\"RFRCQ_EQ4_LOWFREQ\"] = 0x0031,\n [\"RFRCQ_EQ4_LOWGAIN\"] = 0x0032,\n [\"RFRCQ_EQ4_MIDFREQ\"] = 0x0033,\n [\"RFRCQ_EQ4_MIDGAIN\"] = 0x0034,\n [\"RFRCQ_EQ4_MIDQ\"] = 0x0035,\n [\"RFRCQ_EQ4_HIGHFREQ\"] = 0x0036,\n [\"RFRCQ_EQ4_HIGHGAIN\"] = 0x0037,\n [\"RFRCQ_COMP5_SW\"] = 0x0038,\n [\"RFRCQ_COMP5_ATTACK\"] = 0x0039,\n [\"RFRCQ_COMP5_RELEASE\"] = 0x003A,\n [\"RFRCQ_COMP5_THRESHOLD\"] = 0x003B,\n [\"RFRCQ_COMP5_RATIO\"] = 0x003C,\n [\"RFRCQ_COMP5_POSTGAIN\"] = 0x003D,\n [\"RFRCQ_EQ5_SW\"] = 0x003E,\n [\"RFRCQ_EQ5_LOWFREQ\"] = 0x003F,\n [\"RFRCQ_EQ5_LOWGAIN\"] = 0x0040,\n [\"RFRCQ_EQ5_MIDFREQ\"] = 0x0041,\n [\"RFRCQ_EQ5_MIDGAIN\"] = 0x0042,\n [\"RFRCQ_EQ5_MIDQ\"] = 0x0043,\n [\"RFRCQ_EQ5_HIGHFREQ\"] = 0x0044,\n [\"RFRCQ_EQ5_HIGHGAIN\"] = 0x0045,\n [\"RFRCQ_COMP6_SW\"] = 0x0046,\n [\"RFRCQ_COMP6_ATTACK\"] = 0x0047,\n [\"RFRCQ_COMP6_RELEASE\"] = 0x0048,\n [\"RFRCQ_COMP6_THRESHOLD\"] = 0x0049,\n [\"RFRCQ_COMP6_RATIO\"] = 0x004A,\n [\"RFRCQ_COMP6_POSTGAIN\"] = 0x004B,\n [\"RFRCQ_EQ6_SW\"] = 0x004C,\n [\"RFRCQ_EQ6_LOWFREQ\"] = 0x004D,\n [\"RFRCQ_EQ6_LOWGAIN\"] = 0x004E,\n [\"RFRCQ_EQ6_MIDFREQ\"] = 0x004F,\n [\"RFRCQ_EQ6_MIDGAIN\"] = 0x0050,\n [\"RFRCQ_EQ6_MIDQ\"] = 0x0051,\n [\"RFRCQ_EQ6_HIGHFREQ\"] = 0x0052,\n [\"RFRCQ_EQ6_HIGHGAIN\"] = 0x0053,\n\n [\"RFRT_NAME\"] = 0x0000,\n [\"RFRT_ASGN_TYPE\"] = 0x000C,\n [\"RFRT_MUTE_GRP\"] = 0x000D,\n [\"RFRT_LEVEL\"] = 0x000E,\n [\"RFRT_SRC_KEY\"] = 0x000F,\n [\"RFRT_PIT_FINE\"] = 0x0010,\n [\"RFRT_PIT_RND\"] = 0x0011,\n [\"RFRT_PAN\"] = 0x0012,\n [\"RFRT_PAN_RND\"] = 0x0013,\n [\"RFRT_PAN_ALT\"] = 0x0014,\n [\"RFRT_ENV_MODE\"] = 0x0015,\n [\"RFRT_DRY_SEND\"] = 0x0016,\n [\"RFRT_CHO_SEND_A\"] = 0x0019,\n [\"RFRT_REV_SEND_A\"] = 0x001A,\n [\"RFRT_OUT_ASGN\"] = 0x001B,\n [\"RFRT_BEND_RANGE\"] = 0x001C,\n [\"RFRT_RX_EXPR\"] = 0x001D,\n [\"RFRT_RX_HOLD\"] = 0x001E,\n [\"RFRT_WMT_VELO_CTRL\"] = 0x0020,\n [\"RFRT_WMT1_SW\"] = 0x0021,\n [\"RFRT_WMT1_WAV_GTYPE\"] = 0x0022,\n [\"RFRT_WMT1_WAV_GID\"] = 0x0023,\n [\"RFRT_WMT1_WAV_NUML\"] = 0x0027,\n [\"RFRT_WMT1_WAV_NUMR\"] = 0x002B,\n [\"RFRT_WMT1_WAV_GAIN\"] = 0x002F,\n [\"RFRT_WMT1_FXM_SW\"] = 0x0030,\n [\"RFRT_WMT1_FXM_COLOR\"] = 0x0031,\n [\"RFRT_WMT1_FXM_DEPTH\"] = 0x0032,\n [\"RFRT_WMT1_TEMPO_SYNC\"] = 0x0033,\n [\"RFRT_WMT1_PIT_CRS\"] = 0x0034,\n [\"RFRT_WMT1_PIT_FINE\"] = 0x0035,\n [\"RFRT_WMT1_PAN\"] = 0x0036,\n [\"RFRT_WMT1_PAN_RND\"] = 0x0037,\n [\"RFRT_WMT1_PAN_ALT\"] = 0x0038,\n [\"RFRT_WMT1_LEVEL\"] = 0x0039,\n [\"RFRT_WMT1_VRANGE_LO\"] = 0x003A,\n [\"RFRT_WMT1_VRANGE_UP\"] = 0x003B,\n [\"RFRT_WMT1_VFADE_LO\"] = 0x003C,\n [\"RFRT_WMT1_VFADE_UP\"] = 0x003D,\n [\"RFRT_WMT2_SW\"] = 0x003E,\n [\"RFRT_WMT2_WAV_GTYPE\"] = 0x003F,\n [\"RFRT_WMT2_WAV_GID\"] = 0x0040,\n [\"RFRT_WMT2_WAV_NUML\"] = 0x0044,\n [\"RFRT_WMT2_WAV_NUMR\"] = 0x0048,\n [\"RFRT_WMT2_WAV_GAIN\"] = 0x004C,\n [\"RFRT_WMT2_FXM_SW\"] = 0x004D,\n [\"RFRT_WMT2_FXM_COLOR\"] = 0x004E,\n [\"RFRT_WMT2_FXM_DEPTH\"] = 0x004F,\n [\"RFRT_WMT2_TEMPO_SYNC\"] = 0x0050,\n [\"RFRT_WMT2_PIT_CRS\"] = 0x0051,\n [\"RFRT_WMT2_PIT_FINE\"] = 0x0052,\n [\"RFRT_WMT2_PAN\"] = 0x0053,\n [\"RFRT_WMT2_PAN_RND\"] = 0x0054,\n [\"RFRT_WMT2_PAN_ALT\"] = 0x0055,\n [\"RFRT_WMT2_LEVEL\"] = 0x0056,\n [\"RFRT_WMT2_VRANGE_LO\"] = 0x0057,\n [\"RFRT_WMT2_VRANGE_UP\"] = 0x0058,\n [\"RFRT_WMT2_VFADE_LO\"] = 0x0059,\n [\"RFRT_WMT2_VFADE_UP\"] = 0x005A,\n [\"RFRT_WMT3_SW\"] = 0x005B,\n [\"RFRT_WMT3_WAV_GTYPE\"] = 0x005C,\n [\"RFRT_WMT3_WAV_GID\"] = 0x005D,\n [\"RFRT_WMT3_WAV_NUML\"] = 0x0061,\n [\"RFRT_WMT3_WAV_NUMR\"] = 0x0065,\n [\"RFRT_WMT3_WAV_GAIN\"] = 0x0069,\n [\"RFRT_WMT3_FXM_SW\"] = 0x006A,\n [\"RFRT_WMT3_FXM_COLOR\"] = 0x006B,\n [\"RFRT_WMT3_FXM_DEPTH\"] = 0x006C,\n [\"RFRT_WMT3_TEMPO_SYNC\"] = 0x006D,\n [\"RFRT_WMT3_PIT_CRS\"] = 0x006E,\n [\"RFRT_WMT3_PIT_FINE\"] = 0x006F,\n [\"RFRT_WMT3_PAN\"] = 0x0070,\n [\"RFRT_WMT3_PAN_RND\"] = 0x0071,\n [\"RFRT_WMT3_PAN_ALT\"] = 0x0072,\n [\"RFRT_WMT3_LEVEL\"] = 0x0073,\n [\"RFRT_WMT3_VRANGE_LO\"] = 0x0074,\n [\"RFRT_WMT3_VRANGE_UP\"] = 0x0075,\n [\"RFRT_WMT3_VFADE_LO\"] = 0x0076,\n [\"RFRT_WMT3_VFADE_UP\"] = 0x0077,\n [\"RFRT_WMT4_SW\"] = 0x0078,\n [\"RFRT_WMT4_WAV_GTYPE\"] = 0x0079,\n [\"RFRT_WMT4_WAV_GID\"] = 0x007A,\n [\"RFRT_WMT4_WAV_NUML\"] = 0x007E,\n [\"RFRT_WMT4_WAV_NUMR\"] = 0x0102,\n [\"RFRT_WMT4_WAV_GAIN\"] = 0x0106,\n [\"RFRT_WMT4_FXM_SW\"] = 0x0107,\n [\"RFRT_WMT4_FXM_COLOR\"] = 0x0108,\n [\"RFRT_WMT4_FXM_DEPTH\"] = 0x0109,\n [\"RFRT_WMT4_TEMPO_SYNC\"] = 0x010A,\n [\"RFRT_WMT4_PIT_CRS\"] = 0x010B,\n [\"RFRT_WMT4_PIT_FINE\"] = 0x010C,\n [\"RFRT_WMT4_PAN\"] = 0x010D,\n [\"RFRT_WMT4_PAN_RND\"] = 0x010E,\n [\"RFRT_WMT4_PAN_ALT\"] = 0x010F,\n [\"RFRT_WMT4_LEVEL\"] = 0x0110,\n [\"RFRT_WMT4_VRANGE_LO\"] = 0x0111,\n [\"RFRT_WMT4_VRANGE_UP\"] = 0x0112,\n [\"RFRT_WMT4_VFADE_LO\"] = 0x0113,\n [\"RFRT_WMT4_VFADE_UP\"] = 0x0114,\n [\"RFRT_PENV_DEPTH\"] = 0x0115,\n [\"RFRT_PENV_VSENS\"] = 0x0116,\n [\"RFRT_PENV_T1_VSENS\"] = 0x0117,\n [\"RFRT_PENV_T4_VSENS\"] = 0x0118,\n [\"RFRT_PENV_T1\"] = 0x0119,\n [\"RFRT_PENV_T2\"] = 0x011A,\n [\"RFRT_PENV_T3\"] = 0x011B,\n [\"RFRT_PENV_T4\"] = 0x011C,\n [\"RFRT_PENV_L0\"] = 0x011D,\n [\"RFRT_PENV_L1\"] = 0x011E,\n [\"RFRT_PENV_L2\"] = 0x011F,\n [\"RFRT_PENV_L3\"] = 0x0120,\n [\"RFRT_PENV_L4\"] = 0x0121,\n [\"RFRT_FILTER_TYPE\"] = 0x0122,\n [\"RFRT_CUTOFF\"] = 0x0123,\n [\"RFRT_CUTOFF_VCRV\"] = 0x0124,\n [\"RFRT_CUTOFF_VSENS\"] = 0x0125,\n [\"RFRT_RESO\"] = 0x0126,\n [\"RFRT_RESO_VSENS\"] = 0x0127,\n [\"RFRT_FENV_DEPTH\"] = 0x0128,\n [\"RFRT_FENV_VCRV\"] = 0x0129,\n [\"RFRT_FENV_VSENS\"] = 0x012A,\n [\"RFRT_FENV_T1_VSENS\"] = 0x012B,\n [\"RFRT_FENV_T4_VSENS\"] = 0x012C,\n [\"RFRT_FENV_T1\"] = 0x012D,\n [\"RFRT_FENV_T2\"] = 0x012E,\n [\"RFRT_FENV_T3\"] = 0x012F,\n [\"RFRT_FENV_T4\"] = 0x0130,\n [\"RFRT_FENV_L0\"] = 0x0131,\n [\"RFRT_FENV_L1\"] = 0x0132,\n [\"RFRT_FENV_L2\"] = 0x0133,\n [\"RFRT_FENV_L3\"] = 0x0134,\n [\"RFRT_FENV_L4\"] = 0x0135,\n [\"RFRT_LEVEL_VCRV\"] = 0x0136,\n [\"RFRT_LEVEL_VSENS\"] = 0x0137,\n [\"RFRT_AENV_T1_VSENS\"] = 0x0138,\n [\"RFRT_AENV_T4_VSENS\"] = 0x0139,\n [\"RFRT_AENV_T1\"] = 0x013A,\n [\"RFRT_AENV_T2\"] = 0x013B,\n [\"RFRT_AENV_T3\"] = 0x013C,\n [\"RFRT_AENV_T4\"] = 0x013D,\n [\"RFRT_AENV_L1\"] = 0x013E,\n [\"RFRT_AENV_L2\"] = 0x013F,\n [\"RFRT_AENV_L3\"] = 0x0140,\n [\"RFRT_ONE_SHOT\"] = 0x0141,\n [\"RFRT_LEVEL_MOD\"] = 0x0142,\n\n [\"RFRLGT4_BEAM_SW\"] = 0x0000,\n [\"RFRLGT4_BEAM_ASGN\"] = 0x0001,\n [\"RFRLGT4_BEAM_POL\"] = 0x0002,\n [\"RFRLGT4_BEAM_RANGE_LO\"] = 0x0003,\n [\"RFRLGT4_BEAM_RANGE_UP\"] = 0x0004,\n [\"RFRLGT4_KNOB1_ASGN\"] = 0x0005,\n [\"RFRLGT4_KNOB2_ASGN\"] = 0x0006,\n [\"RFRLGT4_KNOB3_ASGN\"] = 0x0007,\n [\"RFRLGT4_KNOB4_ASGN\"] = 0x0008,\n [\"RFRLGT4_SW1_ASGN\"] = 0x0009,\n [\"RFRLGT4_SW1_MODE\"] = 0x000A,\n [\"RFRLGT4_SW2_ASGN\"] = 0x000B,\n [\"RFRLGT4_SW2_MODE\"] = 0x000C,\n [\"RFRLGT4_SW3_ASGN\"] = 0x000D,\n [\"RFRLGT4_SW3_MODE\"] = 0x000E,\n [\"RFRLGT4_SW4_ASGN\"] = 0x000F,\n [\"RFRLGT4_SW4_MODE\"] = 0x0010,\n [\"RFRLGT4_PTN_SW\"] = 0x0011,\n [\"RFRLGT4_PTN_HOLD\"] = 0x0012,\n [\"RFRLGT4_PTN_STYLE\"] = 0x0013,\n [\"RFRLGT4_PTN_ACCT_RATE\"] = 0x0014,\n [\"RFRLGT4_PTN_SHFL_RATE\"] = 0x0015,\n [\"RFRLGT4_PTN_SHFL_RESO\"] = 0x0016,\n [\"RFRLGT4_PTN_VELO\"] = 0x0017,\n [\"RFRLGT4_PTN_NOTE_ASGN\"] = 0x0018,\n [\"RFRLGT4_PTN_KEY_TRIG\"] = 0x0019,\n\n [\"RFRC2_PHRASE\"] = 0x0010,\n [\"RFRC2_KEYWORD1\"] = 0x0012,\n [\"RFRC2_KEYWORD2\"] = 0x0013,\n [\"RFRC2_KEYWORD3\"] = 0x0014,\n [\"RFRC2_KEYWORD4\"] = 0x0015,\n [\"RFRC2_KEYWORD5\"] = 0x0016,\n [\"RFRC2_KEYWORD6\"] = 0x0017,\n [\"RFRC2_KEYWORD7\"] = 0x0018,\n [\"RFRC2_KEYWORD8\"] = 0x0019,\n [\"RFRC2_KEYWORD9\"] = 0x001A,\n [\"RFRC2_KEYWORD10\"] = 0x001B,\n [\"RFRC2_KEYWORD11\"] = 0x001C,\n [\"RFRC2_KEYWORD12\"] = 0x001D,\n [\"RFRC2_KEYWORD13\"] = 0x001E,\n [\"RFRC2_KEYWORD14\"] = 0x001F,\n [\"RFRC2_KEYWORD15\"] = 0x0020,\n [\"RFRC2_KEYWORD16\"] = 0x0021,\n [\"RFRC2_KEYWORD17\"] = 0x0022,\n [\"RFRC2_KEYWORD18\"] = 0x0023,\n [\"RFRC2_KEYWORD19\"] = 0x0024,\n [\"RFRC2_KEYWORD20\"] = 0x0025,\n [\"RFRC2_KEYWORD21\"] = 0x0026,\n [\"RFRC2_KEYWORD22\"] = 0x0027,\n [\"RFRC2_KEYWORD23\"] = 0x0028,\n [\"RFRC2_KEYWORD24\"] = 0x0029,\n [\"RFRC2_KEYWORD25\"] = 0x002A,\n [\"RFRC2_KEYWORD26\"] = 0x002B,\n [\"RFRC2_KEYWORD27\"] = 0x002C,\n [\"RFRC2_KEYWORD28\"] = 0x002D,\n [\"RFRC2_KEYWORD29\"] = 0x002E,\n [\"RFRC2_KEYWORD30\"] = 0x002F,\n [\"RFRC2_KEYWORD31\"] = 0x0030,\n [\"RFRC2_TFX_SW\"] = 0x0031,\n\n [\"RFRTM_MOD_PRM1\"] = 0x0001,\n [\"RFRTM_MOD_PRM2\"] = 0x0002,\n [\"RFRTM_MOD_PRM3\"] = 0x0003,\n [\"RFRTM_MOD_PRM4\"] = 0x0004,\n [\"RFRTM_MOD_PRM5\"] = 0x0005,\n [\"RFRTM_MOD_PRM6\"] = 0x0006,\n [\"RFRTM_MOD_PRM7\"] = 0x0007,\n [\"RFRTM_MOD_PRM8\"] = 0x0008,\n [\"RFRTM_MOD_PRM9\"] = 0x0009,\n [\"RFRTM_MOD_PRM10\"] = 0x000A,\n [\"RFRTM_MOD_PRM11\"] = 0x000B,\n [\"RFRTM_MOD_PRM12\"] = 0x000C,\n [\"RFRTM_MOD_PRM13\"] = 0x000D,\n [\"RFRTM_MOD_PRM14\"] = 0x000E,\n [\"RFRTM_MOD_PRM15\"] = 0x000F,\n [\"RFRTM_MOD_PRM16\"] = 0x0010,\n [\"RFRTM_MOD_PRM17\"] = 0x0011,\n [\"RFRTM_MOD_PRM18\"] = 0x0012,\n [\"RFRTM_MOD_PRM19\"] = 0x0013,\n [\"RFRTM_MOD_PRM20\"] = 0x0014,\n [\"RFRTM_MOD_PRM21\"] = 0x0015,\n [\"RFRTM_MOD_PRM22\"] = 0x0016,\n [\"RFRTM_MOD_PRM23\"] = 0x0017,\n [\"RFRTM_MOD_PRM24\"] = 0x0018,\n [\"RFRTM_MOD_PRM25\"] = 0x0019,\n [\"RFRTM_MOD_PRM26\"] = 0x001A,\n [\"RFRTM_MOD_PRM27\"] = 0x001B,\n [\"RFRTM_MOD_PRM28\"] = 0x001C,\n [\"RFRTM_MOD_PRM29\"] = 0x001D,\n [\"RFRTM_MOD_PRM30\"] = 0x001E,\n [\"RFRTM_MOD_PRM31\"] = 0x001F,\n [\"RFRTM_MOD_PRM32\"] = 0x0020,\n\n [\"SHPC_NAME\"] = 0x0000,\n [\"SHPC_LEVEL\"] = 0x000C,\n [\"SHPC_PORT_SW\"] = 0x0012,\n [\"SHPC_PORT_TIME\"] = 0x0013,\n [\"SHPC_MONO_SW\"] = 0x0014,\n [\"SHPC_OCTAVE\"] = 0x0015,\n [\"SHPC_BEND_RANGE_UP\"] = 0x0016,\n [\"SHPC_BEND_RANGE_DW\"] = 0x0017,\n [\"SHPC_TONE1_SW\"] = 0x0019,\n [\"SHPC_TONE1_SEL\"] = 0x001A,\n [\"SHPC_TONE2_SW\"] = 0x001B,\n [\"SHPC_TONE2_SEL\"] = 0x001C,\n [\"SHPC_TONE3_SW\"] = 0x001D,\n [\"SHPC_TONE3_SEL\"] = 0x001E,\n [\"SHPC_SYNC_RING_SEL\"] = 0x001F,\n [\"SHPC_TFX_SW\"] = 0x0020,\n [\"SHPC_UNISON\"] = 0x002E,\n [\"SHPC_PORT_MODE\"] = 0x0031,\n [\"SHPC_LEGATO_SW\"] = 0x0032,\n [\"SHPC_ANALOG_FEEL\"] = 0x0034,\n [\"SHPC_CROSS_MOD\"] = 0x0035,\n [\"SHPC_CATE\"] = 0x0036,\n [\"SHPC_PHRASE\"] = 0x0037,\n [\"SHPC_PHRASE_OCT\"] = 0x003B,\n [\"SHPC_UNISON_SIZE\"] = 0x003C,\n\n [\"SHPF_MFX_TYPE\"] = 0x0000,\n [\"SHPF_MFX_DRY_SEND\"] = 0x0001,\n [\"SHPF_MFX_CHO_SEND\"] = 0x0002,\n [\"SHPF_MFX_REV_SEND\"] = 0x0003,\n [\"SHPF_MFX_CTRL1_SRC\"] = 0x0005,\n [\"SHPF_MFX_CTRL1_SENS\"] = 0x0006,\n [\"SHPF_MFX_CTRL2_SRC\"] = 0x0007,\n [\"SHPF_MFX_CTRL2_SENS\"] = 0x0008,\n [\"SHPF_MFX_CTRL3_SRC\"] = 0x0009,\n [\"SHPF_MFX_CTRL3_SENS\"] = 0x000A,\n [\"SHPF_MFX_CTRL4_SRC\"] = 0x000B,\n [\"SHPF_MFX_CTRL4_SENS\"] = 0x000C,\n [\"SHPF_MFX_CTRL_ASGN1\"] = 0x000D,\n [\"SHPF_MFX_CTRL_ASGN2\"] = 0x000E,\n [\"SHPF_MFX_CTRL_ASGN3\"] = 0x000F,\n [\"SHPF_MFX_CTRL_ASGN4\"] = 0x0010,\n [\"SHPF_MFX_PRM1\"] = 0x0011,\n [\"SHPF_MFX_PRM2\"] = 0x0015,\n [\"SHPF_MFX_PRM3\"] = 0x0019,\n [\"SHPF_MFX_PRM4\"] = 0x001D,\n [\"SHPF_MFX_PRM5\"] = 0x0021,\n [\"SHPF_MFX_PRM6\"] = 0x0025,\n [\"SHPF_MFX_PRM7\"] = 0x0029,\n [\"SHPF_MFX_PRM8\"] = 0x002D,\n [\"SHPF_MFX_PRM9\"] = 0x0031,\n [\"SHPF_MFX_PRM10\"] = 0x0035,\n [\"SHPF_MFX_PRM11\"] = 0x0039,\n [\"SHPF_MFX_PRM12\"] = 0x003D,\n [\"SHPF_MFX_PRM13\"] = 0x0041,\n [\"SHPF_MFX_PRM14\"] = 0x0045,\n [\"SHPF_MFX_PRM15\"] = 0x0049,\n [\"SHPF_MFX_PRM16\"] = 0x004D,\n [\"SHPF_MFX_PRM17\"] = 0x0051,\n [\"SHPF_MFX_PRM18\"] = 0x0055,\n [\"SHPF_MFX_PRM19\"] = 0x0059,\n [\"SHPF_MFX_PRM20\"] = 0x005D,\n [\"SHPF_MFX_PRM21\"] = 0x0061,\n [\"SHPF_MFX_PRM22\"] = 0x0065,\n [\"SHPF_MFX_PRM23\"] = 0x0069,\n [\"SHPF_MFX_PRM24\"] = 0x006D,\n [\"SHPF_MFX_PRM25\"] = 0x0071,\n [\"SHPF_MFX_PRM26\"] = 0x0075,\n [\"SHPF_MFX_PRM27\"] = 0x0079,\n [\"SHPF_MFX_PRM28\"] = 0x007D,\n [\"SHPF_MFX_PRM29\"] = 0x0101,\n [\"SHPF_MFX_PRM30\"] = 0x0105,\n [\"SHPF_MFX_PRM31\"] = 0x0109,\n [\"SHPF_MFX_PRM32\"] = 0x010D,\n\n [\"SHPTM_MOD_PRM1\"] = 0x0001,\n [\"SHPTM_MOD_PRM2\"] = 0x0002,\n [\"SHPTM_MOD_PRM3\"] = 0x0003,\n [\"SHPTM_MOD_PRM4\"] = 0x0004,\n [\"SHPTM_MOD_PRM5\"] = 0x0005,\n [\"SHPTM_MOD_PRM6\"] = 0x0006,\n [\"SHPTM_MOD_PRM7\"] = 0x0007,\n [\"SHPTM_MOD_PRM8\"] = 0x0008,\n [\"SHPTM_MOD_PRM9\"] = 0x0009,\n [\"SHPTM_MOD_PRM10\"] = 0x000A,\n [\"SHPTM_MOD_PRM11\"] = 0x000B,\n [\"SHPTM_MOD_PRM12\"] = 0x000C,\n [\"SHPTM_MOD_PRM13\"] = 0x000D,\n [\"SHPTM_MOD_PRM14\"] = 0x000E,\n [\"SHPTM_MOD_PRM15\"] = 0x000F,\n [\"SHPTM_MOD_PRM16\"] = 0x0010,\n [\"SHPTM_MOD_PRM17\"] = 0x0011,\n [\"SHPTM_MOD_PRM18\"] = 0x0012,\n [\"SHPTM_MOD_PRM19\"] = 0x0013,\n [\"SHPTM_MOD_PRM20\"] = 0x0014,\n [\"SHPTM_MOD_PRM21\"] = 0x0015,\n [\"SHPTM_MOD_PRM22\"] = 0x0016,\n [\"SHPTM_MOD_PRM23\"] = 0x0017,\n [\"SHPTM_MOD_PRM24\"] = 0x0018,\n [\"SHPTM_MOD_PRM25\"] = 0x0019,\n [\"SHPTM_MOD_PRM26\"] = 0x001A,\n [\"SHPTM_MOD_PRM27\"] = 0x001B,\n [\"SHPTM_MOD_PRM28\"] = 0x001C,\n [\"SHPTM_MOD_PRM29\"] = 0x001D,\n [\"SHPTM_MOD_PRM30\"] = 0x001E,\n [\"SHPTM_MOD_PRM31\"] = 0x001F,\n [\"SHPTM_MOD_PRM32\"] = 0x0020,\n\n [\"SHPT_OSC_WAVE\"] = 0x0000,\n [\"SHPT_OSC_WAVE_VAR\"] = 0x0001,\n [\"SHPT_OSC_PIT_CRS\"] = 0x0003,\n [\"SHPT_OSC_PIT_DETUNE\"] = 0x0004,\n [\"SHPT_OSC_PWM\"] = 0x0005,\n [\"SHPT_OSC_PW\"] = 0x0006,\n [\"SHPT_OSC_PENV_ATK\"] = 0x0007,\n [\"SHPT_OSC_PENV_DCY\"] = 0x0008,\n [\"SHPT_OSC_PENV_DEPTH\"] = 0x0009,\n [\"SHPT_FILT_MODE\"] = 0x000A,\n [\"SHPT_FILT_SLOPE\"] = 0x000B,\n [\"SHPT_FILT_FREQ\"] = 0x000C,\n [\"SHPT_FILT_FREQ_KF\"] = 0x000D,\n [\"SHPT_FILT_ENV_VSENS\"] = 0x000E,\n [\"SHPT_FILT_RESO\"] = 0x000F,\n [\"SHPT_FILT_ENV_ATK\"] = 0x0010,\n [\"SHPT_FILT_ENV_DCY\"] = 0x0011,\n [\"SHPT_FILT_ENV_SUS\"] = 0x0012,\n [\"SHPT_FILT_ENV_REL\"] = 0x0013,\n [\"SHPT_FILT_ENV_DEPTH\"] = 0x0014,\n [\"SHPT_AMP_LEVEL\"] = 0x0015,\n [\"SHPT_AMP_LEVEL_VSENS\"] = 0x0016,\n [\"SHPT_AMP_ENV_ATK\"] = 0x0017,\n [\"SHPT_AMP_ENV_DCY\"] = 0x0018,\n [\"SHPT_AMP_ENV_SUS\"] = 0x0019,\n [\"SHPT_AMP_ENV_REL\"] = 0x001A,\n [\"SHPT_AMP_PAN\"] = 0x001B,\n [\"SHPT_LFO_SHAPE\"] = 0x001C,\n [\"SHPT_LFO_RATE\"] = 0x001D,\n [\"SHPT_LFO_SYNC_SW\"] = 0x001E,\n [\"SHPT_LFO_SYNC_NOTE\"] = 0x001F,\n [\"SHPT_LFO_FADE\"] = 0x0020,\n [\"SHPT_LFO_KEY_TRIG\"] = 0x0021,\n [\"SHPT_LFO_PITCH_MOD\"] = 0x0022,\n [\"SHPT_LFO_FILTER_MOD\"] = 0x0023,\n [\"SHPT_LFO_AMP_MOD\"] = 0x0024,\n [\"SHPT_LFO_PAN_MOD\"] = 0x0025,\n [\"SHPT_MLFO_SHAPE\"] = 0x0026,\n [\"SHPT_MLFO_RATE\"] = 0x0027,\n [\"SHPT_MLFO_SYNC_SW\"] = 0x0028,\n [\"SHPT_MLFO_SYNC_NOTE\"] = 0x0029,\n [\"SHPT_OSC_PW_SHIFT\"] = 0x002A,\n [\"SHPT_MLFO_PITCH_MOD\"] = 0x002C,\n [\"SHPT_MLFO_FILTER_MOD\"] = 0x002D,\n [\"SHPT_MLFO_AMP_MOD\"] = 0x002E,\n [\"SHPT_MLFO_PAN_MOD\"] = 0x002F,\n [\"SHPT_AFT_CUTOFF_SENS\"] = 0x0030,\n [\"SHPT_AFT_LEVEL_SENS\"] = 0x0031,\n [\"SHPT_WAV_GAIN\"] = 0x0034,\n [\"SHPT_WAV_NUML\"] = 0x0035,\n [\"SHPT_HPF_CUTOFF\"] = 0x0039,\n [\"SHPT_SSAW_DETUNE\"] = 0x003A,\n [\"SHPT_MLFO_RATE_MOD\"] = 0x003B,\n [\"SHPT_BIAS_LEVEL\"] = 0x003C,\n\n [\"SNTC_NAME\"] = 0x0000,\n [\"SNTC_TONE_LEVEL\"] = 0x0010,\n [\"SNTC_MONO_POLY\"] = 0x0011,\n [\"SNTC_PORT_TIME\"] = 0x0012,\n [\"SNTC_CUTOFF_OFST\"] = 0x0013,\n [\"SNTC_RESO_OFST\"] = 0x0014,\n [\"SNTC_ATK_OFST\"] = 0x0015,\n [\"SNTC_REL_OFST\"] = 0x0016,\n [\"SNTC_VIB_RATE\"] = 0x0017,\n [\"SNTC_VIB_DEPTH\"] = 0x0018,\n [\"SNTC_VIB_DELAY\"] = 0x0019,\n [\"SNTC_OCTAVE\"] = 0x001A,\n [\"SNTC_CATE\"] = 0x001B,\n [\"SNTC_PHRASE\"] = 0x001C,\n [\"SNTC_PHRASE_OCT\"] = 0x001E,\n [\"SNTC_TFX_SW\"] = 0x001F,\n [\"SNTC_INST_BS_LSB\"] = 0x0020,\n [\"SNTC_INST_BS_PC\"] = 0x0021,\n [\"SNTC_MOD_PRM1\"] = 0x0022,\n [\"SNTC_MOD_PRM2\"] = 0x0023,\n [\"SNTC_MOD_PRM3\"] = 0x0024,\n [\"SNTC_MOD_PRM4\"] = 0x0025,\n [\"SNTC_MOD_PRM5\"] = 0x0026,\n [\"SNTC_MOD_PRM6\"] = 0x0027,\n [\"SNTC_MOD_PRM7\"] = 0x0028,\n [\"SNTC_MOD_PRM8\"] = 0x0029,\n [\"SNTC_MOD_PRM9\"] = 0x002A,\n [\"SNTC_MOD_PRM10\"] = 0x002B,\n [\"SNTC_MOD_PRM11\"] = 0x002C,\n [\"SNTC_MOD_PRM12\"] = 0x002D,\n [\"SNTC_MOD_PRM13\"] = 0x002E,\n [\"SNTC_MOD_PRM14\"] = 0x002F,\n [\"SNTC_MOD_PRM15\"] = 0x0030,\n [\"SNTC_MOD_PRM16\"] = 0x0031,\n [\"SNTC_MOD_PRM17\"] = 0x0032,\n [\"SNTC_MOD_PRM18\"] = 0x0033,\n [\"SNTC_MOD_PRM19\"] = 0x0034,\n [\"SNTC_MOD_PRM20\"] = 0x0035,\n [\"SNTC_MOD_PRM21\"] = 0x0036,\n [\"SNTC_MOD_PRM22\"] = 0x0037,\n [\"SNTC_MOD_PRM23\"] = 0x0038,\n [\"SNTC_MOD_PRM24\"] = 0x0039,\n [\"SNTC_MOD_PRM25\"] = 0x003A,\n [\"SNTC_MOD_PRM26\"] = 0x003B,\n [\"SNTC_MOD_PRM27\"] = 0x003C,\n [\"SNTC_MOD_PRM28\"] = 0x003D,\n [\"SNTC_MOD_PRM29\"] = 0x003E,\n [\"SNTC_MOD_PRM30\"] = 0x003F,\n [\"SNTC_MOD_PRM31\"] = 0x0040,\n [\"SNTC_MOD_PRM32\"] = 0x0041,\n\n [\"SNTF_MFX_TYPE\"] = 0x0000,\n [\"SNTF_MFX_DRY_SEND\"] = 0x0001,\n [\"SNTF_MFX_CHO_SEND\"] = 0x0002,\n [\"SNTF_MFX_REV_SEND\"] = 0x0003,\n [\"SNTF_MFX_CTRL1_SRC\"] = 0x0005,\n [\"SNTF_MFX_CTRL1_SENS\"] = 0x0006,\n [\"SNTF_MFX_CTRL2_SRC\"] = 0x0007,\n [\"SNTF_MFX_CTRL2_SENS\"] = 0x0008,\n [\"SNTF_MFX_CTRL3_SRC\"] = 0x0009,\n [\"SNTF_MFX_CTRL3_SENS\"] = 0x000A,\n [\"SNTF_MFX_CTRL4_SRC\"] = 0x000B,\n [\"SNTF_MFX_CTRL4_SENS\"] = 0x000C,\n [\"SNTF_MFX_CTRL_ASGN1\"] = 0x000D,\n [\"SNTF_MFX_CTRL_ASGN2\"] = 0x000E,\n [\"SNTF_MFX_CTRL_ASGN3\"] = 0x000F,\n [\"SNTF_MFX_CTRL_ASGN4\"] = 0x0010,\n [\"SNTF_MFX_PRM1\"] = 0x0011,\n [\"SNTF_MFX_PRM2\"] = 0x0015,\n [\"SNTF_MFX_PRM3\"] = 0x0019,\n [\"SNTF_MFX_PRM4\"] = 0x001D,\n [\"SNTF_MFX_PRM5\"] = 0x0021,\n [\"SNTF_MFX_PRM6\"] = 0x0025,\n [\"SNTF_MFX_PRM7\"] = 0x0029,\n [\"SNTF_MFX_PRM8\"] = 0x002D,\n [\"SNTF_MFX_PRM9\"] = 0x0031,\n [\"SNTF_MFX_PRM10\"] = 0x0035,\n [\"SNTF_MFX_PRM11\"] = 0x0039,\n [\"SNTF_MFX_PRM12\"] = 0x003D,\n [\"SNTF_MFX_PRM13\"] = 0x0041,\n [\"SNTF_MFX_PRM14\"] = 0x0045,\n [\"SNTF_MFX_PRM15\"] = 0x0049,\n [\"SNTF_MFX_PRM16\"] = 0x004D,\n [\"SNTF_MFX_PRM17\"] = 0x0051,\n [\"SNTF_MFX_PRM18\"] = 0x0055,\n [\"SNTF_MFX_PRM19\"] = 0x0059,\n [\"SNTF_MFX_PRM20\"] = 0x005D,\n [\"SNTF_MFX_PRM21\"] = 0x0061,\n [\"SNTF_MFX_PRM22\"] = 0x0065,\n [\"SNTF_MFX_PRM23\"] = 0x0069,\n [\"SNTF_MFX_PRM24\"] = 0x006D,\n [\"SNTF_MFX_PRM25\"] = 0x0071,\n [\"SNTF_MFX_PRM26\"] = 0x0075,\n [\"SNTF_MFX_PRM27\"] = 0x0079,\n [\"SNTF_MFX_PRM28\"] = 0x007D,\n [\"SNTF_MFX_PRM29\"] = 0x0101,\n [\"SNTF_MFX_PRM30\"] = 0x0105,\n [\"SNTF_MFX_PRM31\"] = 0x0109,\n [\"SNTF_MFX_PRM32\"] = 0x010D,\n\n [\"SDKC_NAME\"] = 0x0000,\n [\"SDKC_LEVEL\"] = 0x0010,\n [\"SDKC_AMBIENCE_LEVEL\"] = 0x0011,\n [\"SDKC_PHRASE\"] = 0x0012,\n [\"SDKC_TFX_SW\"] = 0x0013,\n\n [\"SDKF_MFX_TYPE\"] = 0x0000,\n [\"SDKF_MFX_DRY_SEND\"] = 0x0001,\n [\"SDKF_MFX_CHO_SEND\"] = 0x0002,\n [\"SDKF_MFX_REV_SEND\"] = 0x0003,\n [\"SDKF_MFX_CTRL1_SRC\"] = 0x0005,\n [\"SDKF_MFX_CTRL1_SENS\"] = 0x0006,\n [\"SDKF_MFX_CTRL2_SRC\"] = 0x0007,\n [\"SDKF_MFX_CTRL2_SENS\"] = 0x0008,\n [\"SDKF_MFX_CTRL3_SRC\"] = 0x0009,\n [\"SDKF_MFX_CTRL3_SENS\"] = 0x000A,\n [\"SDKF_MFX_CTRL4_SRC\"] = 0x000B,\n [\"SDKF_MFX_CTRL4_SENS\"] = 0x000C,\n [\"SDKF_MFX_CTRL_ASGN1\"] = 0x000D,\n [\"SDKF_MFX_CTRL_ASGN2\"] = 0x000E,\n [\"SDKF_MFX_CTRL_ASGN3\"] = 0x000F,\n [\"SDKF_MFX_CTRL_ASGN4\"] = 0x0010,\n [\"SDKF_MFX_PRM1\"] = 0x0011,\n [\"SDKF_MFX_PRM2\"] = 0x0015,\n [\"SDKF_MFX_PRM3\"] = 0x0019,\n [\"SDKF_MFX_PRM4\"] = 0x001D,\n [\"SDKF_MFX_PRM5\"] = 0x0021,\n [\"SDKF_MFX_PRM6\"] = 0x0025,\n [\"SDKF_MFX_PRM7\"] = 0x0029,\n [\"SDKF_MFX_PRM8\"] = 0x002D,\n [\"SDKF_MFX_PRM9\"] = 0x0031,\n [\"SDKF_MFX_PRM10\"] = 0x0035,\n [\"SDKF_MFX_PRM11\"] = 0x0039,\n [\"SDKF_MFX_PRM12\"] = 0x003D,\n [\"SDKF_MFX_PRM13\"] = 0x0041,\n [\"SDKF_MFX_PRM14\"] = 0x0045,\n [\"SDKF_MFX_PRM15\"] = 0x0049,\n [\"SDKF_MFX_PRM16\"] = 0x004D,\n [\"SDKF_MFX_PRM17\"] = 0x0051,\n [\"SDKF_MFX_PRM18\"] = 0x0055,\n [\"SDKF_MFX_PRM19\"] = 0x0059,\n [\"SDKF_MFX_PRM20\"] = 0x005D,\n [\"SDKF_MFX_PRM21\"] = 0x0061,\n [\"SDKF_MFX_PRM22\"] = 0x0065,\n [\"SDKF_MFX_PRM23\"] = 0x0069,\n [\"SDKF_MFX_PRM24\"] = 0x006D,\n [\"SDKF_MFX_PRM25\"] = 0x0071,\n [\"SDKF_MFX_PRM26\"] = 0x0075,\n [\"SDKF_MFX_PRM27\"] = 0x0079,\n [\"SDKF_MFX_PRM28\"] = 0x007D,\n [\"SDKF_MFX_PRM29\"] = 0x0101,\n [\"SDKF_MFX_PRM30\"] = 0x0105,\n [\"SDKF_MFX_PRM31\"] = 0x0109,\n [\"SDKF_MFX_PRM32\"] = 0x010D,\n\n [\"SDKCQ_COMP1_SW\"] = 0x0000,\n [\"SDKCQ_COMP1_ATTACK\"] = 0x0001,\n [\"SDKCQ_COMP1_RELEASE\"] = 0x0002,\n [\"SDKCQ_COMP1_THRESHOLD\"] = 0x0003,\n [\"SDKCQ_COMP1_RATIO\"] = 0x0004,\n [\"SDKCQ_COMP1_POSTGAIN\"] = 0x0005,\n [\"SDKCQ_EQ1_SW\"] = 0x0006,\n [\"SDKCQ_EQ1_LOWFREQ\"] = 0x0007,\n [\"SDKCQ_EQ1_LOWGAIN\"] = 0x0008,\n [\"SDKCQ_EQ1_MIDFREQ\"] = 0x0009,\n [\"SDKCQ_EQ1_MIDGAIN\"] = 0x000A,\n [\"SDKCQ_EQ1_MIDQ\"] = 0x000B,\n [\"SDKCQ_EQ1_HIGHFREQ\"] = 0x000C,\n [\"SDKCQ_EQ1_HIGHGAIN\"] = 0x000D,\n [\"SDKCQ_COMP2_SW\"] = 0x000E,\n [\"SDKCQ_COMP2_ATTACK\"] = 0x000F,\n [\"SDKCQ_COMP2_RELEASE\"] = 0x0010,\n [\"SDKCQ_COMP2_THRESHOLD\"] = 0x0011,\n [\"SDKCQ_COMP2_RATIO\"] = 0x0012,\n [\"SDKCQ_COMP2_POSTGAIN\"] = 0x0013,\n [\"SDKCQ_EQ2_SW\"] = 0x0014,\n [\"SDKCQ_EQ2_LOWFREQ\"] = 0x0015,\n [\"SDKCQ_EQ2_LOWGAIN\"] = 0x0016,\n [\"SDKCQ_EQ2_MIDFREQ\"] = 0x0017,\n [\"SDKCQ_EQ2_MIDGAIN\"] = 0x0018,\n [\"SDKCQ_EQ2_MIDQ\"] = 0x0019,\n [\"SDKCQ_EQ2_HIGHFREQ\"] = 0x001A,\n [\"SDKCQ_EQ2_HIGHGAIN\"] = 0x001B,\n [\"SDKCQ_COMP3_SW\"] = 0x001C,\n [\"SDKCQ_COMP3_ATTACK\"] = 0x001D,\n [\"SDKCQ_COMP3_RELEASE\"] = 0x001E,\n [\"SDKCQ_COMP3_THRESHOLD\"] = 0x001F,\n [\"SDKCQ_COMP3_RATIO\"] = 0x0020,\n [\"SDKCQ_COMP3_POSTGAIN\"] = 0x0021,\n [\"SDKCQ_EQ3_SW\"] = 0x0022,\n [\"SDKCQ_EQ3_LOWFREQ\"] = 0x0023,\n [\"SDKCQ_EQ3_LOWGAIN\"] = 0x0024,\n [\"SDKCQ_EQ3_MIDFREQ\"] = 0x0025,\n [\"SDKCQ_EQ3_MIDGAIN\"] = 0x0026,\n [\"SDKCQ_EQ3_MIDQ\"] = 0x0027,\n [\"SDKCQ_EQ3_HIGHFREQ\"] = 0x0028,\n [\"SDKCQ_EQ3_HIGHGAIN\"] = 0x0029,\n [\"SDKCQ_COMP4_SW\"] = 0x002A,\n [\"SDKCQ_COMP4_ATTACK\"] = 0x002B,\n [\"SDKCQ_COMP4_RELEASE\"] = 0x002C,\n [\"SDKCQ_COMP4_THRESHOLD\"] = 0x002D,\n [\"SDKCQ_COMP4_RATIO\"] = 0x002E,\n [\"SDKCQ_COMP4_POSTGAIN\"] = 0x002F,\n [\"SDKCQ_EQ4_SW\"] = 0x0030,\n [\"SDKCQ_EQ4_LOWFREQ\"] = 0x0031,\n [\"SDKCQ_EQ4_LOWGAIN\"] = 0x0032,\n [\"SDKCQ_EQ4_MIDFREQ\"] = 0x0033,\n [\"SDKCQ_EQ4_MIDGAIN\"] = 0x0034,\n [\"SDKCQ_EQ4_MIDQ\"] = 0x0035,\n [\"SDKCQ_EQ4_HIGHFREQ\"] = 0x0036,\n [\"SDKCQ_EQ4_HIGHGAIN\"] = 0x0037,\n [\"SDKCQ_COMP5_SW\"] = 0x0038,\n [\"SDKCQ_COMP5_ATTACK\"] = 0x0039,\n [\"SDKCQ_COMP5_RELEASE\"] = 0x003A,\n [\"SDKCQ_COMP5_THRESHOLD\"] = 0x003B,\n [\"SDKCQ_COMP5_RATIO\"] = 0x003C,\n [\"SDKCQ_COMP5_POSTGAIN\"] = 0x003D,\n [\"SDKCQ_EQ5_SW\"] = 0x003E,\n [\"SDKCQ_EQ5_LOWFREQ\"] = 0x003F,\n [\"SDKCQ_EQ5_LOWGAIN\"] = 0x0040,\n [\"SDKCQ_EQ5_MIDFREQ\"] = 0x0041,\n [\"SDKCQ_EQ5_MIDGAIN\"] = 0x0042,\n [\"SDKCQ_EQ5_MIDQ\"] = 0x0043,\n [\"SDKCQ_EQ5_HIGHFREQ\"] = 0x0044,\n [\"SDKCQ_EQ5_HIGHGAIN\"] = 0x0045,\n [\"SDKCQ_COMP6_SW\"] = 0x0046,\n [\"SDKCQ_COMP6_ATTACK\"] = 0x0047,\n [\"SDKCQ_COMP6_RELEASE\"] = 0x0048,\n [\"SDKCQ_COMP6_THRESHOLD\"] = 0x0049,\n [\"SDKCQ_COMP6_RATIO\"] = 0x004A,\n [\"SDKCQ_COMP6_POSTGAIN\"] = 0x004B,\n [\"SDKCQ_EQ6_SW\"] = 0x004C,\n [\"SDKCQ_EQ6_LOWFREQ\"] = 0x004D,\n [\"SDKCQ_EQ6_LOWGAIN\"] = 0x004E,\n [\"SDKCQ_EQ6_MIDFREQ\"] = 0x004F,\n [\"SDKCQ_EQ6_MIDGAIN\"] = 0x0050,\n [\"SDKCQ_EQ6_MIDQ\"] = 0x0051,\n [\"SDKCQ_EQ6_HIGHFREQ\"] = 0x0052,\n [\"SDKCQ_EQ6_HIGHGAIN\"] = 0x0053,\n\n [\"SDKN_INST_NUM\"] = 0x0000,\n [\"SDKN_INST_LEVEL\"] = 0x0004,\n [\"SDKN_INST_PAN\"] = 0x0005,\n [\"SDKN_INST_CHO_SEND\"] = 0x0006,\n [\"SDKN_INST_REV_SEND\"] = 0x0007,\n [\"SDKN_PIT_FINE\"] = 0x0008,\n [\"SDKN_ATTACK\"] = 0x000C,\n [\"SDKN_DECAY\"] = 0x000D,\n [\"SDKN_BRIGHTNESS\"] = 0x000E,\n [\"SDKN_FLAM_CTRL\"] = 0x000F,\n [\"SDKN_DYN_RANG\"] = 0x0010,\n [\"SDKN_STEREO_WIDTH\"] = 0x0011,\n [\"SDKN_OUTPUT_ASSIGN\"] = 0x0012,\n [\"PRM\"] = 0,\n [\"RESERVE_DUMMY\"] = 0x0000\n}\n\n\nMfx_Types = {\n SNA = \"SNA\",\n SNS = \"SNS\",\n SND = \"SND\",\n PCMS = \"PCMS\",\n PCMD = \"PCMD\"\n}\n\nMfx_Ids = {\n SNA = \"PRM-_FPARTxxx-_SNTONE-_SNTF\",\n SNS = \"PRM-_FPARTxxx-_SHPAT-_SHPF\",\n SND = \"PRM-_FPARTxxx-_KIT-_KF\",\n PCMS = \"PRM-_FPARTxxx-_PAT-_PF\",\n PCMD = \"PRM-_FPARTxxx-_RHY-_RF\"\n}\n\nMfx_Type_Ids = {\n SNA = Mfx_Ids[Mfx_Types.SNA] .. \"-_SNTF-SNTF_MFX_TYPE\",\n SNS = Mfx_Ids[Mfx_Types.SNS] .. \"-_SHPF-SHPF_MFX_TYPE\",\n SND = Mfx_Ids[Mfx_Types.SND] .. \"-_KF-SDKF_MFX_TYPE\",\n PCMS = Mfx_Ids[Mfx_Types.PCMS] .. \"-RFPF_MFX_TYPE\",\n PCMD = Mfx_Ids[Mfx_Types.PCMD] .. \"-RFRF_MFX_TYPE\"\n}\n\nMfx_Nodes = {\n SNA = SNTF,\n SNS = SHPF,\n SND = KF,\n PCMS = PF,\n PCMD = RF\n}\n\nfunction Get_Adress(id)\n local addr = 0\n for splitted_id_part in string.gmatch(id, \"([^-]+)\") do\n if splitted_id_part == \"PRM\" then\n -- prm has no data representation\n goto continue\n end\n addr = addr + MODEL_ID_MAP[splitted_id_part];\n ::continue::\n end\n return addr\nend\n\nfunction Get_Node(id)\n local result = {\n addr = 0,\n node = nil\n }\n local nodes = I7ROOT_NODE\n local node = nil\n for splitted_id_part in string.gmatch(id, \"([^-]+)\") do\n node = nil\n if splitted_id_part == \"PRM\" then\n -- prm has no data representation\n goto continue\n end\n for _, n in pairs(nodes) do\n if splitted_id_part == n.id then\n result.addr = result.addr + MODEL_ID_MAP[splitted_id_part];\n node = n\n nodes = node.children;\n break\n end\n end\n ::continue::\n end\n if node == nil then\n return nil\n end\n result.node = node\n return result\nend\n\nfunction Get_Byte_Size(valueByteSizeType)\n if valueByteSizeType == ZeroByteSize then return 0 end\n if valueByteSizeType == INTEGER1x1\n or valueByteSizeType == INTEGER1x2\n or valueByteSizeType == INTEGER1x3\n or valueByteSizeType == INTEGER1x4\n or valueByteSizeType == INTEGER1x5\n or valueByteSizeType == INTEGER1x6\n or valueByteSizeType == INTEGER1x7 then return 1 end\n if valueByteSizeType == INTEGER2x4 then return 2 end\n if valueByteSizeType == INTEGER4x4 then return 4 end\n if valueByteSizeType == ByteSize12 then return 12 end\n if valueByteSizeType == ByteSize16 then return 16 end\n return 0\n\nend\n\nfunction Value_To_Bytes(v, bytesize)\n local result = {}\n local is_string = type(v) == \"string\"\n if not is_string and bytesize == 1 then\n return {v & 0x7f}\n end\n for i = 1, bytesize, 1 do\n if is_string then\n if i <= #v then\n result[i] = string.byte(v, i)\n else\n result[i] = string.byte(\" \")\n end\n goto continue\n end\n local shift = 4*(bytesize - i)\n result[i] = v >> shift & 0xf\n ::continue::\n end\n return result\nend\n\nfunction ConcatTable(a, b)\n local res = {table.unpack(a)}\n for _, val in pairs(b) do\n table.insert(res, val)\n end\n return res\nend\n\nlocal function Checksum(values, begin_index, end_index)\n local result = 0\n for i = begin_index, end_index, 1 do\n local value = values[i]\n result = result + value\n end\n return -result & 0x7F\nend\n\nfunction Create_Sysex_Message_For_Payload(addr, payload, device_id)\n local result = {table.unpack(ROLAND_DT1)}\n table.insert(result, (addr >> 24) & 0xff)\n table.insert(result, (addr >> 16) & 0xff)\n table.insert(result, (addr >> 8) & 0xff)\n table.insert(result, (addr & 0xff))\n result = ConcatTable(result, payload)\n local checksum = Checksum(result, #ROLAND_DT1+1, #result)\n table.insert(result, checksum)\n table.insert(result, 0xF7)\n if device_id ~= nil then\n result[DEVICE_ID_INDEX] = device_id;\n end\n return result\nend\n\nfunction Create_SysexMessage(nodeinfo, device_id)\n local addr = nodeinfo.addr\n local bytesize = Get_Byte_Size(nodeinfo.node.valueByteSizeType)\n local value_bytes = Value_To_Bytes(nodeinfo.node.value, bytesize)\n return Create_Sysex_Message_For_Payload(addr, value_bytes, device_id)\nend\n\nfunction Bytes_To_String(bytes)\n local chars = {}\n for _, value in pairs(bytes) do\n table.insert(chars, string.format(\"%02x\", value))\n end\n return table.concat(chars, \" \")\nend"}, {"path": "lua/devices/integra7/_tests.lua", "data": "require \"_model\"\nrequire \"_integra7\"\n\nlocal nodeinfo = Get_Node(\"xxx\")\nassert(nodeinfo == nil)\n\nassert(Denormalize100(50, 210, 0) == 50)\nassert(Denormalize100(50, 210, 100) == 210)\n\nlocal nodeinfo = Get_Node(\"PRM-_FPART1\")\nassert(nodeinfo ~= nil)\nassert(Nibble(0x19000000) == 52428800)\nassert(nodeinfo.node.desc == \"Temporary Tone (Studio Mode Part 1)\");\nassert(nodeinfo.node.addr == Nibble(0x19000000));\n\nnodeinfo = Get_Node(\"PRM-_FPART1-_SNTONE-_SNTC-SNTC_MOD_PRM14\");\nassert(nodeinfo ~= nil)\nassert(nodeinfo.node.addr == Nibble(0x002F));\nassert(nodeinfo.node.desc == \"Modify Parameter 14\");\n\nnodeinfo = Get_Node(\"PRM-_SETUP-_STP-_RC2-NESTP_SND_MODE_SD1\");\nassert(nodeinfo ~= nil)\nassert(nodeinfo.node.desc == \"Side 1 Sound Mode\");\n\nnodeinfo = Get_Node(\"PRM-_FPART1-_SNTONE-_SNTC-SNTC_TONE_LEVEL\");\nassert(nodeinfo ~= nil)\nassert(nodeinfo.node.desc == \"Tone Level\");\nnodeinfo.node:setvalue(127)\nlocal sysex = Create_SysexMessage(nodeinfo)\nlocal sysexStr = Bytes_To_String(sysex)\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 02 00 10 7f 56 f7\")\n\nnodeinfo = Get_Node(\"PRM-_FPART1-_SNTONE-_SNTC-SNTC_TONE_LEVEL\");\nassert(nodeinfo ~= nil)\nassert(nodeinfo.node.desc == \"Tone Level\");\nnodeinfo.node:setvalue100(100)\nlocal sysex = Create_SysexMessage(nodeinfo)\nlocal sysexStr = Bytes_To_String(sysex)\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 02 00 10 7f 56 f7\")\n\nnodeinfo.node:setvalue(121)\nsysex = Create_SysexMessage(nodeinfo, 23)\nsysexStr = Bytes_To_String(sysex)\nassert(sysexStr == \"f0 41 17 00 00 64 12 19 02 00 10 79 5c f7\")\n\nnodeinfo = Get_Node(\"PRM-_SYS-_SC-NESC_TUNE\");\nassert(nodeinfo ~= nil)\nassert(nodeinfo.node.desc == \"Master Tune\");\nnodeinfo.node:setvalue(2024)\nsysex = Create_SysexMessage(nodeinfo)\nsysexStr = Bytes_To_String(sysex)\nassert(sysexStr == \"f0 41 10 00 00 64 12 02 00 00 00 00 07 0e 08 61 f7\")\n\nnodeinfo = Get_Node(\"PRM-_SYS-_SC-NESC_TEMPO\");\nassert(nodeinfo ~= nil)\nassert(nodeinfo.node.desc == \"System Tempo\");\nnodeinfo.node:setvalue(250)\nsysex = Create_SysexMessage(nodeinfo)\nsysexStr = Bytes_To_String(sysex)\nassert(sysexStr == \"f0 41 10 00 00 64 12 02 00 00 26 0f 0a 3f f7\")\n\nnodeinfo = Get_Node(\"PRM-_FPART1-_PAT-_PC-RFPC_NAME\");\nassert(nodeinfo ~= nil)\nassert(nodeinfo.node.desc == \"PCM Tone Name\");\nnodeinfo.node:setvalue(\"012345\")\nsysex = Create_SysexMessage(nodeinfo)\nsysexStr = Bytes_To_String(sysex)\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 00 00 00 30 31 32 33 34 35 20 20 20 20 20 20 78 f7\")\n\n\nlocal sysexMessages = Get_Set_Mfx_Type_Messages(Mfx_Types.SNA, 1, 14)\n-- set mfx type\nsysexStr = Bytes_To_String(sysexMessages[1])\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 02 02 00 0e 55 f7\")\n-- set default values\nsysexStr = Bytes_To_String(sysexMessages[2])\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 02 02 0d 00 00 00 00 08 00 00 03 08 00 08 0c 08 00 05 00 08 00 07 0f 08 00 04 00 08 00 00 0f 08 00 00 0f 08 00 07 0f 2c f7\")\n\nsysexMessages = Get_Set_Mfx_Type_Messages(Mfx_Types.SNS, 2, 0)\n-- set mfx type\nsysexStr = Bytes_To_String(sysexMessages[1])\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 21 02 00 00 44 f7\")\n-- set default values\nsysexStr = Bytes_To_String(sysexMessages[2])\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 21 02 0d 00 00 00 00 08 00 00 00 2f f7\")\n\nsysexMessages = Get_Set_Mfx_Type_Messages(Mfx_Types.SND, 3, 67)\n-- set mfx type\nsysexStr = Bytes_To_String(sysexMessages[1])\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 43 02 00 43 5f f7\")\n-- set default values\nsysexStr = Bytes_To_String(sysexMessages[2])\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 43 02 0d 00 00 00 00 08 00 01 04 08 00 00 00 08 00 00 0a 08 00 01 02 08 00 01 0e 08 00 03 02 08 00 01 04 08 00 00 01 08 00 00 0a 08 00 01 02 08 00 02 08 08 00 04 0f 08 00 03 02 08 00 07 0f 34 f7\")\n\nsysexMessages = Get_Set_Mfx_Type_Messages(Mfx_Types.PCMS, 4, 16)\n-- set mfx type\nsysexStr = Bytes_To_String(sysexMessages[1])\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 60 02 00 10 75 f7\")\n-- set default values\nsysexStr = Bytes_To_String(sysexMessages[2])\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 60 02 0d 00 00 00 00 08 00 00 00 08 00 00 01 08 00 05 00 08 00 00 09 08 00 06 00 08 00 00 0f 08 00 00 0f 08 00 07 0f 6f f7\")\n\n\nsysexMessages = Get_Set_Mfx_Type_Messages(Mfx_Types.PCMD, 5, 18)\n-- set mfx type\nsysexStr = Bytes_To_String(sysexMessages[1])\nassert(sysexStr == \"f0 41 10 00 00 64 12 1a 10 02 00 12 42 f7\")\n-- set default values\nsysexStr = Bytes_To_String(sysexMessages[2])\nassert(sysexStr == \"f0 41 10 00 00 64 12 1a 10 02 0d 00 00 00 00 08 00 07 0f 08 00 00 00 08 00 01 0e 08 00 07 0f 08 00 07 0f 08 00 00 00 08 00 01 0e 08 00 00 00 08 00 07 0f 08 00 00 00 08 00 01 0e 08 00 07 0f 08 00 00 00 08 00 00 00 08 00 01 0e 08 00 00 00 08 00 00 01 08 00 00 0a 08 00 01 02 08 00 03 02 08 00 00 00 08 00 03 0c 08 00 00 00 08 00 00 00 08 00 07 0f 1d f7\")\n"}, {"path": "lua/devices/integra7/i7mfxparam.lua", "data": "-- <command name=\"i7mfxtype\" where=\"voicingStrategy\" using=\"lua/voicings/inversion.lua\">\n-- set the value for a mfx parameter.\n-- </command>\n-- <param name=\"partId\" optional=\"-1\" type=\"1..16\" type=\"number\">the part number, will be detected via instrument channel if not set.</param>\n-- <param name=\"paramNr\" type=\"1..32\" type=\"number\">the mfx parameter number</param>\n-- <param name=\"toneType\" type=\"[sna, sns, snd, pcms, pcmd]\">the type of the tone on the target part</param>\n-- <param name=\"value\" type=\"number\">the value</param>\n-- <param name=\"deviceId\" optional=\"1\" type=\"16..31\">an alternative device id</param>\n\nrequire \"lua/com/com\"\nrequire \"_model\"\nrequire \"_integra7\"\nlocal i7p = require \"i7parameter\"\n\nparameters = {\n { name=\"partId\", default=-1 },\n { name=\"paramNr\" },\n { name=\"toneType\" },\n { name=\"value\" },\n { name=\"deviceId\", default=16 },\n}\n\nlocal toneTypeMap = {\n sna = Mfx_Types.SNA,\n sns = Mfx_Types.SNS,\n snd = Mfx_Types.SND,\n pcms = Mfx_Types.PCMS,\n pcmd = Mfx_Types.PCMD\n}\n\nlocal mfx_param_templates = {\n SNA = Mfx_Ids[Mfx_Types.SNA] .. \"-_SNTF-SNTF_MFX_PRM%i\",\n SNS = Mfx_Ids[Mfx_Types.SNS] .. \"-_SHPF-SHPF_MFX_PRM%i\",\n SND = Mfx_Ids[Mfx_Types.SND] .. \"-_KF-SDKF_MFX_PRM%i\",\n PCMS = Mfx_Ids[Mfx_Types.PCMS] .. \"-RFPF_MFX_PRM%i\",\n PCMD = Mfx_Ids[Mfx_Types.PCMD] .. \"-RFRF_MFX_PRM%i\"\n}\n\n\nfunction execute(params, timeinfo, context)\n local mfxType = toneTypeMap[params.toneType]\n if mfxType == nil then\n error(\"invalid tone type \" .. params.toneType)\n end\n local parameterNr = tonumber(params.paramNr)\n if parameterNr == nil or parameterNr < 1 or parameterNr > 32 then\n error(\"invalid parameterNr \" .. params.paramNr)\n end\n params.parameterId = string.format(mfx_param_templates[mfxType], parameterNr)\n local events = i7p.execute(params, timeinfo, context)\n return events\nend\n\nfunction perform(events, params, timeinfo, context)\n local messages = execute(params, timeinfo, context)\n for _, message in pairs(messages) do\n table.insert(events, message)\n end\n return events\nend\n\nreturn {execute = execute}"}, {"path": "lua/devices/integra7/i7mfxtype.lua", "data": "-- <command name=\"i7mfxtype\" where=\"voicingStrategy\" using=\"lua/voicings/inversion.lua\">\n-- set the mfx type for a part.\n-- </command>\n-- <param name=\"partId\" optional=\"-1\" type=\"1..16\" type=\"number\">the part number, will be detected via instrument channel if not set.</param>\n-- <param name=\"typeNr\" type=\"0..67\" type=\"number\">the mfx type</param>\n-- <param name=\"toneType\" type=\"[sna, sns, snd, pcms, pcmd]\">the type of the tone on the target part</param>\n-- <param name=\"deviceId\" optional=\"1\" type=\"16..31\">an alternative device id</param>\n\nrequire \"lua/com/com\"\nrequire \"_model\"\nrequire \"_integra7\"\nlocal i7p = require \"i7parameter\"\n\nparameters = {\n { name=\"partId\", default=-1 },\n { name=\"typeNr\" },\n { name=\"toneType\" },\n { name=\"deviceId\", default=16 },\n}\n\nlocal toneTypeMap = {\n sna = Mfx_Types.SNA,\n sns = Mfx_Types.SNS,\n snd = Mfx_Types.SND,\n pcms = Mfx_Types.PCMS,\n pcmd = Mfx_Types.PCMD\n}\n\n\nfunction execute(params, timeinfo, context)\n local part_ids = i7p.get_partids(params, context)\n local mfxType = toneTypeMap[params.toneType]\n if mfxType == nil then\n error(\"invalid tone type \" .. params.toneType)\n end\n local typeNr = tonumber(params.typeNr)\n if typeNr == nil or typeNr < 0 or typeNr > 67 then\n error(\"typeNr out of bounds \" .. typeNr)\n end\n local device_id = tonumber(params.deviceId)\n if device_id == nil or device_id < 16 or device_id > 31 then\n error(\"invalid device id: \" .. device_id)\n end\n local messages = {}\n for _, part_id in pairs(part_ids) do\n local sysex = Get_Set_Mfx_Type_Messages(mfxType, part_id, typeNr, device_id)\n table.insert(messages, { -- set type\n [\"type\"] = \"sysex\",\n [\"sysexData\"] = sysex[1],\n [\"prio\"] = SYSEX_PRIO_INIT\n })\n table.insert(messages, { -- set default values\n [\"type\"] = \"sysex\",\n [\"sysexData\"] = sysex[2],\n [\"prio\"] = SYSEX_PRIO_SET_DEFAULT\n })\n end\n return messages\nend\n\nfunction perform(events, params, timeinfo, context)\n local messages = execute(params, timeinfo, context)\n for _, message in pairs(messages) do\n table.insert(events, message)\n end\n return events\nend\n\nreturn {execute = execute}"}, {"path": "lua/devices/integra7/i7parameter.lua", "data": "-- <command name=\"integra7\" where=\"mod\" using=\"lua/devices/integra7/integra7.lua\">\n-- A generic way to create integra7 parameter sysex messages\n-- </command>\n-- <param name=\"parameterId\" optional=\"0\" type=\"string\">the parameter (node) id. As placeholder for the partId can `xxx` be used. For exampe `PRM-_PRF-_FPxxx-NEFP_OUT_ASGN`</param>\n-- <param name=\"value\" optional=\"0\" type=\"number|string\">the value</param>\n-- <param name=\"partId\" optional=\"1\" type=\"0..15\">specifies the part id. If not set, will be determined using its related instrument channel(s), assuming that the channel never changes.</param>\n-- <param name=\"deviceId\" optional=\"1\" type=\"16..31\">an alternative device id</param>\n\nrequire \"lua/com/com\"\nrequire \"_integra7\"\n\nparameters = {\n { name=\"parameterId\"},\n { name=\"value\"},\n { name=\"partId\", default=-1 },\n { name=\"deviceId\", default=16 },\n}\n\nlocal function get_partids(params, context)\n if isnumber(params.partId) then\n return { tonumber(params.partId) }\n end\n local part_ids = {}\n local function get_id_from_instrument(instrument)\n if instrument.children ~= nil then\n for _, child in pairs(instrument.children) do\n get_id_from_instrument(child)\n end\n return\n end\n table.insert(part_ids, instrument.midiChannel + 1)\n end\n local instrument = context:getCurrentInstrument()\n get_id_from_instrument(instrument)\n return part_ids\nend\n\n\nfunction execute(params, timeinfo, context)\n local part_ids = get_partids(params, context)\n local messages = {}\n local value = tonumber(params.value)\n local node_id_template = params.parameterId\n local device_id = tonumber(params.deviceId)\n if device_id == nil or device_id < 16 or device_id > 32 then\n error(\"invalid device id: \" .. device_id)\n end\n for _, part_id in pairs(part_ids) do\n local sysex = Create_Sysex_Message_For_Node(part_id, node_id_template, value, device_id)\n table.insert(messages, {\n [\"type\"] = \"sysex\",\n [\"sysexData\"] = sysex,\n [\"prio\"] = SYSEX_PRIO_MOD\n })\n end\n return messages\nend\n\nfunction perform(events, params, timeinfo, context)\n local messages = execute(params, timeinfo, context)\n for _, message in pairs(messages) do\n table.insert(events, message)\n end\n return events\nend\n\nreturn {execute = execute, get_partids = get_partids}"}, {"path": "lua/devices/integra7/i7sntcmod.lua", "data": "-- <command name=\"i7sntcmod\" where=\"voicingStrategy\" using=\"lua/voicings/inversion.lua\">\n-- set a mod value for a sna tone type instrument\n-- </command>\n-- <param name=\"partId\" optional=\"-1\" type=\"1..16\" type=\"number\">the part number, will be detected via instrument channel if not set.</param>\n-- <param name=\"modNr\" type=\"1..32\" type=\"number\">the mod number.</param>\n-- <param name=\"value\" type=\"number\">the value</param>\n-- <param name=\"deviceId\" optional=\"1\" type=\"16..31\">an alternative device id</param>\n\nrequire \"lua/com/com\"\nlocal i7p = require \"i7parameter\"\n\nparameters = {\n { name=\"partId\", default=-1 },\n { name=\"modNr\"},\n { name=\"value\"},\n { name=\"deviceId\", default=16 },\n}\n\nlocal node_id_template = \"PRM-_FPARTxxx-_SNTONE-_SNTC-SNTC_MOD_PRM%i\"\n\nfunction execute(params, timeinfo, context)\n local modNr = tonumber(params.modNr)\n if modNr < 1 or modNr > 32 then\n error(\"modNr out of bounds \" .. modNr)\n end\n params.parameterId = string.format(node_id_template, modNr)\n return i7p.execute(params, timeinfo, context)\nend\n\nfunction perform(events, params, timeinfo, context)\n local messages = execute(params, timeinfo, context)\n for _, message in pairs(messages) do\n table.insert(events, message)\n end\n return events\nend\n\nreturn {execute = execute}"}, {"path": "lua/voicings/com.lua", "data": "require \"lua/com/com\"\n\nPitchRanges = {\n contrabass = { min=28, max=55 },\n bass = { min=40, max=60 },\n baritone = { min=45, max=69 },\n tenor = { min=48, max=72 },\n alto = { min=53, max=77 },\n mezzosoprano = { min=57, max=81 },\n soprano = { min=60, max=84 }\n}\n\nNoRangeSet = \"__noRangeSet\"\nNoImportantDegreesSet = \"_noImportantDegreesSet\"\nNoNumberSet = \"__noNumberSet\"\n\nSolverDefaultParameter = {\n -- can be contrabass, bass, baritone, tenor, alto, mezzosoprano, soprano\n { name=\"range\", default=NoRangeSet },\n { name=\"importantDegrees\", default=NoImportantDegreesSet },\n { name=\"importantDegree\", default=NoImportantDegreesSet },\n}\n\nfunction CheckForLegacyParameters(params)\n checkLegacyNamedParams(params, \"range\", \"importantDegrees\", \"importantDegree\")\nend\n\nfunction Transpose(pitches, numOctaves)\n for i, pitch in pairs(pitches) do\n pitch.octave = pitch.octave + numOctaves\n end\nend\n\nfunction KeepRange(pitches, strRange)\n if strRange == nil or strRange ==NoRangeSet then\n return;\n end\n local destinationRange = PitchRanges[strRange]\n if destinationRange == nil then\n error(\"strRange \" .. strRange .. \" not defined\")\n end\n local nbUnder = 0\n local nbOver = 0\n local mindiff = math.maxinteger\n local maxdiff = math.mininteger\n for i, pitch in pairs(pitches) do\n local midipitch = toMidiPitch(pitch)\n if midipitch > destinationRange.max then\n local diff = midipitch - destinationRange.max\n if diff > maxdiff then\n maxdiff = diff\n end\n nbOver = nbOver + 1\n end\n if midipitch < destinationRange.min then\n local diff = destinationRange.min - midipitch\n if diff < mindiff then\n mindiff = diff\n end\n nbUnder = nbUnder + 1\n end\n end\n if nbUnder > nbOver then\n local octaves = math.ceil(mindiff/12)\n Transpose(pitches, octaves)\n end\n if nbUnder < nbOver then\n local octaves = -math.ceil(maxdiff/12)\n Transpose(pitches, octaves)\n end\nend"}, {"path": "lua/voicings/guitar.lua", "data": "-- <command name=\"guitar\" where=\"voicingStrategy\" using=\"lua/voicings/guitar.lua\">\n-- <![CDATA[\n-- Tries to simulate the chord voicing of an guitar.\n-- ```language=Werckmeister\\n\n--using \"/lua/voicings/guitar.lua\";\\n\n--using \"/chords/default.chords\";\n--tempo: 120;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef:piano MyDevice _ch=0 _pc=0;\\n\n--[\\n\n--type: template;\\n\n--name: myTemplate;\\n\n--instrument: piano;\\n\n--{\\n\n-- /voicingStrategy: guitar/\\n\n-- <I II III IV V VI VII>1\\n\n--}\\n\n--]\\n\n--[\\n\n--type: accomp;\n--{\\n\n-- /template: myTemplate/\n-- C | F | G | C |\\n\n--}\\n\n--]\\n\n-- ```\n-- ]]>\n-- </command>\n-- <param name=\"range\" optional=\"1\" type=\"[contrabass,bass,baritone,tenor,alto,mezzosoprano,soprano]\">If given the strategy tries to keeps the range by shifting the octave of the chord.</param>\n\nrequire \"lua/com/com\"\nrequire \"lua/com/globals\"\nrequire \"com\"\n\nparameters = {\n table.unpack(SolverDefaultParameter)\n}\n\n-- https://www.8notes.com \n-- https://www.oolimo.de/gitarrenakkorde/find\n-- https://www.scales-chords.com/chord/piano/\nVoicingMatrix = {\n -- [\"1234567/bass\"] = {degrees},\n [\"1010100\"] = {I, V, I, III, I}, -- base\n [\"1100100\"] = {I, V, I, II}, -- sus2\n [\"1001100\"] = {I, V, I, IV, V }, -- sus4\n [\"1001101\"] = {I, V, VII, IV, V}, -- 7sus4\n [\"1101101\"] = {I, IV, VII, II, V}, -- 9sus4\n [\"1010110\"] = {I, VI, III, V}, -- 6\n [\"1110110\"] = {I, VI, III, V, II}, -- 6/9\n [\"1010101\"] = {I, V, VII, III, I}, -- 7\n [\"1110101\"] = {I, III, VII, II}, -- 9\n [\"1110100\"] = {I, V, II, III}, -- add9\n [\"1011101\"] = {I, IV, VII, III}, -- 11\n [\"1011001\"] = {I, VII, III, IV}, -- 7#11\n [\"1010111\"] = {I, V, VII, III, VI}, -- 13\n [\"1010101/7\"] = {VII, V, I, III}, -- /7\n [\"1010100/5\"] = {V, I, III, V}, -- /5\n [\"1011100/4\"] = {IV, V, I, III}, -- /4\n [\"1010100/3\"] = {III, V, I, III}, -- /3\n [\"1110100/2\"] = {II, V, I, III}, -- /2\n}\n\n\n-- returns the degrees defined for a chord as a bit string.\n-- e.g.: Xmaj's degrees are defined as I III V\n-- 1234567\n-- as bitstring = 1010100\n-- if chord is a slash chord, the degree value will be appended as number.\n-- e.g.: X/V = 1010100/5\nfunction ChordToHashString(chord)\n local bits = {}\n local slashAppendings = {}\n local degrees = chord.degrees\n for i=1, 7 do\n if degrees[i] == nil or chord:isDegreeAdjunct(i) then\n bits[i] = 0\n else\n bits[i] = 1\n if chord.degrees[i] < 0 then\n table.insert(slashAppendings, i)\n end\n end\n end\n if #slashAppendings == 0 then\n return table.concat(bits)\n end\n return table.concat(bits) .. \"/\" .. table.concat(slashAppendings)\nend\n\nfunction ToDegreeToPitchMap(pitches)\n local deg2pitch = {}\n for _, pitchDef in ipairs(pitches) do\n deg2pitch[pitchDef.degree] = pitchDef.pitch\n end\n return deg2pitch\nend\n\nfunction solve(chord, pitches, parameters, timeinfo)\n CheckForLegacyParameters(parameters)\n if #pitches < 3 then\n return pitches\n end\n local strDegrees = ChordToHashString(chord)\n local voicing = VoicingMatrix[strDegrees]\n local deg2pitch = ToDegreeToPitchMap(pitches)\n local result = {}\n local octave = -1\n local lastDegree = -1\n for _, degree in ipairs(voicing) do\n if degree <= lastDegree then \n octave = octave + 1\n end\n local pitch = deg2pitch[degree]\n if pitch == nil then\n goto continue\n end\n lastDegree = degree\n table.insert(result, {\n degree = degree,\n octave = octave,\n pitch = pitch\n });\n ::continue::\n end\n KeepRange(result, parameters.range)\n return result\nend"}, {"path": "lua/voicings/inversion.lua", "data": "-- <command name=\"inversion\" where=\"voicingStrategy\" using=\"lua/voicings/inversion.lua\">\n-- <![CDATA[\n-- creates an inversion by moving the lowest note an octave hihgher.\n-- ```language=Werckmeister\\n\n--using \"/lua/voicings/inversion.lua\";\\n\n--using \"/chords/default.chords\";\n--tempo: 120;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef:piano MyDevice _ch=0 _pc=0;\\n\n--[\\n\n--type: template;\\n\n--name: myTemplate;\\n\n--instrument: piano;\\n\n--{\\n\n-- /voicingStrategy: inversion/\\n\n-- <I II III IV V VI VII>1\\n\n--}\\n\n--]\\n\n--[\\n\n--type: accomp;\n--{\\n\n-- /template: myTemplate/\n-- C | F | G | C |\\n\n--}\\n\n--]\\n\n-- ```\n-- ]]>\n-- </command>\n-- <param name=\"level\" optional=\"1\" type=\"number\">level of inversion</param>\n-- <param name=\"range\" optional=\"1\" type=\"[contrabass,bass,baritone,tenor,alto,mezzosoprano,soprano]\">If given the strategy tries to keeps the range by shifting the octave of the chord.</param>\n\nrequire \"lua/com/com\"\nrequire \"com\"\n\nparameters = {\n { name=\"level\", default=1 },\n table.unpack(SolverDefaultParameter)\n}\n\nfunction solve(chord, pitches, parameters)\n CheckForLegacyParameters(parameters)\n local inversionLevel = tonumber(parameters.level)\n if inversionLevel == nil then\n inversionLevel = 1\n end\n for _, pitch in pairs(pitches) do\n pitch.octave = pitch.octave + 1\n inversionLevel = inversionLevel - 1\n if inversionLevel == 0 then\n break\n end\n end\n KeepRange(pitches, parameters.range)\n return pitches\nend"}, {"path": "lua/voicings/simple.lua", "data": "-- <command name=\"simple\" where=\"voicingStrategy\" using=\"lua/voicings/simple.lua\">\n-- <![CDATA[\n-- The simple approach with no strategy.\n-- ```language=Werckmeister\\n\n--using \"/lua/voicings/simple.lua\";\\n\n--using \"/chords/default.chords\";\n--tempo: 120;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef:piano MyDevice _ch=0 _pc=0;\\n\n--[\\n\n--type: template;\\n\n--name: myTemplate;\\n\n--instrument: piano;\\n\n--{\\n\n-- /voicingStrategy: simple/\\n\n-- <I II III IV V VI VII>1\\n\n--}\\n\n--]\\n\n--[\\n\n--type: accomp;\n--{\\n\n-- /template: myTemplate/\n-- C | F | G | C |\\n\n--}\\n\n--]\\n\n-- ```\n-- ]]>\n-- </command>\n-- <param name=\"range\" optional=\"1\" type=\"[contrabass,bass,baritone,tenor,alto,mezzosoprano,soprano]\">If given the strategy tries to keeps the range by shifting the octave of the chord.</param>\n\nrequire \"lua/com/com\"\nrequire \"com\"\n\nparameters = {\n table.unpack(SolverDefaultParameter)\n}\n\nfunction solve(chord, pitches, parameters)\n CheckForLegacyParameters(parameters)\n KeepRange(pitches, parameters.range)\n return pitches\nend"}, {"path": "lua/voicings/voicelead.lua", "data": "-- <command name=\"voicelead\" where=\"voicingStrategy\" using=\"lua/voicings/voicelead.lua\">\n-- <![CDATA[\n-- Tries to simulates a voice leading approach:\n-- the octaves of a chord are rearranged, so that the actual pitch distance between the previous chord is kept minimal.\n-- ```language=Werckmeister\\n\n--using \"/lua/voicings/voicelead.lua\";\\n\n--using \"/chords/default.chords\";\n--tempo: 120;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef:piano MyDevice _ch=0 _pc=0;\\n\n--[\\n\n--type: template;\\n\n--name: myTemplate;\\n\n--instrument: piano;\\n\n--{\\n\n-- /voicingStrategy: voicelead/\\n\n-- <I II III IV V VI VII>1\\n\n--}\\n\n--]\\n\n--[\\n\n--type: accomp;\n--{\\n\n-- /template: myTemplate/\n-- C | F | G | C |\\n\n--}\\n\n--]\\n\n-- ```\n-- ]]>\n-- </command>\n-- <param name=\"range\" optional=\"1\" type=\"[contrabass,bass,baritone,tenor,alto,mezzosoprano,soprano]\">If given the strategy tries to keeps the range by shifting the octave of the chord.</param>\n\nrequire \"lua/com/com\"\nrequire \"lua/com/globals\"\nrequire \"com\"\n\nparameters = {\n table.unpack(SolverDefaultParameter)\n}\n\nlocal previousResult = nil\n\nlocal function GetPitchWithMinDistance(pitch, pitches)\n local min = math.maxinteger\n local minPitch = nil\n local relPitch = pitch.pitch % 12\n for i, refpitch in pairs(pitches) do\n local diff = relpitchdiff(refpitch.pitch, relPitch)\n diff = math.abs(diff)\n if (diff < min) then\n minPitch = refpitch\n min = diff\n end\n end\n return minPitch\nend\n\n-- changes the octave of pitch, so that the interval\n-- between pitch and targetPitch is minimal\nlocal function ChangeOctaveToPitchNextTo(pitch, targetPitch)\n if targetPitch == nil then\n return pitch\n end\n local diff = pitch.pitch - targetPitch.pitch\n pitch.octave = targetPitch.octave\n if (diff > 6) then\n pitch.octave = pitch.octave - 1\n end\n if (diff < -6) then\n pitch.octave = pitch.octave + 1\n end\n return pitch\nend\n\n\n-- compare pitches with a reference and adjust octaves\nlocal function AdjustOctaves(pitches, reference)\n for _, pitch in pairs(pitches) do\n local min = GetPitchWithMinDistance(pitch, reference)\n ChangeOctaveToPitchNextTo(pitch, min)\n end\n return pitches\nend\n\nlocal function SolveImpl(pitches)\n if #pitches < 2\n then\n return pitches\n end\n if previousResult ~= nil\n then\n pitches = AdjustOctaves(pitches, previousResult)\n end\n return pitches\nend\n\nfunction solve(chord, pitches, parameters)\n CheckForLegacyParameters(parameters)\n SolveImpl(pitches)\n KeepRange(pitches, parameters.range)\n previousResult = pitches\n return pitches\nend"}, {"path": "pitchmaps/battery3.tight.pitchmap", "data": "\"bd\": c,,\n\"sn\": d,,\n\"sng\": g# --snare ghost notes\n\"ss\": c#,, -- sidestick\n\"hc\": d#,, -- handclap\n\"ht\": f#,, -- hihat closed\n\"hf\": g#,, -- hihat foot\n\"ho\": bb,, -- hihat open\n\"ho1\": g' -- hihat half open1\n\"ho2\": g#' -- hihat half open2\n\"ho3\": a' -- hihat half open3\n\"cy\": c#,\n\"hto\": c,\n\"hto1\": c,\n\"hto2\": d,\n\"mto\": b,,\n\"mto1\": b,,\n\"mto2\": a,,\n\"lto\": g,,\n\"lto1\": g,,\n\"lto2\": f,,\n\"rdbell\": f#,\n\"mtr\": ab'\n\"otr\": a'\n-- r&l\n\"snl\": d,,\n\"snr\": e,,\n\"riml\": c#,,\n\"rimr\": d#,,\n\"htol\": e,\n\"htor\": f,\n\"mtol\": c,\n\"mtor\": d,\n\"ltol\": b,,\n\"ltor\": a,,\n\"ftol\": g,,\n\"ftor\": f,,\n"}, {"path": "pitchmaps/defaultMIDI.pitchmap", "data": "\"bd\": c,,,,\n\"bd2\": b,,,\n\"o\": b,,,\n\"sn\": d,,\n\"x\": d,,\n\"sn2\": e,,\n\"esn\": e,, -- electric snare\n\"sng\": d,, --snare ghost notes\n\"ss\": c#,, -- sidestick\n\"hc\": d#,, -- handclap\n\"ht\": f#,, -- hihat closed\n\"h\": f#,, -- hihat closed\n\"hf\": g#,, -- hihat foot\n\"h,\": g#,, -- hihat foot\n\"ho\": bb,, -- hihat open\n\"h'\": bb,, -- hihat open\n\"ho1\": bb,, -- hihat half open1\n\"ho2\": bb,, -- hihat half open2\n\"ho3\": bb,, -- hihat half open3\n\"cy\": c#, -- crash cymbal\n\"spl\": g, -- splash cymbal\n\"hto\": c, -- high tom \n\"m'\": c, -- high tom \n\"hto1\": c,\n\"hto2\": d,\n\"mto\": b,, -- middle tom\n\"m\": b,, -- middle tom\n\"mto1\": b,,\n\"mto2\": a,,\n\"lto\": g,, -- low tom\n\"m,\": g,, -- low tom\n\"lto1\": g,,\n\"lto2\": f,,\n\"rcym1\": d#, -- ride cymbal 1\n\"rcym2\": b, -- ride cymbal 2\n\"rbell\": f, -- ride bell\n\"mtr\": ab' -- muted triangle\n\"otr\": a' -- open triangle\n\"bo1\": c --bongo 1\n\"bo2\": c# --bongo 2\n\"tim1\": f --timbale 1\n\"tim2\": f# --timbale 2\n\"ago1\": g --agogo 1\n\"ago2\": g# --agogo 2\n\"cui1\": f#' -- cuica 1\n\"cui2\": g' -- cuica 2\n\"cwb\": g#, -- cowbell\n\"cla\": d#' -- claves\n\"mcon\":d -- mute high conga\n\"ocon\":d# -- open conga\n\"lcon\":e -- low conga\n\"tmb\":f#, -- tambourine \n\n\n\"brsw\": e,, -- brush swirl\n\"brtp\": d,, -- brush tap\n\"brsp\": d#,, -- brush slap"}, {"path": "pitchmaps/defaultMidiDrumMap.pitchmap", "data": "\"bd\": c,,,,\n\"sn\": d,,\n\"sng\": d,, --snare ghost notes\n\"ss\": c#,, -- sidestick\n\"hc\": d#,, -- handclap\n\"ht\": f#,, -- hihat closed\n\"hf\": g#,, -- hihat foot\n\"ho\": bb,, -- hihat open\n\"ho1\": bb,, -- hihat half open1\n\"ho2\": bb,, -- hihat half open2\n\"ho2\": bb,, -- hihat half open3\n\"cy\": c#, -- crash cymal\n\"spl\": g, -- splash cymal\n\"hto\": c, -- high tom \n\"hto1\": c,\n\"hto2\": d,\n\"mto\": b,, -- middle tom\n\"mto1\": b,,\n\"mto2\": a,,\n\"lto\": g,, -- low tom\n\"lto1\": g,,\n\"lto2\": f,,\n\"rdbell\": b,\n\"mtr\": ab' -- muted triangle\n\"otr\": a' -- open triangle\n\"bo1\": c --bongo 1\n\"bo2\": c# --bongo 2\n\"tim1\": f --timbale 1\n\"tim2\": f# --timbale 2\n\"ago1\": g --agogo 1\n\"ago2\": g# --agogo 2\n\"cui1\": f#' -- cuica 1\n\"cui2\": g' -- cuica 2\n\"cwb\": g#, -- cowbell\n\"cla\": d#' -- claves\n\n\"cr\": c#, -- crash cymal\n\"t1\": c, -- high tom \n\"t2\": b,, -- middle tom\n\"t3\": g,, -- low tom\n\"t4\": f,,"}, {"path": "templates/bass.blues.template", "data": "[\ntype: template;\nname: bass.blues.normal; \ninstrument: bass;\n{\n /do: swing _grid=8 _offset =60/\n I,,,8 & I,,& VII,,,& V,,,& |\n}\n]"}, {"path": "templates/bass.bossanova.template", "data": "[\ntype: template;\nname: bass.bossanova.normal;\ninstrument: bass; \n{\n \\fff\n I,,4. V,,8 V,,4. I,,8 |\n I,,4. V,,8 V,,4 I,,4 |\n I,,4. V,,8 V,,4. I,,8 |\n I,,4. V,,8 V,,4 I,,8 V,,8 |\n} \n] \n"}, {"path": "templates/bass.country.template", "data": "[\ntype: template;\nname: bass.country.normal;\ninstrument: bass; \n{\n I,,4. I,,8 V,,,4. V,,,8 |\n} \n] \n\n[\ntype: template;\nname: bass.country.ende;\ninstrument: bass; \n{\n I,,1 |\n} \n] "}, {"path": "templates/bass.disco.template", "data": "[\ntype: template;\nname: bass.disco.normal;\ninstrument: bass;\n{\n \\ffff\n I,,8 I,16 I,16 I,,8 I,16 I,16 I,,8 I,16 I,16 I,,8 I,16 I,16 |\n} \n]\n"}, {"path": "templates/bass.jazzSwing.template", "data": "-- tempo: 155\n-- signature: 4/4\n-- parts: normal\n[\ntype: template;\nname: bass.jazzSwing.normal;\ninstrument: bass; \n{\n I,,2 V,, | \n I,, V,,,4 I,, |\n}\n\n]\n"}, {"path": "templates/bass.reggae.template", "data": "using \"lua/mods/swing.lua\";\n\n[\ntype: template;\nname: bass.reggae.normal;\ninstrument: bass;\n{\n /do: swing _grid=8 _offset =30/\n I,,16 r16 I,,8 r2 V,,,4 |\n I,,16 r16 r8 I,,8 r4. V,,,4 |\n I,,16 r16 I,,8 r2 V,,,4 |\n I,,16 r16 I,,8 r2 V,,,4 |\n}\n]"}, {"path": "templates/bass.soca.template", "data": "[\ntype: template;\nname: bass.soca.normal;\ninstrument: bass;\n{\n r8 r16 I,,32 r32 I,,8 I,,16 r \n r8 r16 I,,32 r32 r16 I,,32 r V,,, r I,, r |\n}\n]"}, {"path": "templates/bossanova.template", "data": "using \"lua/voicings/voicelead.lua\";\nusing \"lua/voicings/simple.lua\";\nusing \"lua/voicings/guitar.lua\";\nusing \"lua/mods/guitarStroke.lua\";\n\n[\ntype: template;\nname: bossanova.normal;\ninstrument: drums;\n{\n \"ht\"8 !f\"ht\" \"ht\" !f\"ht\" \"ht\" \"ht\" \"ht\" !f\"ht\" |\n} \n{\n \\fff\n r4 \"ss\"8 r4 \"ss\"8 r4 | \"ss\"4. \"ss\"8 r4 \"ss\" |\n} \n{\n \"bd\"4. \"bd\"8 \"bd\"4. \"bd\"8 |\n} \n]\n\n[\ntype: template;\nname: bossanova.normal;\ninstrument: guitar; \n{\n /do: guitarStroke _value=32/\n /voicingStrategy: guitar/\n \\f\n <I II III IV V VI VII>4 <I II III IV V VI VII>4 r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>8 |\n r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>8 r4 <I II III IV V VI VII>4 |\n <I II III IV V VI VII>4 <I II III IV V VI VII>4 r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>8 |\n r4 r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>4. |\n} \n] \n\n[\ntype: template;\nname: bossanova.normal;\ninstrument: piano; \n{\n -- /voicingStrategy: simple _range=tenor/\n <VII, VII>4 <III, V,>8 <V, V>8 r8 <III, V,>8 r8 <V, V> | r8 <III, V,>8 r8 <V, V> r8 <III, V,> r8 <VII, VII> |\n} \n] \n\n[\ntype: template;\nname: bossanova.normal;\ninstrument: bass; \n{\n \\fff\n I,,4. V,,8 V,,4. I,,8 |\n I,,4. V,,8 V,,4 I,,4 |\n I,,4. V,,8 V,,4. I,,8 |\n I,,4. V,,8 V,,4 I,,8 V,,8 |\n} \n] \n"}, {"path": "templates/countryschlager1.template", "data": "using \"lua/voicings/guitar.lua\";\nusing \"lua/voicings/voicelead.lua\";\nusing \"lua/mods/guitarStroke.lua\";\n\n[\ntype: template;\nname: countryschlager1.normal;\ninstrument: guitar; \n{\n /do: guitarStroke/\n /voicingStrategy: guitar _range=tenor/\n \\f\n <I II III IV V VI VII>8 <I II III IV V VI VII>8 r8 \n <I II III IV V VI VII>4 <I II III IV V VI VII>8 <I II III IV V VI VII>8 <I II III IV V VI VII>8 |\n} \n]\n\n[\ntype: template;\nname: countryschlager1.normal;\ninstrument: slide; \n{\n \\f\n /modOnce: bend from 0/\n r1 |\n r1 |\n r1 |\n <I' II' III' IV' V' VI' VII'>1 |\n r1 |\n r1 |\n r1 |\n /modOnce: bend to 100/\n <I' II' III' IV' V' VI' VII'>1 |\n} \n] \n\n[\ntype: template;\nname: countryschlager1.normal;\ninstrument: bass; \n{\n I,,4. I,,8 V,,,4. V,,,8 |\n} \n] \n\n[\ntype: template;\nname: countryschlager1.normal;\ninstrument: drums;\n{\n \"ht\"8 !f\"ht\"8 \"ht\"8 !f\"ht\"8 \"ht\"8 !f\"ht\"8 \"ht\"8 !f\"ht\"8 |\n} \n{\n r4 \"sn\" r \"sn\" |\n}\n{\n \"bd\"4. \"bd\"8 \"bd\"4. \"bd\"8 |\n \"bd\"4. \"bd\"8 \"bd\"4. \"bd\"8 |\n \"bd\"4. \"bd\"8 \"bd\"8 !f\"bd\"8 r8 \"bd\"8 |\n} \n] \n\n[\ntype: template;\nname: countryschlager1.ende;\ninstrument: guitar; \n{\n /do: guitarStroke _value=8/\n <I II III IV V VI VII>1 |\n} \n] \n\n[\ntype: template;\nname: countryschlager1.ende;\ninstrument: bass; \n{\n I,,1 |\n} \n] \n\n[\ntype: template;\nname: countryschlager1.ende;\ninstrument: drums;\n{\n \"cy\"1 |\n} \n{\n \"bd\"1|\n} \n]\n\n[\ntype: template;\nname: countryschlager1.ende;\ninstrument: slide; \n{\n \\f\n /modOnce: bend from 1/\n <I' II' III' IV' V' VI' VII'>1 |\n} \n] \n"}, {"path": "templates/drums.bossanova.template", "data": "[\ntype: template;\nname: drums.bossanova.normal;\ninstrument: drums;\n{\n \"ht\"8 !f\"ht\" \"ht\" !f\"ht\" \"ht\" \"ht\" \"ht\" !f\"ht\" |\n} \n{\n \\fff\n r4 \"ss\"8 r4 \"ss\"8 r4 | \"ss\"4. \"ss\"8 r4 \"ss\" |\n} \n{\n \"bd\"4. \"bd\"8 \"bd\"4. \"bd\"8 |\n} \n]"}, {"path": "templates/drums.country.template", "data": "[\ntype: template;\nname: drums.country.normal;\ninstrument: drums;\n{\n \"ht\"8 !f\"ht\"8 \"ht\"8 !f\"ht\"8 \"ht\"8 !f\"ht\"8 \"ht\"8 !f\"ht\"8 |\n} \n{\n r4 \"sn\" r \"sn\" |\n}\n{\n \"bd\"4. \"bd\"8 \"bd\"4. \"bd\"8 |\n \"bd\"4. \"bd\"8 \"bd\"4. \"bd\"8 |\n \"bd\"4. \"bd\"8 \"bd\"8 !f\"bd\"8 r8 \"bd\"8 |\n} \n] \n\n[\ntype: template;\nname: drums.country.cymbal;\ninstrument: drums;\n{\n \"cy\"4 \"ht\"8 !f\"ht\"8 \"ht\"8 !f\"ht\"8 \"ht\"8 !f\"ht\"8 |\n} \n{\n r4 \"sn\" r \"sn\" |\n}\n{\n \"bd\"4. \"bd\"8 \"bd\"4. \"bd\"8 |\n} \n] \n\n[\ntype: template;\nname: drums.country.ende;\ninstrument: drums;\n{\n \"cy\"1 |\n} \n{\n \"bd\"1|\n} \n]"}, {"path": "templates/drums.disco.template", "data": "[\ntype: template;\nname: drums.disco.normal;\ninstrument: drums;\n{\n r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 \"ht\"16 \"ht\"16 r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 \"ht\"16 \"ht\"16 |\n r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 \"ht\"16 \"ht\"16 r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 !ffff<\"sn\" \"ht\">16 !fffff\"sn\"16 |\n \"cy\"8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 \"ht\"16 \"ht\"16 r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 \"ht\"16 \"ht\"16 |\n r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 \"ht\"16 \"ht\"16 r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 <\"sn\" \"ht\">16 !fffff\"sn\"16 |\n} \n{\n \"bd\"4 \"bd\" \"bd\" \"bd\" |\n} \n] \n\n[\ntype: template;\nname: drums.disco.solo;\ninstrument: drums;\n{\n \"bd\"4 \"bd\" \"bd\" \"bd\" |\n} \n] \n\n[\ntype: template;\nname: drums.disco.solo2;\ninstrument: drums;\n{\n \"cy\"8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 \"ht\"16 \"ht\"16 r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 \"ht\"16 \"ht\"16 |\n r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 \"ht\"16 \"ht\"16 r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 <\"sn\" \"ht\">16 !fffff\"sn\"16 |\n} \n{\n \"bd\"4 \"bd\" \"bd\" \"bd\" |\n} \n] "}, {"path": "templates/drums.jazzSwing.template", "data": "-- tempo: 155\n-- signature: 4/4\n-- parts: normal, bridge\n[\ntype: template;\nname: drums.jazzSwing.bridge;\ninstrument: drumsBrushes; \n{\n (!ff\"rcym1\" r r)4 (\"rcym1\" r !p\"rcym1\") (!ff\"rcym1\" r r) (\"rcym1\" r !p\"rcym1\")\n}\n{\n (r r \"brtp\")4 r4 (r r !p\"brtp\")4 r4 |\n (r r !p\"brtp\")4 r4 (r r !p\"brtp\")4 r4 |\n (r r !p\"brtp\")4 r4 (r r !p\"brtp\")4 r4 |\n (r r !p\"brtp\")4 (r !pp\"brtp\"4 r) (r r !p\"brtp\")4 r4 |\n}\n{\n \\pp\n \"bd2\"4 (r r \"bd2\")4 r2 |\n}\n]\n\n[\ntype: template;\nname: drums.jazzSwing.normal;\ninstrument: drumsBrushes; \n{\n \\pp\n (\"brtp\" !pppp\"brsw\" r)4 (!ppp\"brsp\" r \"brtp\") (\"brtp\" !pppp\"brsw\" r) (!pp\"brsp\" r !p\"brtp\") \n}\n{\n \\p\n r4 \"ht\" r &\n}\n{\n !pp\"bd2\"1 |\n}\n]"}, {"path": "templates/drums.purdie.template", "data": "[\ntype: template;\nname: drums.purdie.normal;\ninstrument: drums; \n{\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n \\p\"ho\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t r8t !pp\"ho\"8t !pp\"ht\"8t |\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n \\f\"ho\"8t \"ht\"8t \"bd\"8t \\f\"ho\"8t \"ht\"8t r8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n}\n{\n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t |\n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t | \n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !ppp\"sn\"8t !pp\"sn\"8t |\n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t |\n\n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t |\n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t | \n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r4t r8t | \n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t |\n\n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t |\n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t | \n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !ppp\"sn\"8t !pp\"sn\"8t |\n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t | \n}\n{\n \"bd\"4t r8t r4t \"bd\"8t r4t r8t \"bd\"4t r8t |\n}\n]"}, {"path": "templates/drums.reggae.template", "data": "using \"lua/mods/swing.lua\";\n\n\n[\ntype: template;\nname: drums.reggae.normal;\ninstrument: drums; \n{\n\n}\n{\n /do: swing _grid=8 _offset =50/\n !f\"ht\"4 &8 !p& \"ht\"4 &8 !p&|\n !f\"ht\"4 \"ht\"8t & & \"ht\"4 &8 !p&|\n !f\"ht\"4 !pp\"ho1\"4 \"ht\"4 &8 !p&|\n}\n{\n r r \"bd\"4 r |\n r r \"sn\"4 r |\n}\n]\n\n--\n\n[\ntype: template;\nname: drums.reggae.fill1;\ninstrument: drums; \n{\n\n}\n{\n /do: swing _grid=8 _offset =50/\n !f\"ht\"4 !p\"ho2\"4 r2 |\n}\n{\n /do: swing _grid=8 _offset =50/\n r \"hto1\"64->\"hto1\"4. \"mto1\"8 \"mto1\"8t r \"mto1\" |\n}\n]\n\n[\ntype: template;\nname: drums.reggae.fill2;\ninstrument: drums; \n{\n\n}\n{\n /do: swing _grid=8 _offset =50/\n !f\"ht\"4 \"ht\"4 r2 |\n}\n{\n /do: swing _grid=16 _offset =50/\n !f\"tim1\"32->!p\"tim2\"8t & & \"hto1\"4 r2 |\n}\n]\n"}, {"path": "templates/drums.soca.template", "data": "[\ntype: template;\nname: drums.soca.normal;\ninstrument: drums;\n{\n \"ago1\"16 & \"ago2\" & \"ago1\" & \"ago2\" & \"ago1\"16 & \"ago2\" & \"ago1\" & \"ago2\" & |\n}\n{\n \"cwb\"8 & &16 & r \"cwb\" r16 \"cwb\" r \"cwb\" \"cwb\" r & r | \n}\n{\n \\p\n \"ht\"16 & \"ho\"8 \"ht\"16 & \"ho\"8 \"ht\"16 & \"ho\"8 \"ht\"16 & \"ho\"8 |\n}\n{\n \\ffff\n r8. \"sn\"16 r8 \"sn\" r8. \"sn\"16 r8 \"sn\" |\n}\n{\n \"bd\"4 \"bd\" \"bd\" \"bd\" |\n}\n]\n\n[\ntype: template;\nname: drums.soca.bridge;\ninstrument: drums;\n{\n \"ago1\"16 & \"ago2\" & \"ago1\" & \"ago2\" & \"ago1\"16 & \"ago2\" & \"ago1\" & \"ago2\" & |\n}\n{\n \"cwb\"8 & &16 & r \"cwb\" r16 \"cwb\" r \"cwb\" \"cwb\" r & r | \n}\n{\n \\fff\n \"mtr\"16 & \"otr\"8 \"mtr\"16 & \"otr\"8 \"mtr\"16 & \"otr\"8 \"mtr\"16 & \"otr\"8 |\n}\n{\n \\p\n !ff\"spl\"16 \"ht\" \"ho\"8 \"ht\"16 & \"ho\"8 \"ht\"16 & \"ho\"8 \"ht\"16 & \"ho\"8 |\n \"ht\"16 & \"ho\"8 \"ht\"16 & \"ho\"8 \"ht\"16 & \"ho\"8 \"ht\"16 & \"ho\"8 |\n}\n{\n \\f\n r4 r16 \"bo1\" \"bo2\" & r4 r16 \"bo1\" \"bo2\" & |\n}\n{\n \\pp\n r4 r16 \"cla\" r8 \"cla\" r16 \"cla\"16 r4 |\n}\n{\n \\fffff\n r8. \"sn\"16 r8 \"sn\" r8. \"sn\"16 r8 \"sn\" |\n r8. \"sn\"16 r8 \"sn\" r4 r16 !fff\"sn\" !ffff& !fffff& |\n}\n{\n \"bd\"4 \"bd\" \"bd\" \"bd\" |\n}\n]"}, {"path": "templates/ennio.template", "data": "[\ntype: template;\nname: ennio.normal;\ninstrument: piano; \n{\n !ffffI,,4 <II, III, IV, V, VI, VII,> <II, III, IV, V, VI, VII,> !fffV,,, |\n}\n] \n"}, {"path": "templates/guitar.bossanova.template", "data": "[\ntype: template;\nname: guitar.bossanova.normal;\ninstrument: guitar; \n{\n /voicingStrategy: simpleGuitar/\n \\f\n <I II III IV V VI VII>4 <I II III IV V VI VII>4 r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>8 |\n r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>8 r4 <I II III IV V VI VII>4 |\n <I II III IV V VI VII>4 <I II III IV V VI VII>4 r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>8 |\n r4 r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>4. |\n} \n] "}, {"path": "templates/guitar.country.template", "data": "using \"lua/voicings/guitar.lua\";\n\n[\ntype: template;\nname: guitar.country.normal;\ninstrument: guitar; \n{\n /voicingStrategy: guitar _range=mezzosoprano/\n \\f\n <I II III IV V VI VII>8 <I II III IV V VI VII>8 r8 \n <I II III IV V VI VII>4 <I II III IV V VI VII>8 <I II III IV V VI VII>8 <I II III IV V VI VII>8 |\n} \n]\n\n[\ntype: template;\nname: guitar.country.ende;\ninstrument: guitar; \n{\n <I II III IV V VI VII>1 |\n} \n] \n"}, {"path": "templates/rhythm.bossanova.template", "data": "[\ntype: template;\nname: rhythm.bossanova.normal;\ninstrument: rhythm; \n{\n \\f\n <I II III IV V VI VII>4 <I II III IV V VI VII>4 r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>8 |\n r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>8 r4 <I II III IV V VI VII>4 |\n <I II III IV V VI VII>4 <I II III IV V VI VII>4 r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>8 |\n r4 r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>4. |\n} \n] "}, {"path": "templates/rhythm.country.template", "data": "using \"lua/voicings/guitar.lua\";\n\n[\ntype: template;\nname: rhythm.country.normal;\ninstrument: rhythm; \n{\n \\f\n <I II III IV V VI VII>8 <I II III IV V VI VII>8 r8 \n <I II III IV V VI VII>4 <I II III IV V VI VII>8 <I II III IV V VI VII>8 <I II III IV V VI VII>8 |\n} \n]\n\n[\ntype: template;\nname: rhythm.country.ende;\ninstrument: rhythm; \n{\n /doOnce: arpeggio/\n <I II III IV V VI VII>4~ <I II III IV V VI VII>2. |\n} \n] \n"}, {"path": "templates/rhythm.jazzSwing.template", "data": "-- tempo: 155\n-- signature: 4/4\n-- parts: normal\n[\ntype: template;\nname: rhythm.jazzSwing.normal;\ninstrument: rhythm2; \n{\n \\f\n <I,, V, VII, I III>1~ | &4 (r r &) r2 |\n\n (<V, VII, I III> r r)4 r <V, VII, I III>4 r |\n \n (<V, VII, I III> r I,,)4 r <V, VII, I III>4 r |\n\n <I,, V, VII, I III>1~ | &4 (r r &) r2 |\n\n (<V, VII, I III> r r)4 r <V, VII, I III>4 r |\n\n <V, VII, I III> r I,,4 (I,, r <V, VII, I III>~) (<V, VII, I III> r I,,) |\n}\n]\n"}, {"path": "templates/rhythm.reggae.template", "data": "using \"lua/mods/swing.lua\";\nusing \"lua/mods/staccato.lua\";\n\n[\ntype: template;\nname: rhythm.reggae.normal;\ninstrument: rhythm;\n{\n \\f\n /do: swing _grid=8 _offset =40/\n r4 /modOnce: staccato _amount=100/ <I II III IV V VI VII>8 /modOnce: staccato _amount=40/ <I II III IV V VI VII>8 \n r4 /modOnce: staccato _amount=100/ <I II III IV V VI VII>8 /modOnce: staccato _amount=40/ <I II III IV V VI VII>8 \n |\n\n}\n]"}]
|
|
1
|
+
[{"path": "chords/default.chords", "data": "-------------------------------------------------------------------------\n-- Here you can define your chord symbols, containing its degrees and its semitones.\n-- A degree in parantheses specifies chord adjunct degrees. \n-- Those degrees are not being rendered, unless your force them to appear using a leading !.\n-- see https://werckme.github.io/manual#adjunct-chord-tones\n-------------------------------------------------------------------------\nX: I=0 (II=2) III=4 (IV=5) V=7 (VI=9) (VII=11)\nXmin: I=0 (II=2) III=3 (IV=5) V=7 (VI=9) (VII=10)\nX-: I=0 (II=2) III=3 (IV=5) V=7 (VI=9) (VII=10)\nX/7: I=0 (II=2) III=4 (IV=5) V=7 (VI=9) VII=-2\nX-/7: I=0 (II=2) III=3 (IV=5) V=7 (VI=9) VII=-2\nX/maj7: I=0 (II=2) III=4 (IV=5) V=7 (VI=9) VII=-1\nX/5: I=0 (II=2) III=4 (IV=5) V=-5 (VI=9) (VII=10)\nX-/5: I=0 (II=2) III=3 (IV=5) V=-5 (VI=9) (VII=11)\nX/4: I=0 (II=2) III=4 IV=-7 V=7 (VI=9) (VII=10)\nX7/4: I=0 (II=2) III=4 IV=-7 V=7 (VI=9) VII=10\nX-/4: I=0 (II=2) III=3 IV=-7 V=7 (VI=9) (VII=10)\nX-/3: I=0 (II=2) III=-9 (IV=5) V=7 (VI=9) (VII=10)\nX/3: I=0 (II=2) III=-8 (IV=5) V=7 (VI=9) (VII=11)\nX/2: I=0 II=-10 III=4 (IV=5) V=7 (VI=9) (VII=11)\nX-7b5/b5: \tI=0 (II=2) III=3 (IV=5) V=-6 (VI=9) VII=10\n-------------------------------------------------------------------------\nXsus4: I=0 (II=2) (III=4) IV=5 V=7 (VI=9) (VII=11) \nX7sus4: I=0 (II=2) (III=4) IV=5 V=7 (VI=9) VII=10\nX9sus4: I=0 II=2 (III=4) IV=5 V=7 (VI=9) (VII=11)\nXsus2: I=0 II=2 (III=4) (IV=5) V=7 (VI=9) (VII=11)\n-------------------------------------------------------------------------\nX6: I=0 (II=2) III=4 (IV=5) V=7 VI=9 (VII=11)\nX-6: I=0 (II=2) III=3 (IV=5) V=7 VI=9 (VII=11)\nX-6/9: I=0 II=2 III=3 (IV=5) V=7 VI=9 (VII=11)\n-------------------------------------------------------------------------\nX7: I=0 (II=2) III=4 (IV=5) V=7 (VI=9) VII=10\nXmin7: I=0 (II=2) III=3 (IV=5) V=7 (VI=9) VII=10\nX-7: I=0 (II=2) III=3 (IV=5) V=7 (VI=9) VII=10\nXmaj7: I=0 (II=2) III=4 (IV=5) V=7 (VI=9) VII=11\nXmaj7b5: I=0 (II=2) III=4 (IV=5) V=6 (VI=9) VII=11\nX-7b5: I=0 (II=2) III=3 (IV=5) V=6 (VI=9) VII=10\nXmaj7#11: I=0 (II=2) III=4 IV=6 (V=7) (VI=9) VII=11\nX7b5: I=0 (II=2) III=4 (IV=5) V=6 (VI=9) VII=10\nX07: I=0 (II=2) III=3 (IV=5) V=6 (VI=8) VII=9\nX7#5: I=0 (II=2) III=4 (IV=5) V=8 (VI=9) VII=10\nX7#5#9: I=0 II=3 III=4 (IV=5) V=8 (VI=9) VII=10\n-------------------------------------------------------------------------\nX2: I=0 II=2 (III=4) (IV=5) V=7 (VI=9) (VII=11) \nX9: I=0 II=2 III=4 (IV=5) V=7 (VI=9) VII=10\n-- to distinguish between Xb9 (Xflat and 9) and Xb9 (X and flat 9)\n-- we write Xflat9 for the latter.\nXflat9: I=0 II=1 III=4 (IV=5) V=7 (VI=9) (VII=11) \nXsharp9: I=0 II=3 III=4 (IV=5) V=7 (VI=9) (VII=11) \nXmin9: I=0 II=2 III=3 (IV=5) V=7 (VI=9) VII=10\nX-9: I=0 II=2 III=3 (IV=5) V=7 (VI=9) VII=10\nXminAdd9: I=0 II=2 III=3 (IV=5) V=7 (VI=9) (VII=10)\nX-add9: I=0 II=2 III=3 (IV=5) V=7 (VI=9) (VII=10)\nXmaj9: I=0 II=2 III=4 (IV=5) V=7 (VI=9) VII=11\nX7#9: I=0 II=3 III=4 (IV=5) V=7 (VI=9) VII=10\nX7b9: I=0 II=1 III=4 (IV=5) V=7 (VI=9) VII=10\nXmaj7b9: I=0 II=1 III=4 (IV=5) V=7 (VI=9) VII=11\n-------------------------------------------------------------------------\nX11: I=0 (II=2) III=4 IV=5 V=7 (VI=9) VII=10\n-- to distinguish between Xb11 (Xflat and 11) and Xb11 (X and flat 11)\n-- we write Xflat9 for the latter.\nXflat11: I=0 (II=2) III=3 IV=4 V=7 (VI=9) (VII=11)\nXsharp11: I=0 (II=2) III=4 IV=6 (V=7) (VI=9) VII=10\nXmin11: I=0 (II=2) III=3 IV=5 V=7 (VI=9) VII=10\nX-11: I=0 (II=2) III=3 IV=5 V=7 (VI=9) VII=10\nXmaj11: I=0 (II=2) III=4 IV=5 V=7 (VI=9) VII=11\n------------------------------------------------------------------\nX13: I=0 (II=2) III=4 (IV=5) V=7 VI=9 VII=10\nXflat13: I=0 (II=2) III=4 (IV=5) (V=7) VI=8 (VII=11)\nXsharp13: I=0 (II=2) III=4 (IV=5) (V=7) VI=10 (VII=11)\nXmin13: I=0 (II=2) III=3 (IV=5) V=7 VI=9 VII=10\nX-13: I=0 (II=2) III=3 (IV=5) V=7 VI=9 VII=10\nXmaj13: I=0 (II=2) III=4 (IV=5) V=7 VI=9 VII=11"}, {"path": "lua/com/com.lua", "data": "local _inspect = require \"lua/com/inspect\"\n\nlocal MidiSchluesselCOffset = 60\nParameterValueNoTag = '__noTagValue'\n\nfunction istable(t) return type(t) == 'table' end\nfunction isnumber(t) return type(t) == 'number' end\nfunction inspect(x) return print(_inspect(x)) end\nfunction dump(x) print(inspect(x)) end\n\n\nfunction checkLegacyNamedParams(params, ...)\n local args = table.pack(...)\n for k, v in pairs(params) do\n if contains(args, v) then\n local msg = \"Error: legacy named parameter with the argument '\" .. v .. \"'. \"\n msg = msg .. \" Use this expression instead: _\" .. v .. \"=...\" \n error(msg)\n end\n end\nend\n\n-- returns the minimum amount of semitones between the relative pitches x and y.\n-- e.g.: from c(0) to b(11) = -1\nfunction relpitchdiff(x, y)\n x = x % 12\n y = y % 12\n if math.abs(x-y) < 6 then\n return -(x-y)\n end\n if x < 6 then \n x = x + 12 \n end\n if y < 6 then\n y = y + 12\n end\n return -(x-y)\nend\n\n-- [a, 1, b, 2, c, 3] => {a=1, b=2, c=3}\n-- @deprecated use the native named parameter feature: _name=value\nfunction tokeyvalue(args)\n assert(#args % 2 == 0)\n local result = {}\n for i=1, #args, 2 do\n result[ args[i] ] = args[i+1]\n end\n return result\nend\n\nfunction toMidiPitch(pitch)\n return MidiSchluesselCOffset + pitch.pitch + (pitch.octave * 12)\nend\n\nfunction deepcopy(o, seen)\n seen = seen or {}\n if o == nil then return nil end\n if seen[o] then return seen[o] end\n \n local no\n if type(o) == 'table' then\n no = {}\n seen[o] = no\n \n for k, v in next, o, nil do\n no[deepcopy(k, seen)] = deepcopy(v, seen)\n end\n setmetatable(no, deepcopy(getmetatable(o), seen))\n else -- number, string, boolean, etc\n no = o\n end\n return no\nend\n\nfunction contains(table, value)\n if table == nil then\n return false\n end\n for k, v in pairs(table) do\n if v == value then\n return true\n end\n end\n return false\nend\n\n-- https://stackoverflow.com/questions/1426954/split-string-in-lua#1426970\nfunction split(pString, pPattern)\n local Table = {} -- NOTE: use {n = 0} in Lua-5.0\n local fpat = \"(.-)\" .. pPattern\n local last_end = 1\n local s, e, cap = pString:find(fpat, 1)\n while s do\n if s ~= 1 or cap ~= \"\" then\n table.insert(Table,cap)\n end\n last_end = e+1\n s, e, cap = pString:find(fpat, last_end)\n end\n if last_end <= #pString then\n cap = pString:sub(last_end)\n table.insert(Table, cap)\n end\n return Table\n end\n\nfunction FilterEventsByTagName(events, tagName)\n local result = {}\n for _, event in pairs(events) do\n if contains(event.tags, tagName) then\n table.insert(result, event)\n end\n end\n return result\n end"}, {"path": "lua/com/globals.lua", "data": "I = 1\nII = 2\nIII = 3\nIV = 4\nV = 5\nVI = 6\nVII = 7\n\nDegreeStringValues = {\n I = I,\n II = II,\n III = III,\n IV = IV,\n V = V,\n VI = VI,\n VII = VII\n}\n\nMajorScaleSemitones = {\n I = 0,\n II = 2,\n III = 4,\n IV = 5,\n V = 7,\n VI = 9,\n VII = 11\n}\n\nC = 0\nCIS = 1\nDES = 1\nD = 2\nDIS = 3\nES = 3\nE = 4\nFES = 4\nF = 5\nFIS = 6\nGES = 6\nG = 7\nGIS = 8\nAS = 8\nA = 9\nAIS = 10\nBES = 10\nB = 11\nCES = 11\n"}, {"path": "lua/com/inspect.lua", "data": "local inspect ={\n _VERSION = 'inspect.lua 3.1.0',\n _URL = 'http://github.com/kikito/inspect.lua',\n _DESCRIPTION = 'human-readable representations of tables',\n _LICENSE = [[\n MIT LICENSE\n\n Copyright (c) 2013 Enrique Garc\u00eda Cota\n\n Permission is hereby granted, free of charge, to any person obtaining a\n copy of this software and associated documentation files (the\n \"Software\"), to deal in the Software without restriction, including\n without limitation the rights to use, copy, modify, merge, publish,\n distribute, sublicense, and/or sell copies of the Software, and to\n permit persons to whom the Software is furnished to do so, subject to\n the following conditions:\n\n The above copyright notice and this permission notice shall be included\n in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n ]]\n}\n\nlocal tostring = tostring\n\ninspect.KEY = setmetatable({}, {__tostring = function() return 'inspect.KEY' end})\ninspect.METATABLE = setmetatable({}, {__tostring = function() return 'inspect.METATABLE' end})\n\nlocal function rawpairs(t)\n return next, t, nil\nend\n\n-- Apostrophizes the string if it has quotes, but not aphostrophes\n-- Otherwise, it returns a regular quoted string\nlocal function smartQuote(str)\n if str:match('\"') and not str:match(\"'\") then\n return \"'\" .. str .. \"'\"\n end\n return '\"' .. str:gsub('\"', '\\\\\"') .. '\"'\nend\n\n-- \\a => '\\\\a', \\0 => '\\\\0', 31 => '\\31'\nlocal shortControlCharEscapes = {\n [\"\\a\"] = \"\\\\a\", [\"\\b\"] = \"\\\\b\", [\"\\f\"] = \"\\\\f\", [\"\\n\"] = \"\\\\n\",\n [\"\\r\"] = \"\\\\r\", [\"\\t\"] = \"\\\\t\", [\"\\v\"] = \"\\\\v\"\n}\nlocal longControlCharEscapes = {} -- \\a => nil, \\0 => \\000, 31 => \\031\nfor i=0, 31 do\n local ch = string.char(i)\n if not shortControlCharEscapes[ch] then\n shortControlCharEscapes[ch] = \"\\\\\"..i\n longControlCharEscapes[ch] = string.format(\"\\\\%03d\", i)\n end\nend\n\nlocal function escape(str)\n return (str:gsub(\"\\\\\", \"\\\\\\\\\")\n :gsub(\"(%c)%f[0-9]\", longControlCharEscapes)\n :gsub(\"%c\", shortControlCharEscapes))\nend\n\nlocal function isIdentifier(str)\n return type(str) == 'string' and str:match( \"^[_%a][_%a%d]*$\" )\nend\n\nlocal function isSequenceKey(k, sequenceLength)\n return type(k) == 'number'\n and 1 <= k\n and k <= sequenceLength\n and math.floor(k) == k\nend\n\nlocal defaultTypeOrders = {\n ['number'] = 1, ['boolean'] = 2, ['string'] = 3, ['table'] = 4,\n ['function'] = 5, ['userdata'] = 6, ['thread'] = 7\n}\n\nlocal function sortKeys(a, b)\n local ta, tb = type(a), type(b)\n\n -- strings and numbers are sorted numerically/alphabetically\n if ta == tb and (ta == 'string' or ta == 'number') then return a < b end\n\n local dta, dtb = defaultTypeOrders[ta], defaultTypeOrders[tb]\n -- Two default types are compared according to the defaultTypeOrders table\n if dta and dtb then return defaultTypeOrders[ta] < defaultTypeOrders[tb]\n elseif dta then return true -- default types before custom ones\n elseif dtb then return false -- custom types after default ones\n end\n\n -- custom types are sorted out alphabetically\n return ta < tb\nend\n\n-- For implementation reasons, the behavior of rawlen & # is \"undefined\" when\n-- tables aren't pure sequences. So we implement our own # operator.\nlocal function getSequenceLength(t)\n local len = 1\n local v = rawget(t,len)\n while v ~= nil do\n len = len + 1\n v = rawget(t,len)\n end\n return len - 1\nend\n\nlocal function getNonSequentialKeys(t)\n local keys, keysLength = {}, 0\n local sequenceLength = getSequenceLength(t)\n for k,_ in rawpairs(t) do\n if not isSequenceKey(k, sequenceLength) then\n keysLength = keysLength + 1\n keys[keysLength] = k\n end\n end\n table.sort(keys, sortKeys)\n return keys, keysLength, sequenceLength\nend\n\nlocal function countTableAppearances(t, tableAppearances)\n tableAppearances = tableAppearances or {}\n\n if type(t) == 'table' then\n if not tableAppearances[t] then\n tableAppearances[t] = 1\n for k,v in rawpairs(t) do\n countTableAppearances(k, tableAppearances)\n countTableAppearances(v, tableAppearances)\n end\n countTableAppearances(getmetatable(t), tableAppearances)\n else\n tableAppearances[t] = tableAppearances[t] + 1\n end\n end\n\n return tableAppearances\nend\n\nlocal copySequence = function(s)\n local copy, len = {}, #s\n for i=1, len do copy[i] = s[i] end\n return copy, len\nend\n\nlocal function makePath(path, ...)\n local keys = {...}\n local newPath, len = copySequence(path)\n for i=1, #keys do\n newPath[len + i] = keys[i]\n end\n return newPath\nend\n\nlocal function processRecursive(process, item, path, visited)\n if item == nil then return nil end\n if visited[item] then return visited[item] end\n\n local processed = process(item, path)\n if type(processed) == 'table' then\n local processedCopy = {}\n visited[item] = processedCopy\n local processedKey\n\n for k,v in rawpairs(processed) do\n processedKey = processRecursive(process, k, makePath(path, k, inspect.KEY), visited)\n if processedKey ~= nil then\n processedCopy[processedKey] = processRecursive(process, v, makePath(path, processedKey), visited)\n end\n end\n\n local mt = processRecursive(process, getmetatable(processed), makePath(path, inspect.METATABLE), visited)\n if type(mt) ~= 'table' then mt = nil end -- ignore not nil/table __metatable field\n setmetatable(processedCopy, mt)\n processed = processedCopy\n end\n return processed\nend\n\n\n\n-------------------------------------------------------------------\n\nlocal Inspector = {}\nlocal Inspector_mt = {__index = Inspector}\n\nfunction Inspector:puts(...)\n local args = {...}\n local buffer = self.buffer\n local len = #buffer\n for i=1, #args do\n len = len + 1\n buffer[len] = args[i]\n end\nend\n\nfunction Inspector:down(f)\n self.level = self.level + 1\n f()\n self.level = self.level - 1\nend\n\nfunction Inspector:tabify()\n self:puts(self.newline, string.rep(self.indent, self.level))\nend\n\nfunction Inspector:alreadyVisited(v)\n return self.ids[v] ~= nil\nend\n\nfunction Inspector:getId(v)\n local id = self.ids[v]\n if not id then\n local tv = type(v)\n id = (self.maxIds[tv] or 0) + 1\n self.maxIds[tv] = id\n self.ids[v] = id\n end\n return tostring(id)\nend\n\nfunction Inspector:putKey(k)\n if isIdentifier(k) then return self:puts(k) end\n self:puts(\"[\")\n self:putValue(k)\n self:puts(\"]\")\nend\n\nfunction Inspector:putTable(t)\n if t == inspect.KEY or t == inspect.METATABLE then\n self:puts(tostring(t))\n elseif self:alreadyVisited(t) then\n self:puts('<table ', self:getId(t), '>')\n elseif self.level >= self.depth then\n self:puts('{...}')\n else\n if self.tableAppearances[t] > 1 then self:puts('<', self:getId(t), '>') end\n\n local nonSequentialKeys, nonSequentialKeysLength, sequenceLength = getNonSequentialKeys(t)\n local mt = getmetatable(t)\n\n self:puts('{')\n self:down(function()\n local count = 0\n for i=1, sequenceLength do\n if count > 0 then self:puts(',') end\n self:puts(' ')\n self:putValue(t[i])\n count = count + 1\n end\n\n for i=1, nonSequentialKeysLength do\n local k = nonSequentialKeys[i]\n if count > 0 then self:puts(',') end\n self:tabify()\n self:putKey(k)\n self:puts(' = ')\n self:putValue(t[k])\n count = count + 1\n end\n\n if type(mt) == 'table' then\n if count > 0 then self:puts(',') end\n self:tabify()\n self:puts('<metatable> = ')\n self:putValue(mt)\n end\n end)\n\n if nonSequentialKeysLength > 0 or type(mt) == 'table' then -- result is multi-lined. Justify closing }\n self:tabify()\n elseif sequenceLength > 0 then -- array tables have one extra space before closing }\n self:puts(' ')\n end\n\n self:puts('}')\n end\nend\n\nfunction Inspector:putValue(v)\n local tv = type(v)\n\n if tv == 'string' then\n self:puts(smartQuote(escape(v)))\n elseif tv == 'number' or tv == 'boolean' or tv == 'nil' or\n tv == 'cdata' or tv == 'ctype' then\n self:puts(tostring(v))\n elseif tv == 'table' then\n self:putTable(v)\n else\n self:puts('<', tv, ' ', self:getId(v), '>')\n end\nend\n\n-------------------------------------------------------------------\n\nfunction inspect.inspect(root, options)\n options = options or {}\n\n local depth = options.depth or math.huge\n local newline = options.newline or '\\n'\n local indent = options.indent or ' '\n local process = options.process\n\n if process then\n root = processRecursive(process, root, {}, {})\n end\n\n local inspector = setmetatable({\n depth = depth,\n level = 0,\n buffer = {},\n ids = {},\n maxIds = {},\n newline = newline,\n indent = indent,\n tableAppearances = countTableAppearances(root)\n }, Inspector_mt)\n\n inspector:putValue(root)\n\n return table.concat(inspector.buffer)\nend\n\nsetmetatable(inspect, { __call = function(_, ...) return inspect.inspect(...) end })\n\nreturn inspect\n"}, {"path": "lua/com/tests.lua", "data": "require \"com/com\"\nrequire \"com/globals\"\n\nfunction testpitchdiff(a, b, expected)\n local diff = relpitchdiff(a, b)\n if diff ~= expected then\n print(\"pitchdiff: \" .. a .. \"-\" .. b .. \"~=\" .. expected .. \"(\" .. diff .. \")\" )\n end\nend\n\ntestpitchdiff( 0, 0, 0)\ntestpitchdiff( 0, 5, 5)\ntestpitchdiff( 5, 0, -5)\ntestpitchdiff( 0, 6, -6)\ntestpitchdiff( 6, 0, 6)\ntestpitchdiff( 7, 0, 5)\ntestpitchdiff( 0, 7, -5)\ntestpitchdiff( 7, 1, 6)\ntestpitchdiff( 1, 7, -6)\ntestpitchdiff( 7, 11, 4)\ntestpitchdiff(11, 7, -4)\ntestpitchdiff( 0, 10, -2)\ntestpitchdiff(10, 0, 2)\ntestpitchdiff( 5, 9, 4)\ntestpitchdiff( 9, 5, -4)\ntestpitchdiff( 5, 11, -6)\ntestpitchdiff(11, 5, 6)\ntestpitchdiff( 9, 11, 2)\ntestpitchdiff(11, 9, -2)\ntestpitchdiff(11, 1, 2)\ntestpitchdiff( 1, 11, -2)\ntestpitchdiff( 12, 24, 0)\n\n\nx = tokeyvalue({\"a\", 100, \"b\", 200, \"c\", 300})\nassert(x.a == 100)\nassert(x.b == 200)\nassert(x.c == 300)\n\n\nassert( toMidiPitch({pitch=C, octave=0}) == 60)\nassert( toMidiPitch({pitch=C, octave=1}) == 72)\nassert( toMidiPitch({pitch=CIS, octave=1}) == 73)\nassert( toMidiPitch({pitch=C, octave=-1}) == 48)"}, {"path": "lua/mods/_drumRudimentsRepository.lua", "data": "-- A definition of drum rudiments.\n-- The actual rudiment duration dosen't matter. At the end, the sequence\n-- will be ajdusted, so that it fits into the duration of the related event.\n-- The relations between the different durations is what matters.\n-- For example\n-- A rudiment with four quarters, played over the duration of one eight:\n-- every rudiment quarter will become eventually a 32th\nR=\"R\"\nL=\"L\"\n\nFlamType = \"flam\"\nDragType = \"drag\"\n\n-- durations\nlocal _4 = 1\nlocal _8 = 1/2\nlocal _16 = 1/4\nlocal _32 = 1/8 \nlocal _4t = _4 / 3\nlocal _8t = _8 / 3\nlocal _16t = _16 / 3\nlocal _32t = _32 / 3\n-- velocity factors\nAccent = \"accent\"\nUnaccented = \"unaccented\"\nGraceNote = \"grace note\"\n\nlocal ac = Accent\nlocal un = Unaccented\n\n\n-- create a rudiment sequence event\nlocal function Stroke(which, duration, velocityClass)\n if velocityClass == nil then\n velocityClass = Accent\n end\n return { which=which, duration=duration, velocityClass = velocityClass }\nend\n\nlocal function Flam(which, duration, velocityClass)\n if velocityClass == nil then\n velocityClass = Accent\n end\n return { which=which, duration=duration, velocityClass = velocityClass, type = FlamType}\nend\n\nlocal function Drag(which, duration, velocityClass)\n if velocityClass == nil then\n velocityClass = Accent\n end\n return { which=which, duration=duration, velocityClass = velocityClass, type = DragType}\nend\n\nlocal S = Stroke\n\nlocal function Diddle(which, duration)\n return {\n S(which, duration, un), S(which, duration, un)\n }\nend\n\n-- returns L for R and R for L.\nfunction Alt(which)\n if which == L then\n return R\n elseif which == R then\n return L\n end\n return nil\nend\n\n-- alternates the \"Hand\" value (which).\n-- \"L\" -> \"R\"\n-- \"R\" -> \"L\"\nfunction AlternateEvent(event)\n local copy = deepcopy(event)\n copy.which = Alt(event.which)\n return copy\nend\n\n-- Creates a alternating stroke sequence RL...n or LR...n.\n-- @param startingEvent: the first event. All further created events are unaccented.\n-- @param numberOfPerformances: the number of the total performances. One RL means one performance.\nlocal function Alternate(startingEvent, numberOfPerformances)\n if numberOfPerformances == nil then\n numberOfPerformances = 1\n end\n local result = {startingEvent}\n local which = startingEvent.which\n for i = 0, (numberOfPerformances-1)*2, 1 do\n which = Alt(which)\n table.insert(result, S(which, startingEvent.duration, un))\n end\n return result\nend\n\n-- Creates a sequence of variable args.\n-- An argument can be either a array of events or a single event\nlocal function Seq(...)\n local args = table.pack(...)\n local result = {}\n for i=1,args.n do\n local arg = args[i]\n local isEvent = arg.which ~= nil\n if isEvent then\n table.insert(result, arg)\n else\n for key, event in pairs(arg) do\n table.insert(result, event)\n end\n end\n end\n return result\nend\n\nRudiments = {\n [\"singleStrokeRoll\"] =\n { S(R, _4), S(L, _4) },\n [\"doubleStrokeRoll\"] =\n { S(R, _4), S(R, _4), S(L, _4), S(L, _4) },\n [\"trippleStrokeRoll\"] =\n { S(R, _4), S(R, _4), S(R, _4), S(L, _4), S(L, _4), S(L, _4) },\n [\"fiveStrokeRoll\"] =\n { S(R, _32, un), S(R, _32, un), S(L, _32, un), S(L, _32, un), S(R, _8, ac) },\n [\"singleStrokeFour\"] =\n { S(R, _4t), S(L, _4t), S(R, _4t), S(L, _4) },\n [\"singleStrokeSeven\"] =\n { S(R, _8t), S(L, _8t), S(R, _8t), S(L, _8t), S(R, _8t), S(L, _8t), S(R, _4) },\n [\"multipleBounceRoll\"] =\n { S(R, _32, un), S(R, _32, un), S(R, _32, un), S(R, _32, un),\n S(L, _32, un), S(L, _32, un), S(L, _32, un), S(L, _32, un)},\n [\"sixStrokeRoll\"] =\n Seq(S(R, _8, ac), Diddle(L, _16), Diddle(R, _16), S(L, _8, ac)),\n [\"sevenStrokeRoll\"] =\n Seq(Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), S(R, _8, ac)),\n [\"nineStrokeRoll\"] =\n Seq(Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), S(R, _8, ac)),\n [\"tenStrokeRoll\"] =\n Seq(Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), S(R, _8, ac), S(L, _8, ac)),\n [\"elevenStrokeRoll\"] =\n Seq(Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), S(L, _8, ac)),\n [\"thirteenStrokeRoll\"] =\n Seq(Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), S(R, _8, ac)),\n [\"fifteenStrokeRoll\"] =\n Seq(Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), S(L, _8, ac)),\n [\"seventeenStrokeRoll\"] =\n Seq(Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), Diddle(R, _16), Diddle(L, _16), S(R, _8, ac)),\n [\"paradiddle\"] =\n Seq(Alternate(S(R, _16, ac)), Diddle(R, _16)),\n [\"doubleParadiddle\"] =\n Seq(Alternate(S(R, _16, ac), 2), Diddle(R, _16)),\n [\"trippleParadiddle\"] =\n Seq(Alternate(S(R, _16, ac), 3), Diddle(R, _16)),\n [\"paradiddlediddle\"] =\n Seq(Alternate(S(R, _16, ac)), Diddle(R, _16), Diddle(L, _16)),\n [\"flam\"] =\n Seq(Flam(R, _4)),\n [\"flamAccent\"] =\n Seq(Flam(R, _8, ac), S(L, _8, un), S(R, _8, un)),\n [\"flamTap\"] =\n Seq(Flam(R, _16, ac), S(R, _16, un)),\n [\"flamacue\"] =\n Seq(Flam(R, _16, un), S(L, _16, ac), S(R, _16, un), S(L, _16, un), Flam(R, _4, un)),\n [\"flamParadiddle\"] =\n Seq(Flam(R, _16, ac), S(L, _16, un), Diddle(R, _16)),\n [\"singleFlammedMill\"] =\n Seq(Flam(R, _16, ac), S(R, _16, un), S(L, _16, un), S(R, _16, un)),\n [\"pataflafla\"] =\n Seq(Flam(R, _16, ac), S(L, _16, un), Diddle(R, _16), Flam(L, _16, ac)),\n [\"swissArmytriplet\"] =\n Seq(Flam(R, _16t, ac), S(R, _16t, un), S(L, _16t, un)),\n [\"invertedFlamTap\"] =\n Seq(Flam(R, _16, ac), S(L, _16, un)),\n [\"flamDrag\"] =\n Seq(Flam(R, _8, ac), S(L, _16, un), S(L, _16, un), S(R, _8, un)),\n [\"drag\"] =\n Seq(Drag(R, _4, ac)),\n [\"singleDragTap\"] =\n Seq(Drag(R, _8, un), S(L, _8, ac)),\n [\"doubleDragTap\"] =\n Seq(Drag(R, _8, un), Drag(R, _8, un), S(L, _8, ac)),\n [\"lesson25\"] =\n Seq(Drag(R, _16, un), S(L, _16, un), S(R, _8, ac)),\n [\"singleDragadiddle\"] =\n Seq(Drag(R, _16, ac), S(L, _16, un), Diddle(R, _16)),\n [\"dragParadiddle1\"] =\n Seq(S(R, _8, ac), Drag(R, _16, un), S(L, _16, un), Diddle(R, _16)),\n [\"dragParadiddle2\"] =\n Seq(S(R, _8, ac), Drag(R, _8, un), Drag(R, _16, un), S(L, _16, un), Diddle(R, _16)),\n [\"singleRatamacue\"] =\n Seq(Drag(R, _8t, un), S(L, _8t, un), S(R, _8t, un), S(L, _8, ac)),\n [\"doubleRatamacue\"] =\n Seq(Drag(R, _8, un), Drag(R, _8t, un), S(L, _8t, un), S(R, _8t, un), S(L, _8, ac)),\n [\"trippleRatamacue\"] =\n Seq(Drag(R, _8, un), Drag(R, _8, un), Drag(R, _8t, un), S(L, _8t, un), S(R, _8t, un), S(L, _8, ac)) \n}\n"}, {"path": "lua/mods/_events.lua", "data": "\nNote = {}\n\nfunction Note:new()\n local o = {}\n setmetatable(o, self)\n self.__index = self\n o.duration = 0\n o.isTied = false\n o.offset = 0\n o.pitches = {}\n o.type = \"note\"\n o.velocity = 0\n return o \nend\n\nfunction Note:addPitch(pitch, octave)\n table.insert(self.pitches, {pitch=pitch, octave=octave})\nend\n\nfunction pitchCompare(a, b)\n a = a.pitch + (a.octave * 12)\n b = b.pitch + (b.octave * 12)\n return a < b\nend\n\nfunction pitchCompareReversed(a, b)\n a = a.pitch + (a.octave * 12)\n b = b.pitch + (b.octave * 12)\n return a > b\nend\n"}, {"path": "lua/mods/drumRudiments.lua", "data": "-- <command name=\"drumRudiments\" where=\"mod\" using=\"lua/mod/drumRudiments.lua\">\n-- <)\n-- You can specify which notes are for `L` and `R` and performing duration.\n-- This will be achieved by using an chord as source material.\n-- The chord pitches will be used for `L` and `R`.\n-- The length of the chord event defines over which time the rudiment will be peformed.\n-- An event tag specifies which rudiment will be performed.\n-- For example:\n-- This plays one paradiddle over a length of 1 quarter\n-- using `sn1` for R and `sn2` for L:\n-- ```\n-- /mod: drumRudiments/\\n\n-- R L \\n\n-- \"paradiddle\"@<\"sn1\" \"sn2\">4\\n\n-- ```\n-- Examples:\n-- **a single paradiddle**\n-- ```language=Werckmeister\\n\n--using \"lua/mods/drumRudiments.lua\";\\n\n--tempo: 150;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef:piano MyDevice _ch=0 _pc=118;\\n\n--[\\n\n--instrument: piano;\\n\n--{\\n\n-- /mod: drumRudiments/\\n\n-- -- a paradiddle (RLRR) with c' for R and c for L\\n\n-- \"paradiddle\"@<c' c>1\\n\n--}\\n\n--]\\n\n-- ```\n-- **repeating**\n-- ```language=Werckmeister\\n\n--using \"lua/mods/drumRudiments.lua\";\\n\n--tempo: 120;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef:piano MyDevice _ch=0 _pc=118;\\n\n--[\\n\n--instrument: piano;\\n\n--{\\n\n-- /mod: drumRudiments/\\n\n-- -- performs 4 paradiddles (RLRR LRLL RLRR LRLL) with c' for R and c for L\\n\n-- \"4x paradiddle\"@<c' c>1\\n\n--}\\n\n--]\\n\n-- ```\n-- **orchestration**\n-- If you want to orchestrate a rudiment over a drum set,\n-- you are able to define more R & L notes. *(The total number of the notes has to be even.)*\n-- ```language=Werckmeister\\n\n--using \"lua/mods/drumRudiments.lua\";\\n\n--tempo: 120;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef:piano MyDevice _ch=0 _pc=118;\\n\n--[\\n\n--instrument: piano;\\n\n--{\\n\n-- /mod: drumRudiments/\\n\n-- -- performs 4 paradiddles (RLRR LRLL RLRR LRLL) with \\n\n-- -- c' for R1 and c for L1\\n\n-- -- and c, for R2 and c,, for L2.\\n\n-- -- The final sequence will be: c'(R1) c(L1) c,(R2) c,,(R1) ... \\n\n-- \"4x paradiddle\"@<c' c c, c,,>1\n--}\\n\n--]\\n\n-- ```\n-- **Supported Rudiments**\n--<ul style=\"font-size: 0.9em;\">\n--<li>singleStrokeRoll</li>\n--<li>doubleStrokeRoll</li>\n--<li>trippleStrokeRoll</li>\n--<li>fiveStrokeRoll</li>\n--<li>singleStrokeFour</li>\n--<li>singleStrokeSeven</li>\n--<li>multipleBounceRoll</li>\n--<li>sixStrokeRoll</li>\n--<li>sevenStrokeRoll</li>\n--<li>nineStrokeRoll</li>\n--<li>tenStrokeRoll</li>\n--<li>elevenStrokeRoll</li>\n--<li>thirteenStrokeRoll</li>\n--<li>fifteenStrokeRoll</li>\n--<li>seventeenStrokeRoll</li>\n--<li>paradiddle</li>\n--<li>doubleParadiddle</li>\n--<li>trippleParadiddle</li>\n--<li>paradiddlediddle</li>\n--<li>flam</li>\n--<li>flamAccent</li>\n--<li>flamTap</li>\n--<li>flamacue</li>\n--<li>flamParadiddle</li>\n--<li>singleFlammedMill</li>\n--<li>pataflafla</li>\n--<li>swissArmytriplet</li>\n--<li>invertedFlamTap</li>\n--<li>flamDrag</li>\n--<li>singleDragTap</li>\n--<li>doubleDragTap</li>\n--<li>lesson25</li>\n--<li>singleDragadiddle</li>\n--<li>dragParadiddle1</li>\n--<li>dragParadiddle2</li>\n--<li>singleRatamacue</li>\n--<li>doubleRatamacue</li>\n--<li>trippleRatamacue</li>\n--</ul>\n-- ]]>\n-- </command>\n-- <param name=\"velocityFactorAccented\" optional=\"1\" type=\"0..1\">The velocity factor for accented notes (Default=1)</param>\n-- <param name=\"velocityFactorUnaccented\" optional=\"1\" type=\"0..1\">The velocity factor for unaccented notes (Default=0.7)</param>\n-- <param name=\"velocityFactorGraceNote\" optional=\"1\" type=\"0..1\">The velocity factor for accented notes (Default=1)</param>\n-- <param name=\"flamOffset\" optional=\"1\" type=\"0..N\">The offset in quartes when to perform the grace note before the actual note (Default=0.05)</param>\n-- <param name=\"dragOffset\" optional=\"1\" type=\"0..N\">The offset in quartes when to perform the two grace notes before the actual note (Default=0.05)</param>\n\n\n\nrequire \"lua/com/com\"\nrequire \"_drumRudimentsRepository\"\nrequire \"_events\"\n\nparameters = {\n { name=\"velocityFactorAccented\", default=\"1\" },\n { name=\"velocityFactorUnaccented\", default=\"0.7\" },\n { name=\"velocityFactorGraceNote\", default=\"0.2\" },\n { name=\"flamOffset\", default=\"0.05\" },\n { name=\"dragOffset\", default=\"0.05\" },\n}\n\n\nSupportedRepeatTags = {\n [\"2x\"] = 2,\n [\"3x\"] = 3,\n [\"4x\"] = 4,\n [\"5x\"] = 5,\n [\"6x\"] = 6,\n [\"7x\"] = 7,\n [\"8x\"] = 8,\n [\"9x\"] = 9,\n [\"10x\"] = 10,\n [\"11x\"] = 11,\n [\"12x\"] = 12,\n [\"13x\"] = 13,\n [\"14x\"] = 14,\n [\"15x\"] = 15,\n [\"16x\"] = 16,\n [\"17x\"] = 17,\n [\"18x\"] = 18,\n [\"19x\"] = 19,\n [\"20x\"] = 20,\n [\"21x\"] = 21,\n [\"22x\"] = 22,\n [\"23x\"] = 23,\n [\"24x\"] = 24,\n [\"25x\"] = 25,\n [\"26x\"] = 26,\n [\"27x\"] = 27,\n [\"28x\"] = 28,\n [\"29x\"] = 29,\n [\"30x\"] = 30,\n [\"31x\"] = 31,\n [\"32x\"] = 32,\n}\n\nlocal tiedEventCache = {\n [\"offset\"] = 0,\n [\"duration\"] = 0,\n [\"originEvent\"] = nil\n}\n\nlocal function newTiedEventCache(event)\n tiedEventCache.duration = event.duration\n tiedEventCache.originEvent = event\nend\n\nlocal function isTiedEventCacheEmpty()\n return tiedEventCache.originEvent == nil\nend\n\nlocal function clearTiedEventCache()\n tiedEventCache.originEvent = nil\n tiedEventCache.duration = 0\n tiedEventCache.offset = 0\nend\n\nlocal function getPossibleRudimentEvent(events)\n local firstEvent = events[1]\n if not isTiedEventCacheEmpty() then\n tiedEventCache.duration = tiedEventCache.duration + firstEvent.duration\n tiedEventCache.offset = tiedEventCache.offset - firstEvent.duration\n if firstEvent.isTied then\n return nil\n end\n end\n if not isTiedEventCacheEmpty() and not firstEvent.isTied then\n firstEvent = tiedEventCache.originEvent\n firstEvent.isTied = false\n firstEvent.offset = tiedEventCache.offset\n firstEvent.duration = tiedEventCache.duration\n clearTiedEventCache()\n end\n return firstEvent\nend\n\n\nfunction perform(events, params, timeinfo)\n local firstEvent = getPossibleRudimentEvent(events)\n if (firstEvent == nil) then\n return {}\n end\n if #events == 0 or #firstEvent.tags == 0 then\n return events\n end\n if firstEvent.duration == 0 then\n return events\n end\n local rudimentPerformer = RudimentPerformer:new()\n rudimentPerformer.velocityFactorAccented = tonumber(params.velocityFactorAccented)\n rudimentPerformer.velocityFactorUnaccented = tonumber(params.velocityFactorUnaccented)\n rudimentPerformer.velocityFactorGraceNote = tonumber(params.velocityFactorGraceNote)\n rudimentPerformer.flamOffset = tonumber(params.flamOffset)\n rudimentPerformer.dragOffset = tonumber(params.dragOffset)\n rudimentPerformer:setSourceEvent(firstEvent)\n if rudimentPerformer.rudiment == nil then\n return events\n end\n if firstEvent.isTied then\n newTiedEventCache(firstEvent)\n return {}\n end\n local rudimentEvents = rudimentPerformer:perform();\n return rudimentEvents\nend\n\nRudimentPerformer = {}\nfunction RudimentPerformer:new(o)\n local o = o or {}\n setmetatable(o, self)\n self.__index = self\n self.idxL = 1\n self.idxR = 1\n self.offset = 0\n self.velocityFactorAccented = 1\n self.velocityFactorUnaccented = 0.7\n self.velocityFactorGraceNote = 0.2\n self.flamOffset = 0.05\n self.dragOffset = 0.05\n return o\nend\n\nfunction RudimentPerformer:findRudimentName(tags)\n for idx, tag in pairs(tags) do\n local val = Rudiments[tag]\n if val ~= nil then\n return tag\n end\n end\n return nil\nend\n\nfunction RudimentPerformer:findRepeatTagValue(tags)\n for idx, tag in pairs(tags) do\n local val = SupportedRepeatTags[tag]\n if val ~= nil then\n return val\n end\n end\n return nil\nend\n\nfunction RudimentPerformer:setSourceEvent(event)\n local rudimentName = self:findRudimentName(event.tags)\n local source = event.pitches\n self.offset = event.offset\n self.rudiment = Rudiments[rudimentName]\n if self.rudiment == nil then\n return\n end\n if #source % 2 ~= 0 then\n -- not enough events\n error(\"not enough chord pitches for rudiment \" .. rudimentName)\n end\n local repeatCount = self:findRepeatTagValue(event.tags)\n if repeatCount ~= nil then\n self:repeat_(repeatCount)\n end\n self.duration = event.duration\n self.ls = {}\n self.rs = {}\n self.velocity = event.velocity\n for idx, pitch in pairs(source) do\n if idx % 2 == 0 then\n table.insert(self.ls, pitch)\n else\n table.insert(self.rs, pitch)\n end\n end\nend\n\nfunction RudimentPerformer:repeat_(count)\n local sequence = {}\n for i=1,count do\n local useAlternation = i % 2 == 1\n for idx, rudimentEvent in pairs(self.rudiment) do\n local event = rudimentEvent\n if (useAlternation) then\n event = AlternateEvent(event)\n end\n table.insert(sequence, event)\n end\n end\n self.rudiment = sequence\nend\n\nfunction RudimentPerformer:l()\n local l = self.ls[self.idxL]\n self.idxL = self.idxL + 1\n if self.idxL > #self.ls then\n self.idxL = 1\n end\n return l\nend\n\nfunction RudimentPerformer:r()\n local r = self.rs[self.idxR]\n self.idxR = self.idxR + 1\n if self.idxR > #self.ls then\n self.idxR = 1\n end\n return r\nend\n\nfunction RudimentPerformer:nextPitch(lOrR)\n if lOrR == nil then\n error(\"invalid L R value for rudiment: nil\")\n end\n if lOrR == L then\n return self:l()\n elseif lOrR == R then\n return self:r()\n end\n error(\"invalid L R value for rudiment: \" .. lOrR)\nend\n\n-- duration of the rudiment definition\nfunction RudimentPerformer:defDuration()\n local duration = 0\n for idx, rudiment in pairs(self.rudiment) do\n duration = duration + rudiment.duration\n end\n return duration\nend\n\nfunction RudimentPerformer:getVelocityFactor(rudiment)\n if rudiment.velocityClass == Accent then\n return self.velocityFactorAccented\n end\n if rudiment.velocityClass == Unaccented then\n return self.velocityFactorUnaccented\n end\n if rudiment.velocityClass == GraceNote then\n return self.velocityFactorGraceNote\n end\n error(\"no velocity value for class \" .. rudiment.velocityClass)\nend\n\nfunction RudimentPerformer:perform()\n local events = {}\n local offset = self.offset\n local durationFactor = self.duration / self:defDuration()\n for idx, rudiment in pairs(self.rudiment) do\n local type = rudiment.type\n local which = rudiment.which\n local duration = rudiment.duration\n local velocityFactor = self:getVelocityFactor(rudiment)\n local note = Note:new()\n note.duration = duration * durationFactor\n note.velocity = self.velocity * velocityFactor\n note.offset = offset\n local pitch = self:nextPitch(which)\n note:addPitch(pitch.pitch, pitch.octave)\n if type == FlamType then\n self:performFlam(events, note, Alt(which))\n end\n if type == DragType then\n self:performDrag(events, note, Alt(which))\n end \n table.insert(events, note)\n offset = offset + note.duration\n end\n return events\nend\n\n\nfunction RudimentPerformer:performFlam(events, note, which)\n local flamDuration = self.flamOffset\n local flam = Note:new()\n local pitch = self:nextPitch(which)\n flam:addPitch(pitch.pitch, pitch.octave)\n flam.duration = flamDuration\n flam.velocity = note.velocity * self.velocityFactorGraceNote\n flam.offset = note.offset\n note.offset = note.offset + flamDuration\n note.duration = note.duration\n table.insert(events, flam)\nend\n\nfunction RudimentPerformer:performDrag(events, note, which)\n local flamDuration = self.dragOffset\n local pitch = self:nextPitch(which)\n local flam = Note:new()\n flam:addPitch(pitch.pitch, pitch.octave)\n flam.duration = flamDuration\n flam.velocity = note.velocity * self.velocityFactorGraceNote\n flam.offset = note.offset\n table.insert(events, flam)\n\n flam = Note:new()\n flam:addPitch(pitch.pitch, pitch.octave)\n flam.duration = flamDuration\n flam.velocity = note.velocity * self.velocityFactorGraceNote\n flam.offset = note.offset + flamDuration\n table.insert(events, flam)\n\n note.offset = note.offset + flamDuration * 2\n note.duration = note.duration\n\nend\n"}, {"path": "lua/mods/guitarStroke.lua", "data": "-- <command name=\"guitarStroke\" where=\"mod\" using=\"lua/mod/guitarStroke.lua\">\n-- <![CDATA[\n-- Simulates guitar strokes as mini arpeggios.\n-- *Note: the alternate mode works only if this mod is set via instrumentConf.*\n-- ```\n-- -- does not work: \\n\n-- [ \\n\n-- { \\n\n-- /mod: guitarStroke _mode=alternate/\\n\n-- } \\n\n-- ] \\n\n-- ```\n-- ```\n-- -- does work: \\n\n-- instrumentConf: myInstrument mod guitarStroke _mode=alternate; \\n\n-- ```\n-- **Example**\n-- ```language=Werckmeister\\n\n--using \"lua/mods/guitarStroke.lua\";\\n\n--tempo: 120;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef: piano MyDevice _ch=0 _pc=24;\\n\n--instrumentConf: piano mod guitarStroke _mode=alternate _value=16; \\n\n--[\\n\n--instrument: piano;\\n\n--{\\n\n-- <c e g b>4 <c e g b>4 <c eb g bb>2 | <c eb g bb>2 <c eb g bb>2\\n\n--}\\n\n--]\\n\n-- ```\n-- ]]>\n-- </command>\n-- <param name=\"direction\" optional=\"1\" type=\"[up,down,alternate]\">Specifies the start direction of the stroke</param>\n-- <param name=\"value\" optional=\"1\" type=\"[1,2,4,8,...]\">the duration of one arpeggio event. (Default=64)</param>\n-- <param name=\"mode\" optional=\"1\" type=\"[normal,alternate]\">Deprecated: Use _direction=alternate instead. Perform only one stroke direction (normal) or alternates between up and down. (Default=normal)</param>\n-- <param name=\"withTag\" optional=\"1\" type=\"tagName\">if set, only events including this tag will be processed.</param>\n\nrequire \"lua/com/com\"\nrequire \"_events\"\n\nlocal NO_TAG = \"WM_NO_TAG\"\n\nparameters = {\n -- can be up, down\n { name=\"direction\", default=\"up\" },\n -- can be 1, 2, 4, 8, 16, 32, 64, ...\n { name=\"value\", default=\"64\" },\n -- can be normal, alternate\n { name=\"mode\", default=\"normal\" },\n { name=\"withTag\", default=\"WM_NO_TAG\" }\n\n}\n\nlocal direction = nil\nlocal mode = nil\n\nfunction perform(eventsOrigin, params, timeinfo)\n local withTag = params.withTag\n local filtered_events\n if withTag ~= NO_TAG then\n filtered_events = FilterEventsByTagName(eventsOrigin, withTag)\n else\n filtered_events = eventsOrigin\n end\n if #eventsOrigin > 2 or #filtered_events == 0 then\n return eventsOrigin\n end\n checkLegacyNamedParams(params, \"direction\", \"mode\", \"value\")\n local directionParam = params.direction\n local modeParam = params.mode\n local value = params.value\n value = tonumber(value)\n local event = eventsOrigin[1]\n if event.pitches == nil then\n return eventsOrigin\n end\n local events = { }\n local comparer = pitchCompare\n \n if modeParam == \"alternate\" then\n directionParam = \"alternate\"\n end\n\n if direction ==nil then\n direction = directionParam\n end\n\n if direction == \"down\" then\n comparer = pitchCompareReversed\n if directionParam == \"alternate\" then\n direction = \"up\"\n end\n else\n comparer = pitchCompare\n if directionParam == \"alternate\" then\n direction = \"down\"\n end\n end\n\n local duration = 1 / value\n table.sort( event.pitches, comparer)\n for i, pitch in pairs(event.pitches) do\n local note = Note:new()\n local newOffset = event.offset + (i-1) * duration\n note.offset = newOffset\n note.duration = event.duration - newOffset\n note.isTied = event.isTied\n note.velocity = event.velocity\n note:addPitch(pitch.pitch, pitch.octave)\n table.insert(events, note) \n end\n return events\nend"}, {"path": "lua/mods/legato.lua", "data": "-- <command name=\"legato\" where=\"mod\" using=\"lua/mod/legato.lua\">\n-- Performs every note legato. It is also possible to tag single notes.\n-- If a tag is given, only the tagged notes are performed legato.\n-- ```language=Werckmeister\\n\n--using \"lua/mods/legato.lua\";\\n\n--tempo: 140;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef:piano MyDevice _ch=0 _pc=0;\\n\n--[\\n\n--instrument: piano;\\n\n--{\\n\n-- /mod: legato _forTag=leg _amount=100/\\n\n-- -- only the `d` will be performed legato. \\n\n-- c \"leg\"@d e f\\n\n--}\\n\n--]\\n\n-- ```\n-- </command>\n-- <param name=\"forTag\" optional=\"1\" type=\"text\">Specifies a tag name. If set only events with this tag name will be affected by the legato mod.</param>\n-- <param name=\"amount\" optional=\"1\" type=\"0..100\">The ammount of the legato effect</param>\n\nrequire \"lua/com/com\"\n\nlocal defaultAmountValue = 50\n\nparameters = {\n -- specify a tag name. If set only events with this tag name will be affected by the staccato mod. \n { name=\"forTag\", default=ParameterValueNoTag },\n -- the ammount of the staccato mod. Can be between 0 and 100\n { name=\"amount\", default=\"50\" }\n}\n\nfunction perform(events, params, timeinfo)\n checkLegacyNamedParams(params, \"forTag\", \"amount\")\n local tag = params.forTag\n if tag == ParameterValueNoTag then\n tag = nil\n end\n local amount = tonumber(params.amount)\n local factor = 100 - ((amount/100) * 90)\n factor = factor / 100\n for i, event in pairs(events) do\n if tag == nil or contains(event.tags, tag) then\n event.duration = event.duration / factor\n end\n end\n return events\nend"}, {"path": "lua/mods/myArpeggio.lua", "data": "-- <command name=\"myArpeggio\" where=\"mod\" using=\"lua/mod/myArpeggio.lua\">\n-- <![CDATA[\n-- A simple arpeggio implementation.\n-- **Example**\n-- ```language=Werckmeister\\n\n--using \"lua/mods/myArpeggio.lua\";\\n\n--tempo: 120;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef: piano MyDevice _ch=0 _pc=0;\\n\n--[\\n\n--instrument: piano;\\n\n--{\\n\n-- /do: myArpeggio/ \\n\n-- <c e g b>2 \\n\n-- /do: myArpeggio _direction=down/ \\n\n-- <c eb g bb>2 \\n\n--}\\n\n--]\\n\n-- ```\n-- ]]>\n-- </command>\n-- <param name=\"style\" optional=\"1\" type=\"[normal,legato]\">Performs the arpeggio normal or legato</param>\n-- <param name=\"direction\" optional=\"1\" type=\"[up,down]\">the direction of the arpeggio. (Default=up)</param>\n\nrequire \"lua/com/com\"\nrequire \"_events\"\n\n\nparameters = {\n -- can be legato, normal\n { name=\"style\", default=\"normal\" },\n -- can be up, down\n { name=\"direction\", default=\"up\" }\n}\n\nfunction perform(eventsOrigin, params, timeinfo)\n checkLegacyNamedParams(params, \"direction\", \"style\")\n local event = eventsOrigin[1]\n local events = { }\n local comparer = pitchCompare\n local direction = params.direction\n local style = params.style\n\n if direction == \"down\" then\n comparer = pitchCompareReversed\n end\n local duration = event.duration / #event.pitches\n table.sort( event.pitches, comparer)\n for i, pitch in pairs(event.pitches) do\n local note = Note:new()\n note.duration = duration\n if style == \"legato\" then\n note.duration = event.duration\n end\n note.velocity = event.velocity\n note.offset = (i-1) * duration\n note.isTied = event.isTied\n note:addPitch(pitch.pitch, pitch.octave)\n table.insert(events, note) \n end\n return events\nend"}, {"path": "lua/mods/staccato.lua", "data": "-- <command name=\"staccato\" where=\"mod\" using=\"lua/mod/staccato.lua\">\n-- Performs every note staccato. It is also possible to tag single notes.\n-- If a tag is given, only the tagged notes are performed staccato.\n-- ```language=Werckmeister\\n\n--using \"lua/mods/staccato.lua\";\\n\n--tempo: 140;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef:piano MyDevice _ch=0 _pc=0;\\n\n--[\\n\n--instrument: piano;\\n\n--{\\n\n-- /mod: staccato _forTag=stac _amount=100/\\n\n-- -- only the `d` will be performed staccato. \\n\n-- c \"stac\"@d e f\\n\n--}\\n\n--]\\n\n-- ``` \n-- </command>\n-- <param name=\"forTag\" optional=\"1\" type=\"text\">Specifies a tag name. If set only events with this tag name will be affected by the staccato mod.</param>\n-- <param name=\"amount\" optional=\"1\" type=\"0..100\">The ammount of the staccato effect</param>\n\nrequire \"lua/com/com\"\n\n\nparameters = {\n -- specify a tag name. If set only events with this tag name will be affected by the staccato mod. \n { name=\"forTag\", default=ParameterValueNoTag },\n -- the ammount of the staccato mod. Can be between 0 and 100\n { name=\"amount\", default=\"50\" }\n}\n\nfunction perform(events, params, timeinfo)\n checkLegacyNamedParams(params, \"forTag\", \"amount\")\n local tag = params.forTag\n if tag == ParameterValueNoTag then\n tag = nil\n end\n local amount = tonumber(params.amount)\n local factor = 100 - ((amount/100) * 90)\n factor = factor / 100\n for i, event in pairs(events) do\n if tag == nil or contains(event.tags, tag) then\n event.duration = event.duration * factor\n end\n end\n return events\nend"}, {"path": "lua/mods/swing.lua", "data": "-- <command name=\"swing\" where=\"mod\" using=\"lua/mod/swing.lua\">\n-- Performs a swing groove.\n-- ```language=Werckmeister\\n\n--using \"lua/mods/swing.lua\";\\n\n--tempo: 120;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef: piano MyDevice _ch=0 _pc=0;\\n\n--[\\n\n--instrument: piano;\\n\n--{\\n\n-- /mod: swing/\\n\n-- c8 c c c c c c c\n--}\\n\n--]\\n\n-- ```\n-- </command>\n-- <param name=\"grid\" optional=\"1\" type=\"[8, 16]\">Performs the swing offset either on 8th or 16th. (Default=8)</param>\n-- <param name=\"offset\" optional=\"1\" type=\"0..100\">The ammount of the swing offset</param>\n\nrequire \"lua/com/com\"\n\nparameters = {\n -- can be 8, 16\n { name=\"grid\", default=\"8\" },\n -- can be between 0 and 100\n { name=\"offset\", default=\"100\" }\n}\n\n\nfunction compareQuarters(a, b)\n return math.abs(a-b) <= 0.1\nend\n\nfunction isLaidBack(timeinfo, grid)\n local q = timeinfo.quarterPosition\n q = q - math.floor(q)\n if grid == 16 then\n return compareQuarters(q, 0.25) or compareQuarters(q, 0.75)\n end\n return compareQuarters(q, 0.5)\nend\n\nfunction offset(grid, offset)\n if offset == nil then\n offset = 100\n end\n offset = offset / 100\n local max = 0.25\n if grid == 16 then\n max = 0.09\n end\n return offset * max\nend\n\nfunction perform(events, params, timeinfo)\n checkLegacyNamedParams(params, \"grid\", \"offset\")\n local gridValue = tonumber(params.grid)\n local offsetValue = tonumber(params.offset)\n for i, event in pairs(events) do\n if isLaidBack(timeinfo, gridValue) then\n event.offset = offset(gridValue, offsetValue)\n event.velocity = event.velocity\n end\n end\n return events\nend"}, {"path": "lua/devices/integra7/_integra7.lua", "data": "require \"_model\"\nrequire \"_mfx\"\n\nlocal parameter_partId_placeholder = \"xxx\"\n\nlocal function create_id(parameter_node_id_template, part_id)\n return string.gsub(parameter_node_id_template, parameter_partId_placeholder, part_id)\nend\n\nfunction Create_Sysex_Message_For_Node(part_id, parameter_node_id_template, value, device_id)\n local node_id = create_id(parameter_node_id_template, part_id)\n local nodeinfo = Get_Node(node_id)\n if nodeinfo == nil then\n error(\"no node found for id:\" .. node_id)\n end\n nodeinfo.node:setvalue(value)\n local sysex = Create_SysexMessage(nodeinfo, device_id)\n return sysex\nend\n\nlocal function get_set_mfx_default_values_sysex(mfxType, part_id, mfx_id, device_id)\n local prm = Mfx_Table[mfx_id + 1]\n local payload = {}\n local from = -1\n local nodes = Mfx_Nodes[mfxType]\n for i = 1, #nodes, 1 do\n local node = nodes[i]\n if node.pos == nil then goto continue end\n if from < 0 then from = i end\n local default_value_index = i - from + 1\n if default_value_index <= #prm.leaf then\n local default_value = prm.leaf[default_value_index].init\n local bytesize = Get_Byte_Size(node.valueByteSizeType)\n local bytes = Value_To_Bytes(default_value, bytesize)\n payload = ConcatTable(payload, bytes)\n end\n ::continue::\n end\n local idtemplate = Mfx_Ids[mfxType] .. \"-\" .. nodes[from].id\n local id = create_id(idtemplate, part_id)\n local addr = Get_Adress(id)\n local sysex = Create_Sysex_Message_For_Payload(addr, payload, device_id)\n return sysex\nend\n\nfunction Get_Set_Mfx_Type_Messages(mfxType, part_id, mfx_id, device_id)\n local nodeid_template = Mfx_Type_Ids[mfxType]\n return {\n Create_Sysex_Message_For_Node(part_id, nodeid_template, mfx_id, device_id),\n get_set_mfx_default_values_sysex(mfxType, part_id, mfx_id, device_id)\n }\nend"}, {"path": "lua/devices/integra7/_mfx.lua", "data": "Mfx_Table = {\n {\n desc = 'THRU',\n leaf = {\n { desc= 'Control Assign 1', id= 'MFX_THRU_CTRL_ASGN1', init= 0, min= 0, max= 0 },\n { desc= 'Control Assign 2', id= 'MFX_THRU_CTRL_ASGN2', init= 0, min= 0, max= 0 },\n { desc= 'Control Assign 3', id= 'MFX_THRU_CTRL_ASGN3', init= 0, min= 0, max= 0 },\n { desc= 'Control Assign 4', id= 'MFX_THRU_CTRL_ASGN4', init= 0, min= 0, max= 0 },\n { desc= '_', id= 'MFX_THRU_DUMMY', init= 32768, min= 32768, max= 32768 }\n }\n },\n {\n desc= 'EQUALIZER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STEQ_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_STEQ_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_STEQ_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_STEQ_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Low Freq', id= 'MFX_STEQ_LO_FREQ', init= 32769, min= 32768, max= 32769 },\n { desc= 'Low Gain', id= 'MFX_STEQ_LO_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'Mid1 Freq', id= 'MFX_STEQ_MID1_FREQ', init= 32775, min= 32768, max= 32784 },\n { desc= 'Mid1 Gain', id= 'MFX_STEQ_MID1_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'Mid1 Q', id= 'MFX_STEQ_MID1_Q', init= 32768, min= 32768, max= 32772 },\n { desc= 'Mid2 Freq', id= 'MFX_STEQ_MID2_FREQ', init= 32778, min= 32768, max= 32784 },\n { desc= 'Mid2 Gain', id= 'MFX_STEQ_MID2_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'Mid2 Q', id= 'MFX_STEQ_MID2_Q', init= 32768, min= 32768, max= 32772 },\n { desc= 'High Freq', id= 'MFX_STEQ_HI_FREQ', init= 32769, min= 32768, max= 32770 },\n { desc= 'High Gain', id= 'MFX_STEQ_HI_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_STEQ_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'SPECTRUM',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_SPECT_CTRL_ASGN1', init= 0, min= 0, max= 1 },\n { desc= 'Control Assign 2', id= 'MFX_SPECT_CTRL_ASGN2', init= 0, min= 0, max= 1 },\n { desc= 'Control Assign 3', id= 'MFX_SPECT_CTRL_ASGN3', init= 0, min= 0, max= 1 },\n { desc= 'Control Assign 4', id= 'MFX_SPECT_CTRL_ASGN4', init= 0, min= 0, max= 1 },\n { desc= 'Band1 (250Hz)', id= 'MFX_SPECT_BAND1', init= 32783, min= 32768, max= 32798 },\n { desc= 'Band2 (500Hz)', id= 'MFX_SPECT_BAND2', init= 32783, min= 32768, max= 32798 },\n { desc= 'Band3 (1000Hz)', id= 'MFX_SPECT_BAND3', init= 32783, min= 32768, max= 32798 },\n { desc= 'Band4 (1250Hz)', id= 'MFX_SPECT_BAND4', init= 32783, min= 32768, max= 32798 },\n { desc= 'Band5 (2000Hz)', id= 'MFX_SPECT_BAND5', init= 32783, min= 32768, max= 32798 },\n { desc= 'Band6 (3150Hz)', id= 'MFX_SPECT_BAND6', init= 32783, min= 32768, max= 32798 },\n { desc= 'Band7 (4000Hz)', id= 'MFX_SPECT_BAND7', init= 32783, min= 32768, max= 32798 },\n { desc= 'Band8 (8000Hz)', id= 'MFX_SPECT_BAND8', init= 32783, min= 32768, max= 32798 },\n { desc= 'Q', id= 'MFX_SPECT_WIDTH', init= 32768, min= 32768, max= 32772 },\n { desc= 'Level', id= 'MFX_SPECT_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'LOW BOOST',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_BOOST_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_BOOST_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_BOOST_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_BOOST_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Boost Frequency', id= 'MFX_BOOST_FREQ', init= 32772, min= 32768, max= 32776 },\n { desc= 'Boost Gain', id= 'MFX_BOOST_GAIN', init= 32774, min= 32768, max= 32780 },\n { desc= 'Boost Width', id= 'MFX_BOOST_WIDTH', init= 32768, min= 32768, max= 32770 },\n { desc= 'Low Gain', id= 'MFX_BOOST_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_BOOST_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_BOOST_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'STEP FILTER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STEPFIL_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_STEPFIL_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_STEPFIL_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_STEPFIL_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Step 01', id= 'MFX_STEPFIL_STEP01', init= 32828, min= 32768, max= 32895 },\n { desc= 'Step 02', id= 'MFX_STEPFIL_STEP02', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 03', id= 'MFX_STEPFIL_STEP03', init= 32828, min= 32768, max= 32895 },\n { desc= 'Step 04', id= 'MFX_STEPFIL_STEP04', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 05', id= 'MFX_STEPFIL_STEP05', init= 32828, min= 32768, max= 32895 },\n { desc= 'Step 06', id= 'MFX_STEPFIL_STEP06', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 07', id= 'MFX_STEPFIL_STEP07', init= 32828, min= 32768, max= 32895 },\n { desc= 'Step 08', id= 'MFX_STEPFIL_STEP08', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 09', id= 'MFX_STEPFIL_STEP09', init= 32828, min= 32768, max= 32895 },\n { desc= 'Step 10', id= 'MFX_STEPFIL_STEP10', init= 32828, min= 32768, max= 32895 },\n { desc= 'Step 11', id= 'MFX_STEPFIL_STEP11', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 12', id= 'MFX_STEPFIL_STEP12', init= 32828, min= 32768, max= 32895 },\n { desc= 'Step 13', id= 'MFX_STEPFIL_STEP13', init= 32828, min= 32768, max= 32895 },\n { desc= 'Step 14', id= 'MFX_STEPFIL_STEP14', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 15', id= 'MFX_STEPFIL_STEP15', init= 32828, min= 32768, max= 32895 },\n { desc= 'Step 16', id= 'MFX_STEPFIL_STEP16', init= 32798, min= 32768, max= 32895 },\n { desc= 'Rate (sync sw)', id= 'MFX_STEPFIL_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_STEPFIL_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_STEPFIL_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Attack', id= 'MFX_STEPFIL_ATTACK', init= 32818, min= 32768, max= 32895 },\n { desc= 'Filter Type', id= 'MFX_STEPFIL_FILT_TYPE', init= 32770, min= 32768, max= 32771 },\n { desc= 'Filter Slope', id= 'MFX_STEPFIL_FILT_SLOPE', init= 32770, min= 32768, max= 32770 },\n { desc= 'Filter Resonance', id= 'MFX_STEPFIL_FILT_RESO', init= 32808, min= 32768, max= 32895 },\n { desc= 'Filter Gain', id= 'MFX_STEPFIL_FILT_GAIN', init= 32768, min= 32768, max= 32780 },\n { desc= 'Level', id= 'MFX_STEPFIL_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'ENHANCER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_EH_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_EH_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_EH_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_EH_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Sens', id= 'MFX_EH_SENS', init= 32832, min= 32768, max= 32895 },\n { desc= 'Mix', id= 'MFX_EH_MIX', init= 32832, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_EH_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_EH_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_EH_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'AUTO WAH',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_WAH_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_WAH_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_WAH_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_WAH_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Filter Type', id= 'MFX_WAH_MODE', init= 32769, min= 32768, max= 32769 },\n { desc= 'Manual', id= 'MFX_WAH_MANUAL', init= 32828, min= 32768, max= 32895 },\n { desc= 'Peak', id= 'MFX_WAH_PEAK', init= 32808, min= 32768, max= 32895 },\n { desc= 'Sens', id= 'MFX_WAH_SENS', init= 32768, min= 32768, max= 32895 },\n { desc= 'Polarity', id= 'MFX_WAH_POLARITY', init= 32768, min= 32768, max= 32769 },\n { desc= 'Rate (sync sw)', id= 'MFX_WAH_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_WAH_RATE_HZ', init= 32808, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_WAH_RATE_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_WAH_DEPTH', init= 32828, min= 32768, max= 32895 },\n { desc= 'Phase', id= 'MFX_WAH_PHS', init= 32768, min= 32768, max= 32858 },\n { desc= 'Low Gain', id= 'MFX_WAH_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_WAH_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_WAH_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'HUMANIZER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_FORMANT_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_FORMANT_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_FORMANT_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_FORMANT_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Drive Sw', id= 'MFX_FORMANT_DRIVE_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Drive', id= 'MFX_FORMANT_DRV', init= 32895, min= 32768, max= 32895 },\n { desc= 'Vowel1', id= 'MFX_FORMANT_VOWEL1', init= 32772, min= 32768, max= 32772 },\n { desc= 'Vowel2', id= 'MFX_FORMANT_VOWEL2', init= 32768, min= 32768, max= 32772 },\n { desc= 'Rate (sync sw)', id= 'MFX_FORMANT_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_FORMANT_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_FORMANT_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_FORMANT_DEPTH', init= 32895, min= 32768, max= 32895 },\n { desc= 'Input Sync Sw', id= 'MFX_FORMANT_KS_SW', init= 32768, min= 32768, max= 32769 },\n { desc= 'Input Sync Threshold', id= 'MFX_FORMANT_KS_THRE', init= 32828, min= 32768, max= 32895 },\n { desc= 'Manual', id= 'MFX_FORMANT_MANUAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Low Gain', id= 'MFX_FORMANT_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_FORMANT_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Pan', id= 'MFX_FORMANT_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_FORMANT_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'SPEAKER SIMULATOR',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_SPSIM_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_SPSIM_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_SPSIM_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_SPSIM_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Speaker Type', id= 'MFX_SPSIM_SP_TYPE', init= 32774, min= 32768, max= 32783 },\n { desc= 'Mic Setting', id= 'MFX_SPSIM_MIC_SETTING', init= 32769, min= 32768, max= 32770 },\n { desc= 'Mic Level', id= 'MFX_SPSIM_MIC_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= 'Direct Level', id= 'MFX_SPSIM_DIRECT_LEVEL', init= 32768, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_SPSIM_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'PHASER 1',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STPH_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_STPH_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_STPH_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_STPH_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Mode', id= 'MFX_STPH_MODE', init= 32770, min= 32768, max= 32770 },\n { desc= 'Manual', id= 'MFX_STPH_MANUAL', init= 32832, min= 32768, max= 32895 },\n { desc= 'Rate (sync sw)', id= 'MFX_STPH_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_STPH_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_STPH_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_STPH_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Polarity', id= 'MFX_STPH_POLARITY', init= 32769, min= 32768, max= 32769 },\n { desc= 'Resonance', id= 'MFX_STPH_RESO', init= 32808, min= 32768, max= 32895 },\n { desc= 'Cross Feedback', id= 'MFX_STPH_XFBK', init= 32817, min= 32768, max= 32866 },\n { desc= 'Mix', id= 'MFX_STPH_MIX', init= 32895, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_STPH_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_STPH_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_STPH_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'PHASER 2',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_PHA2_CTRL_ASGN1', init= 0, min= 0, max= 1 },\n { desc= 'Control Assign 2', id= 'MFX_PHA2_CTRL_ASGN2', init= 0, min= 0, max= 1 },\n { desc= 'Control Assign 3', id= 'MFX_PHA2_CTRL_ASGN3', init= 0, min= 0, max= 1 },\n { desc= 'Control Assign 4', id= 'MFX_PHA2_CTRL_ASGN4', init= 0, min= 0, max= 1 },\n { desc= 'Rate', id= 'MFX_PHA2_RATE', init= 32818, min= 32768, max= 32868 },\n { desc= 'Color', id= 'MFX_PHA2_COLOR', init= 32768, min= 32768, max= 32769 },\n { desc= 'Low Gain', id= 'MFX_PHA2_LO_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_PHA2_HI_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_PHA2_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'PHASER 3',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_PHA3_CTRL_ASGN1', init= 0, min= 0, max= 1 },\n { desc= 'Control Assign 2', id= 'MFX_PHA3_CTRL_ASGN2', init= 0, min= 0, max= 1 },\n { desc= 'Control Assign 3', id= 'MFX_PHA3_CTRL_ASGN3', init= 0, min= 0, max= 1 },\n { desc= 'Control Assign 4', id= 'MFX_PHA3_CTRL_ASGN4', init= 0, min= 0, max= 1 },\n { desc= 'Speed', id= 'MFX_PHA3_SPEED', init= 32818, min= 32768, max= 32868 },\n { desc= 'Low Gain', id= 'MFX_PHA3_LO_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_PHA3_HI_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_PHA3_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'STEP PHASER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STEPPH_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_STEPPH_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_STEPPH_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_STEPPH_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Mode', id= 'MFX_STEPPH_MODE', init= 32770, min= 32768, max= 32770 },\n { desc= 'Manual', id= 'MFX_STEPPH_MANUAL', init= 32832, min= 32768, max= 32895 },\n { desc= 'Rate (sync sw)', id= 'MFX_STEPPH_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_STEPPH_RATE_HZ', init= 32798, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_STEPPH_RATE_NOTE', init= 32781, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_STEPPH_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Polarity', id= 'MFX_STEPPH_POLARITY', init= 32769, min= 32768, max= 32769 },\n { desc= 'Resonance', id= 'MFX_STEPPH_RESO', init= 32808, min= 32768, max= 32895 },\n { desc= 'Cross Feedback', id= 'MFX_STEPPH_XFBK', init= 32817, min= 32768, max= 32866 },\n { desc= 'Step Rate (sync sw)', id= 'MFX_STEPPH_S_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Step Rate (Hz)', id= 'MFX_STEPPH_S_RATE_HZ', init= 32848, min= 32769, max= 32968 },\n { desc= 'Step Rate (note)', id= 'MFX_STEPPH_S_RATE_NOTE', init= 32774, min= 32768, max= 32789 },\n { desc= 'Mix', id= 'MFX_STEPPH_MIX', init= 32895, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_STEPPH_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_STEPPH_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_STEPPH_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'MULTI STAGE PHASER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_MTPH_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_MTPH_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_MTPH_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_MTPH_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Mode', id= 'MFX_MTPH_MODE', init= 32773, min= 32768, max= 32773 },\n { desc= 'Manual', id= 'MFX_MTPH_MANUAL', init= 32828, min= 32768, max= 32895 },\n { desc= 'Rate (sync sw)', id= 'MFX_MTPH_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_MTPH_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_MTPH_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_MTPH_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Resonance', id= 'MFX_MTPH_RESO', init= 32808, min= 32768, max= 32895 },\n { desc= 'Mix', id= 'MFX_MTPH_MIX', init= 32895, min= 32768, max= 32895 },\n { desc= 'Pan', id= 'MFX_MTPH_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_MTPH_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_MTPH_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_MTPH_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'INFINITE PHASER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_INFPH_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_INFPH_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_INFPH_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_INFPH_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Mode', id= 'MFX_INFPH_MODE', init= 32771, min= 32768, max= 32771 },\n { desc= 'Speed', id= 'MFX_INFPH_SPEED', init= 32908, min= 32768, max= 32968 },\n { desc= 'Resonance', id= 'MFX_INFPH_RESO', init= 32848, min= 32768, max= 32895 },\n { desc= 'Mix', id= 'MFX_INFPH_MIX', init= 32895, min= 32768, max= 32895 },\n { desc= 'Pan', id= 'MFX_INFPH_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_INFPH_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_INFPH_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_INFPH_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'RING MODULATOR',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_RING_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_RING_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_RING_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_RING_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Frequency', id= 'MFX_RING_FREQ', init= 32828, min= 32768, max= 32895 },\n { desc= 'Sens', id= 'MFX_RING_SENS', init= 32768, min= 32768, max= 32895 },\n { desc= 'Polarity', id= 'MFX_RING_POLARITY', init= 32768, min= 32768, max= 32769 },\n { desc= 'Low Gain', id= 'MFX_RING_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_RING_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_RING_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_RING_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'TREMOLO',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_TRE_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_TRE_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_TRE_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_TRE_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Mod Wave', id= 'MFX_TRE_MOD_WAVE', init= 32768, min= 32768, max= 32772 },\n { desc= 'Rate (sync sw)', id= 'MFX_TRE_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_TRE_RATE_HZ', init= 32848, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_TRE_RATE_NOTE', init= 32777, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_TRE_DEPTH', init= 32864, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_TRE_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_TRE_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_TRE_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'AUTO PAN',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_AUTOPAN_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_AUTOPAN_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_AUTOPAN_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_AUTOPAN_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Mod Wave', id= 'MFX_AUTOPAN_MOD_WAVE', init= 32768, min= 32768, max= 32772 },\n { desc= 'Rate (sync sw)', id= 'MFX_AUTOPAN_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_AUTOPAN_RATE_HZ', init= 32848, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_AUTOPAN_RATE_NOTE', init= 32777, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_AUTOPAN_DEPTH', init= 32864, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_AUTOPAN_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_AUTOPAN_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_AUTOPAN_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'SLICER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_SLICER_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_SLICER_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_SLICER_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_SLICER_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Step 01', id= 'MFX_SLICER_STEP01', init= 32895, min= 32768, max= 32895 },\n { desc= 'Step 02', id= 'MFX_SLICER_STEP02', init= 32768, min= 32768, max= 32895 },\n { desc= 'Step 03', id= 'MFX_SLICER_STEP03', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 04', id= 'MFX_SLICER_STEP04', init= 32895, min= 32768, max= 32895 },\n { desc= 'Step 05', id= 'MFX_SLICER_STEP05', init= 32895, min= 32768, max= 32895 },\n { desc= 'Step 06', id= 'MFX_SLICER_STEP06', init= 32768, min= 32768, max= 32895 },\n { desc= 'Step 07', id= 'MFX_SLICER_STEP07', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 08', id= 'MFX_SLICER_STEP08', init= 32768, min= 32768, max= 32895 },\n { desc= 'Step 09', id= 'MFX_SLICER_STEP09', init= 32895, min= 32768, max= 32895 },\n { desc= 'Step 10', id= 'MFX_SLICER_STEP10', init= 32768, min= 32768, max= 32895 },\n { desc= 'Step 11', id= 'MFX_SLICER_STEP11', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 12', id= 'MFX_SLICER_STEP12', init= 32895, min= 32768, max= 32895 },\n { desc= 'Step 13', id= 'MFX_SLICER_STEP13', init= 32768, min= 32768, max= 32895 },\n { desc= 'Step 14', id= 'MFX_SLICER_STEP14', init= 32768, min= 32768, max= 32895 },\n { desc= 'Step 15', id= 'MFX_SLICER_STEP15', init= 32798, min= 32768, max= 32895 },\n { desc= 'Step 16', id= 'MFX_SLICER_STEP16', init= 32768, min= 32768, max= 32895 },\n { desc= 'Rate (sync sw)', id= 'MFX_SLICER_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_SLICER_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_SLICER_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Attack', id= 'MFX_SLICER_ATTACK', init= 32818, min= 32768, max= 32895 },\n { desc= 'Input Sync Sw', id= 'MFX_SLICER_RESET_SW', init= 32768, min= 32768, max= 32769 },\n { desc= 'Input Sync Threshold', id= 'MFX_SLICER_RESET_THRE', init= 32828, min= 32768, max= 32895 },\n { desc= 'Mode', id= 'MFX_SLICER_MODE', init= 32768, min= 32768, max= 32769 },\n { desc= 'Shuffle', id= 'MFX_SLICER_SHUFFLE', init= 32768, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_SLICER_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'ROTARY 1',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_ROT_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_ROT_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_ROT_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_ROT_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Speed', id= 'MFX_ROT_SPEED', init= 32768, min= 32768, max= 32769 },\n { desc= 'Woofer Slow Speed', id= 'MFX_ROT_WF_SLOW_SPEED', init= 32808, min= 32769, max= 32968 },\n { desc= 'Woofer Fast Speed', id= 'MFX_ROT_WF_FAST_SPEED', init= 32928, min= 32769, max= 32968 },\n { desc= 'Woofer Acceleration', id= 'MFX_ROT_WF_ACCEL', init= 32778, min= 32768, max= 32783 },\n { desc= 'Woofer Level', id= 'MFX_ROT_WF_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= 'Tweeter Slow Speed', id= 'MFX_ROT_TW_SLOW_SPEED', init= 32808, min= 32769, max= 32968 },\n { desc= 'Tweeter Fast Speed', id= 'MFX_ROT_TW_FAST_SPEED', init= 32928, min= 32769, max= 32968 },\n { desc= 'Tweeter Acceleration', id= 'MFX_ROT_TW_ACCEL', init= 32778, min= 32768, max= 32783 },\n { desc= 'Tweeter Level', id= 'MFX_ROT_TW_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= 'Separation', id= 'MFX_ROT_SEPA', init= 32895, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_ROT_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'ROTARY 2',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_VKROT_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_VKROT_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_VKROT_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_VKROT_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Speed', id= 'MFX_VKROT_SPEED', init= 32768, min= 32768, max= 32769 },\n { desc= 'Brake', id= 'MFX_VKROT_BRAKE', init= 32768, min= 32768, max= 32769 },\n { desc= 'Woofer Slow Speed', id= 'MFX_VKROT_WF_SLOW_SPEED', init= 32808, min= 32769, max= 32968 },\n { desc= 'Woofer Fast Speed', id= 'MFX_VKROT_WF_FAST_SPEED', init= 32928, min= 32769, max= 32968 },\n { desc= 'Woofer Trans Up', id= 'MFX_VKROT_WF_TRANS_UP', init= 32832, min= 32768, max= 32895 },\n { desc= 'Woofer Trans Down', id= 'MFX_VKROT_WF_TRANS_DW', init= 32832, min= 32768, max= 32895 },\n { desc= 'Woofer Level', id= 'MFX_VKROT_WF_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= 'Tweeter Slow Speed', id= 'MFX_VKROT_TW_SLOW_SPEED', init= 32808, min= 32769, max= 32968 },\n { desc= 'Tweeter Fast Speed', id= 'MFX_VKROT_TW_FAST_SPEED', init= 32928, min= 32769, max= 32968 },\n { desc= 'Tweeter Trans Up', id= 'MFX_VKROT_TW_TRANS_UP', init= 32832, min= 32768, max= 32895 },\n { desc= 'Tweeter Trans Down', id= 'MFX_VKROT_TW_TRANS_DW', init= 32832, min= 32768, max= 32895 },\n { desc= 'Tweeter Level', id= 'MFX_VKROT_TW_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= 'Spread', id= 'MFX_VKROT_SPREAD', init= 32778, min= 32768, max= 32778 },\n { desc= 'Low Gain', id= 'MFX_VKROT_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_VKROT_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_VKROT_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'ROTARY 3',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_ROT3_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_ROT3_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_ROT3_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_ROT3_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Speed', id= 'MFX_ROT3_SPEED', init= 32768, min= 32768, max= 32769 },\n { desc= 'Brake', id= 'MFX_ROT3_BRAKE', init= 32768, min= 32768, max= 32769 },\n { desc= 'Woofer Slow Speed', id= 'MFX_ROT3_WF_SLOW_SPEED', init= 32808, min= 32769, max= 32968 },\n { desc= 'Woofer Fast Speed', id= 'MFX_ROT3_WF_FAST_SPEED', init= 32928, min= 32769, max= 32968 },\n { desc= 'Woofer Trans Up', id= 'MFX_ROT3_WF_TRANS_UP', init= 32832, min= 32768, max= 32895 },\n { desc= 'Woofer Trans Down', id= 'MFX_ROT3_WF_TRANS_DW', init= 32832, min= 32768, max= 32895 },\n { desc= 'Woofer Level', id= 'MFX_ROT3_WF_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= 'Tweeter Slow Speed', id= 'MFX_ROT3_TW_SLOW_SPEED', init= 32808, min= 32769, max= 32968 },\n { desc= 'Tweeter Fast Speed', id= 'MFX_ROT3_TW_FAST_SPEED', init= 32928, min= 32769, max= 32968 },\n { desc= 'Tweeter Trans Up', id= 'MFX_ROT3_TW_TRANS_UP', init= 32832, min= 32768, max= 32895 },\n { desc= 'Tweeter Trans Down', id= 'MFX_ROT3_TW_TRANS_DW', init= 32832, min= 32768, max= 32895 },\n { desc= 'Tweeter Level', id= 'MFX_ROT3_TW_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= 'Spread', id= 'MFX_ROT3_SPREAD', init= 32778, min= 32768, max= 32778 },\n { desc= 'Low Gain', id= 'MFX_ROT3_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_ROT3_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_ROT3_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= 'OD Switch', id= 'MFX_ROT3_OD_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'OD Gain', id= 'MFX_ROT3_OD_GAIN', init= 32848, min= 32768, max= 32895 },\n { desc= 'OD Drive', id= 'MFX_ROT3_OD_DRIVE', init= 32868, min= 32768, max= 32895 },\n { desc= 'OD Level', id= 'MFX_ROT3_OD_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'CHORUS',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STCHO_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_STCHO_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_STCHO_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_STCHO_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Filter Type', id= 'MFX_STCHO_FILT', init= 32770, min= 32768, max= 32770 },\n { desc= 'Cutoff Freq', id= 'MFX_STCHO_SPLT', init= 32774, min= 32768, max= 32784 },\n { desc= 'Pre Delay', id= 'MFX_STCHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Rate (sync sw)', id= 'MFX_STCHO_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_STCHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_STCHO_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_STCHO_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Phase', id= 'MFX_STCHO_PHS', init= 32858, min= 32768, max= 32858 },\n { desc= 'Low Gain', id= 'MFX_STCHO_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_STCHO_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_STCHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_STCHO_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'FLANGER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STFLG_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_STFLG_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_STFLG_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_STFLG_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Filter Type', id= 'MFX_STFLG_FILT', init= 32770, min= 32768, max= 32770 },\n { desc= 'Cutoff Freq', id= 'MFX_STFLG_SPLT', init= 32774, min= 32768, max= 32784 },\n { desc= 'Pre Delay', id= 'MFX_STFLG_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Rate (sync sw)', id= 'MFX_STFLG_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_STFLG_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_STFLG_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_STFLG_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Phase', id= 'MFX_STFLG_PHS', init= 32858, min= 32768, max= 32858 },\n { desc= 'Feedback', id= 'MFX_STFLG_FBK', init= 32847, min= 32768, max= 32866 },\n { desc= 'Low Gain', id= 'MFX_STFLG_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_STFLG_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_STFLG_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_STFLG_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'STEP FLANGER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STEPFLG_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_STEPFLG_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_STEPFLG_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_STEPFLG_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Filter Type', id= 'MFX_STEPFLG_FILT', init= 32770, min= 32768, max= 32770 },\n { desc= 'Cutoff Freq', id= 'MFX_STEPFLG_SPLT', init= 32774, min= 32768, max= 32784 },\n { desc= 'Pre Delay', id= 'MFX_STEPFLG_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Rate (sync sw)', id= 'MFX_STEPFLG_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_STEPFLG_RATE_HZ', init= 32798, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_STEPFLG_RATE_NOTE', init= 32781, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_STEPFLG_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Phase', id= 'MFX_STEPFLG_PHS', init= 32858, min= 32768, max= 32858 },\n { desc= 'Feedback', id= 'MFX_STEPFLG_FBK', init= 32847, min= 32768, max= 32866 },\n { desc= 'Step Rate (sync sw)', id= 'MFX_STEPFLG_S_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Step Rate (Hz)', id= 'MFX_STEPFLG_S_RATE_HZ', init= 32848, min= 32769, max= 32968 },\n { desc= 'Step Rate (note)', id= 'MFX_STEPFLG_S_RATE_NOTE', init= 32774, min= 32768, max= 32789 },\n { desc= 'Low Gain', id= 'MFX_STEPFLG_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_STEPFLG_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_STEPFLG_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_STEPFLG_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'HEXA-CHORUS',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_HEXCHO_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_HEXCHO_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_HEXCHO_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_HEXCHO_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Pre Delay', id= 'MFX_HEXCHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Rate (sync sw)', id= 'MFX_HEXCHO_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_HEXCHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_HEXCHO_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_HEXCHO_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Pre Delay Deviation', id= 'MFX_HEXCHO_DLY_DEV', init= 32768, min= 32768, max= 32788 },\n { desc= 'Depth Deviation', id= 'MFX_HEXCHO_DEPTH_DEV', init= 32788, min= 32768, max= 32808 },\n { desc= 'Pan Deviation', id= 'MFX_HEXCHO_PAN_DEV', init= 32788, min= 32768, max= 32788 },\n { desc= 'Balance', id= 'MFX_HEXCHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_HEXCHO_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'TREMOLO CHORUS',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_TRECHO_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_TRECHO_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_TRECHO_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_TRECHO_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Pre Delay', id= 'MFX_TRECHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Chorus Rate (sync sw)', id= 'MFX_TRECHO_CHO_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Chorus Rate (Hz)', id= 'MFX_TRECHO_CHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Chorus Rate (note)', id= 'MFX_TRECHO_CHO_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Chorus Depth', id= 'MFX_TRECHO_CHO_DEPTH', init= 32818, min= 32768, max= 32895 },\n { desc= 'Tremolo Rate (sync sw)', id= 'MFX_TRECHO_TRE_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Tremolo Rate (Hz)', id= 'MFX_TRECHO_TRE_RATE_HZ', init= 32808, min= 32769, max= 32968 },\n { desc= 'Tremolo Rate (note)', id= 'MFX_TRECHO_TRE_RATE_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Tremolo Separation', id= 'MFX_TRECHO_TRE_SEPA', init= 32895, min= 32768, max= 32895 },\n { desc= 'Tremolo Phase', id= 'MFX_TRECHO_TRE_PHS', init= 32858, min= 32768, max= 32858 },\n { desc= 'Balance', id= 'MFX_TRECHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_TRECHO_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'SPACE-D',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_SPACED_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_SPACED_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_SPACED_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_SPACED_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Pre Delay', id= 'MFX_SPACED_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Rate (sync sw)', id= 'MFX_SPACED_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_SPACED_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_SPACED_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_SPACED_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Phase', id= 'MFX_SPACED_PHS', init= 32858, min= 32768, max= 32858 },\n { desc= 'Low Gain', id= 'MFX_SPACED_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_SPACED_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_SPACED_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_SPACED_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'OVERDRIVE',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_VSOD_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_VSOD_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_VSOD_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_VSOD_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Drive', id= 'MFX_VSOD_DRV', init= 32895, min= 32768, max= 32895 },\n { desc= 'Tone', id= 'MFX_VSOD_TONE', init= 32818, min= 32768, max= 32895 },\n { desc= 'Amp Sw', id= 'MFX_VSOD_AMP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Amp Type', id= 'MFX_VSOD_AMP_TYPE', init= 32768, min= 32768, max= 32771 },\n { desc= 'Low Gain', id= 'MFX_VSOD_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_VSOD_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Pan', id= 'MFX_VSOD_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_VSOD_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'DISTORTION',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_VSDST_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_VSDST_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_VSDST_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_VSDST_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Drive', id= 'MFX_VSDST_DRV', init= 32895, min= 32768, max= 32895 },\n { desc= 'Tone', id= 'MFX_VSDST_TONE', init= 32818, min= 32768, max= 32895 },\n { desc= 'Amp Sw', id= 'MFX_VSDST_AMP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Amp Type', id= 'MFX_VSDST_AMP_TYPE', init= 32771, min= 32768, max= 32771 },\n { desc= 'Low Gain', id= 'MFX_VSDST_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_VSDST_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Pan', id= 'MFX_VSDST_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_VSDST_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'GUITAR AMP SIMULATOR',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_GAMPSIM_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_GAMPSIM_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_GAMPSIM_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_GAMPSIM_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Pre Amp Sw', id= 'MFX_GAMPSIM_AMP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Pre Amp Type', id= 'MFX_GAMPSIM_AMP_TYPE', init= 32769, min= 32768, max= 32781 },\n { desc= 'Pre Amp Volume', id= 'MFX_GAMPSIM_AMP_VOLUME', init= 32848, min= 32768, max= 32895 },\n { desc= 'Pre Amp Master', id= 'MFX_GAMPSIM_AMP_MASTER', init= 32868, min= 32768, max= 32895 },\n { desc= 'Pre Amp Gain', id= 'MFX_GAMPSIM_AMP_GAIN', init= 32769, min= 32768, max= 32770 },\n { desc= 'Pre Amp Bass', id= 'MFX_GAMPSIM_AMP_BASS', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Middle', id= 'MFX_GAMPSIM_AMP_MIDDLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Treble', id= 'MFX_GAMPSIM_AMP_TREBLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Presence', id= 'MFX_GAMPSIM_AMP_PRESENCE', init= 32768, min= 32768, max= 32895 },\n { desc= 'Pre Amp Bright', id= 'MFX_GAMPSIM_AMP_BRIGHT', init= 32768, min= 32768, max= 32769 },\n { desc= 'Speaker Sw', id= 'MFX_GAMPSIM_SP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Speaker Type', id= 'MFX_GAMPSIM_SP_TYPE', init= 32772, min= 32768, max= 32783 },\n { desc= 'Mic Setting', id= 'MFX_GAMPSIM_MIC_SETTING', init= 32769, min= 32768, max= 32770 },\n { desc= 'Mic Level', id= 'MFX_GAMPSIM_MIC_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= 'Direct Level', id= 'MFX_GAMPSIM_DIRECT_LEVEL', init= 32768, min= 32768, max= 32895 },\n { desc= 'Pan', id= 'MFX_GAMPSIM_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_GAMPSIM_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'COMPRESSOR',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_COMP_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_COMP_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_COMP_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_COMP_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Attack', id= 'MFX_COMP_ATK', init= 32788, min= 32768, max= 32895 },\n { desc= 'Threshold', id= 'MFX_COMP_THRES', init= 32832, min= 32768, max= 32895 },\n { desc= 'Post Gain', id= 'MFX_COMP_GAIN', init= 32774, min= 32768, max= 32786 },\n { desc= 'Low Gain', id= 'MFX_COMP_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_COMP_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_COMP_LEVEL', init= 32895, min= 32768, max= 32895 },\n { desc= '', id= 'MFX_COMP_RATIO', init= 32768, min= 32768, max= 32770 }\n }\n },\n\n {\n desc= 'LIMITER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_LIMIT_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_LIMIT_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_LIMIT_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_LIMIT_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Release', id= 'MFX_LIMIT_RELS', init= 32800, min= 32768, max= 32895 },\n { desc= 'Threshold', id= 'MFX_LIMIT_THRES', init= 32832, min= 32768, max= 32895 },\n { desc= 'Ratio', id= 'MFX_LIMIT_RATIO', init= 32770, min= 32768, max= 32771 },\n { desc= 'Post Gain', id= 'MFX_LIMIT_GAIN', init= 32774, min= 32768, max= 32786 },\n { desc= 'Low Gain', id= 'MFX_LIMIT_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_LIMIT_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_LIMIT_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'GATE',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_GATE_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_GATE_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_GATE_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_GATE_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Threshold', id= 'MFX_GATE_THRES', init= 32838, min= 32768, max= 32895 },\n { desc= 'Mode', id= 'MFX_GATE_MODE', init= 32768, min= 32768, max= 32769 },\n { desc= 'Attack', id= 'MFX_GATE_ATK', init= 32776, min= 32768, max= 32895 },\n { desc= 'Hold', id= 'MFX_GATE_HOLD', init= 32768, min= 32768, max= 32895 },\n { desc= 'Release', id= 'MFX_GATE_RELS', init= 32784, min= 32768, max= 32895 },\n { desc= 'Balance', id= 'MFX_GATE_BAL', init= 32868, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_GATE_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STDLY_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_STDLY_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_STDLY_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_STDLY_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Delay Left (sync sw)', id= 'MFX_STDLY_DLY_L_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Left (msec)', id= 'MFX_STDLY_DLY_L_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Delay Left (note)', id= 'MFX_STDLY_DLY_L_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay Right (sync sw)', id= 'MFX_STDLY_DLY_R_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Right (msec)', id= 'MFX_STDLY_DLY_R_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Delay Right (note)', id= 'MFX_STDLY_DLY_R_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Phase Left', id= 'MFX_STDLY_PHS_L', init= 32768, min= 32768, max= 32769 },\n { desc= 'Phase Right', id= 'MFX_STDLY_PHS_R', init= 32768, min= 32768, max= 32769 },\n { desc= 'Feedback Mode', id= 'MFX_STDLY_FBK_MODE', init= 32768, min= 32768, max= 32769 },\n { desc= 'Feedback', id= 'MFX_STDLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'HF Damp', id= 'MFX_STDLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Low Gain', id= 'MFX_STDLY_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_STDLY_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_STDLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_STDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'MODULATION DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_MODDLY_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_MODDLY_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_MODDLY_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_MODDLY_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Delay Left (sync sw)', id= 'MFX_MODDLY_DLY_L_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Left (msec)', id= 'MFX_MODDLY_DLY_L_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Delay Left (note)', id= 'MFX_MODDLY_DLY_L_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay Right (sync sw)', id= 'MFX_MODDLY_DLY_R_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Right (msec)', id= 'MFX_MODDLY_DLY_R_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Delay Right (note)', id= 'MFX_MODDLY_DLY_R_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Feedback Mode', id= 'MFX_MODDLY_FBK_MODE', init= 32768, min= 32768, max= 32769 },\n { desc= 'Feedback', id= 'MFX_MODDLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'HF Damp', id= 'MFX_MODDLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Rate (sync sw)', id= 'MFX_MODDLY_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Rate (Hz)', id= 'MFX_MODDLY_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Rate (note)', id= 'MFX_MODDLY_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Depth', id= 'MFX_MODDLY_DEPTH', init= 32788, min= 32768, max= 32895 },\n { desc= 'Phase', id= 'MFX_MODDLY_PHS', init= 32858, min= 32768, max= 32858 },\n { desc= 'Low Gain', id= 'MFX_MODDLY_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_MODDLY_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_MODDLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_MODDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= '3TAP PAN DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_TRIDLY_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_TRIDLY_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_TRIDLY_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_TRIDLY_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Delay Left (sync sw)', id= 'MFX_TRIDLY_DLY_L_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Left (msec)', id= 'MFX_TRIDLY_DLY_L_MSEC', init= 33168, min= 32768, max= 35368 },\n { desc= 'Delay Left (note)', id= 'MFX_TRIDLY_DLY_L_NOTE', init= 32778, min= 32768, max= 32789 },\n { desc= 'Delay Right (sync sw)', id= 'MFX_TRIDLY_DLY_R_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Right (msec)', id= 'MFX_TRIDLY_DLY_R_MSEC', init= 33568, min= 32768, max= 35368 },\n { desc= 'Delay Right (note)', id= 'MFX_TRIDLY_DLY_R_NOTE', init= 32781, min= 32768, max= 32789 },\n { desc= 'Delay Center (sync sw)', id= 'MFX_TRIDLY_DLY_C_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Center (msec)', id= 'MFX_TRIDLY_DLY_C_MSEC', init= 33968, min= 32768, max= 35368 },\n { desc= 'Delay Center (note)', id= 'MFX_TRIDLY_DLY_C_NOTE', init= 32783, min= 32768, max= 32789 },\n { desc= 'Center Feedback', id= 'MFX_TRIDLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'HF Damp', id= 'MFX_TRIDLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Left Level ', id= 'MFX_TRIDLY_LEVEL_L', init= 32895, min= 32768, max= 32895 },\n { desc= 'Right Level', id= 'MFX_TRIDLY_LEVEL_R', init= 32895, min= 32768, max= 32895 },\n { desc= 'Center Level', id= 'MFX_TRIDLY_LEVEL_C', init= 32895, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_TRIDLY_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_TRIDLY_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_TRIDLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_TRIDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= '4TAP PAN DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_QUADDLY_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_QUADDLY_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_QUADDLY_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_QUADDLY_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Delay 1 Time (sync sw)', id= 'MFX_QUADDLY_DLY1_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 1 Time (msec)', id= 'MFX_QUADDLY_DLY1_MSEC', init= 33968, min= 32768, max= 35368 },\n { desc= 'Delay 1 Time (note)', id= 'MFX_QUADDLY_DLY1_NOTE', init= 32783, min= 32768, max= 32789 },\n { desc= 'Delay 2 Time (sync sw)', id= 'MFX_QUADDLY_DLY2_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 2 Time (msec)', id= 'MFX_QUADDLY_DLY2_MSEC', init= 33668, min= 32768, max= 35368 },\n { desc= 'Delay 2 Time (note)', id= 'MFX_QUADDLY_DLY2_NOTE', init= 32782, min= 32768, max= 32789 },\n { desc= 'Delay 3 Time (sync sw)', id= 'MFX_QUADDLY_DLY3_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 3 Time (msec)', id= 'MFX_QUADDLY_DLY3_MSEC', init= 33368, min= 32768, max= 35368 },\n { desc= 'Delay 3 Time (note)', id= 'MFX_QUADDLY_DLY3_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay 4 Time (sync sw)', id= 'MFX_QUADDLY_DLY4_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 4 Time (msec)', id= 'MFX_QUADDLY_DLY4_MSEC', init= 33068, min= 32768, max= 35368 },\n { desc= 'Delay 4 Time (note)', id= 'MFX_QUADDLY_DLY4_NOTE', init= 32777, min= 32768, max= 32789 },\n { desc= 'Delay 1 Feedback', id= 'MFX_QUADDLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'HF Damp', id= 'MFX_QUADDLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay 1 Level', id= 'MFX_QUADDLY_LEVEL1', init= 32895, min= 32768, max= 32895 },\n { desc= 'Delay 2 Level', id= 'MFX_QUADDLY_LEVEL2', init= 32895, min= 32768, max= 32895 },\n { desc= 'Delay 3 Level', id= 'MFX_QUADDLY_LEVEL3', init= 32895, min= 32768, max= 32895 },\n { desc= 'Delay 4 Level', id= 'MFX_QUADDLY_LEVEL4', init= 32895, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_QUADDLY_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_QUADDLY_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_QUADDLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_QUADDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'MULTI TAP DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_MTDLY_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_MTDLY_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_MTDLY_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_MTDLY_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Delay 1 Time (sync sw)', id= 'MFX_MTDLY_DLY1_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 1 Time (msec)', id= 'MFX_MTDLY_DLY1_MSEC', init= 33968, min= 32768, max= 35368 },\n { desc= 'Delay 1 Time (note)', id= 'MFX_MTDLY_DLY1_NOTE', init= 32783, min= 32768, max= 32789 },\n { desc= 'Delay 2 Time (sync sw)', id= 'MFX_MTDLY_DLY2_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 2 Time (msec)', id= 'MFX_MTDLY_DLY2_MSEC', init= 33668, min= 32768, max= 35368 },\n { desc= 'Delay 2 Time (note)', id= 'MFX_MTDLY_DLY2_NOTE', init= 32782, min= 32768, max= 32789 },\n { desc= 'Delay 3 Time (sync sw)', id= 'MFX_MTDLY_DLY3_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 3 Time (msec)', id= 'MFX_MTDLY_DLY3_MSEC', init= 33368, min= 32768, max= 35368 },\n { desc= 'Delay 3 Time (note)', id= 'MFX_MTDLY_DLY3_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay 4 Time (sync sw)', id= 'MFX_MTDLY_DLY4_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 4 Time (msec)', id= 'MFX_MTDLY_DLY4_MSEC', init= 33068, min= 32768, max= 35368 },\n { desc= 'Delay 4 Time (note)', id= 'MFX_MTDLY_DLY4_NOTE', init= 32777, min= 32768, max= 32789 },\n { desc= 'Delay 1 Feedback', id= 'MFX_MTDLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'HF Damp', id= 'MFX_MTDLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay 1 Pan', id= 'MFX_MTDLY_PAN1', init= 32768, min= 32768, max= 32895 },\n { desc= 'Delay 2 Pan', id= 'MFX_MTDLY_PAN2', init= 32895, min= 32768, max= 32895 },\n { desc= 'Delay 3 Pan', id= 'MFX_MTDLY_PAN3', init= 32800, min= 32768, max= 32895 },\n { desc= 'Delay 4 Pan', id= 'MFX_MTDLY_PAN4', init= 32864, min= 32768, max= 32895 },\n { desc= 'Delay 1 Level', id= 'MFX_MTDLY_LEVEL1', init= 32895, min= 32768, max= 32895 },\n { desc= 'Delay 2 Level', id= 'MFX_MTDLY_LEVEL2', init= 32895, min= 32768, max= 32895 },\n { desc= 'Delay 3 Level', id= 'MFX_MTDLY_LEVEL3', init= 32895, min= 32768, max= 32895 },\n { desc= 'Delay 4 Level', id= 'MFX_MTDLY_LEVEL4', init= 32895, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_MTDLY_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_MTDLY_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_MTDLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_MTDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'REVERSE DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_RVSDLY_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_RVSDLY_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_RVSDLY_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_RVSDLY_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Threshold', id= 'MFX_RVSDLY_THRESHOLD', init= 32798, min= 32768, max= 32895 },\n { desc= 'Rev Delay Time (sync sw)', id= 'MFX_RVSDLY_DLYR_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Rev Delay Time (msec)', id= 'MFX_RVSDLY_DLYR_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Rev Delay Time (note)', id= 'MFX_RVSDLY_DLYR_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Rev Delay Feedback', id= 'MFX_RVSDLY_DLYR_FBK', init= 32817, min= 32768, max= 32866 },\n { desc= 'Rev Delay HF Damp', id= 'MFX_RVSDLY_DLYR_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Rev Delay Pan', id= 'MFX_RVSDLY_DLYR_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Rev Delay Level', id= 'MFX_RVSDLY_DLYR_LVL', init= 32895, min= 32768, max= 32895 },\n { desc= 'Delay 1 Time (sync sw)', id= 'MFX_RVSDLY_DLY1_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 1 Time (msec)', id= 'MFX_RVSDLY_DLY1_MSEC', init= 33068, min= 32768, max= 34068 },\n { desc= 'Delay 1 Time (note)', id= 'MFX_RVSDLY_DLY1_NOTE', init= 32777, min= 32768, max= 32789 },\n { desc= 'Delay 2 Time (sync sw)', id= 'MFX_RVSDLY_DLY2_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 2 Time (msec)', id= 'MFX_RVSDLY_DLY2_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Delay 2 Time (note)', id= 'MFX_RVSDLY_DLY2_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay 3 Time (sync sw)', id= 'MFX_RVSDLY_DLY3_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay 3 Time (msec)', id= 'MFX_RVSDLY_DLY3_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Delay 3 Time (note)', id= 'MFX_RVSDLY_DLY3_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay 3 Feedback', id= 'MFX_RVSDLY_DLY3_FBK', init= 32817, min= 32768, max= 32866 },\n { desc= 'Delay HF Damp', id= 'MFX_RVSDLY_DLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay 1 Pan', id= 'MFX_RVSDLY_DLY1_PAN', init= 32768, min= 32768, max= 32895 },\n { desc= 'Delay 2 Pan', id= 'MFX_RVSDLY_DLY2_PAN', init= 32895, min= 32768, max= 32895 },\n { desc= 'Delay 1 Level', id= 'MFX_RVSDLY_DLY1_LVL', init= 32768, min= 32768, max= 32895 },\n { desc= 'Delay 2 Level', id= 'MFX_RVSDLY_DLY2_LVL', init= 32768, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_RVSDLY_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_RVSDLY_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_RVSDLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_RVSDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'TIME CTRL DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STTMDLY_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_STTMDLY_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_STTMDLY_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_STTMDLY_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Delay Time (sync sw)', id= 'MFX_STTMDLY_DLY_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Delay Time (msec)', id= 'MFX_STTMDLY_DLY_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Delay Time (note)', id= 'MFX_STTMDLY_DLY_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Acceleration', id= 'MFX_STTMDLY_ACCEL', init= 32778, min= 32768, max= 32783 },\n { desc= 'Feedback', id= 'MFX_STTMDLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'HF Damp', id= 'MFX_STTMDLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Low Gain', id= 'MFX_STTMDLY_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_STTMDLY_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_STTMDLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_STTMDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'LOFI COMPRESS',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_LFCOMP_CTRL_ASGN1', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 2', id= 'MFX_LFCOMP_CTRL_ASGN2', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 3', id= 'MFX_LFCOMP_CTRL_ASGN3', init= 0, min= 0, max= 2 },\n { desc= 'Control Assign 4', id= 'MFX_LFCOMP_CTRL_ASGN4', init= 0, min= 0, max= 2 },\n { desc= 'Pre Filter Type', id= 'MFX_LFCOMP_PRE_FILT', init= 32769, min= 32768, max= 32773 },\n { desc= 'LoFi Type', id= 'MFX_LFCOMP_LOFI_TYPE', init= 32772, min= 32768, max= 32776 },\n { desc= 'Post Filter Type', id= 'MFX_LFCOMP_POST_FILT', init= 32769, min= 32768, max= 32770 },\n { desc= 'Post Filter Cutoff', id= 'MFX_LFCOMP_CUTOFF', init= 32781, min= 32768, max= 32784 },\n { desc= 'Low Gain', id= 'MFX_LFCOMP_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_LFCOMP_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_LFCOMP_BAL', init= 32868, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_LFCOMP_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'BIT CRASHER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_BITC_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_BITC_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_BITC_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_BITC_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Sample Rate', id= 'MFX_BITC_SMP_RATE', init= 32848, min= 32768, max= 32895 },\n { desc= 'Bit Down', id= 'MFX_BITC_BIT_DOWN', init= 32784, min= 32768, max= 32788 },\n { desc= 'Filter', id= 'MFX_BITC_FILTER', init= 32895, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_BITC_LO_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_BITC_HI_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_BITC_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'PITCH SHIFTER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_STPS_CTRL_ASGN1', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 2', id= 'MFX_STPS_CTRL_ASGN2', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 3', id= 'MFX_STPS_CTRL_ASGN3', init= 0, min= 0, max= 3 },\n { desc= 'Control Assign 4', id= 'MFX_STPS_CTRL_ASGN4', init= 0, min= 0, max= 3 },\n { desc= 'Coarse', id= 'MFX_STPS_CRS', init= 32792, min= 32768, max= 32804 },\n { desc= 'Fine', id= 'MFX_STPS_FINE', init= 32818, min= 32768, max= 32868 },\n { desc= 'Delay Time (sync sw)', id= 'MFX_STPS_DLY_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Delay Time (msec)', id= 'MFX_STPS_DLY_MSEC', init= 32768, min= 32768, max= 34068 },\n { desc= 'Delay Time (note)', id= 'MFX_STPS_DLY_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Feedback', id= 'MFX_STPS_FBK', init= 32817, min= 32768, max= 32866 },\n { desc= 'Low Gain', id= 'MFX_STPS_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_STPS_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_STPS_BAL', init= 32868, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_STPS_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= '2VOICE PITCH SHIFTER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_TVPS_CTRL_ASGN1', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 2', id= 'MFX_TVPS_CTRL_ASGN2', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 3', id= 'MFX_TVPS_CTRL_ASGN3', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 4', id= 'MFX_TVPS_CTRL_ASGN4', init= 0, min= 0, max= 7 },\n { desc= 'Pitch1 Coarse', id= 'MFX_TVPS_CRS1', init= 32796, min= 32768, max= 32804 },\n { desc= 'Pitch1 Fine', id= 'MFX_TVPS_FINE1', init= 32818, min= 32768, max= 32868 },\n { desc= 'Pitch1 Delay (sync sw)', id= 'MFX_TVPS_DLY1_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Pitch1 Delay (msec)', id= 'MFX_TVPS_DLY1_MSEC', init= 33068, min= 32768, max= 34068 },\n { desc= 'Pitch1 Delay (note)', id= 'MFX_TVPS_DLY1_NOTE', init= 32777, min= 32768, max= 32789 },\n { desc= 'Pitch1 Feedback', id= 'MFX_TVPS_FBK1', init= 32817, min= 32768, max= 32866 },\n { desc= 'Pitch1 Pan', id= 'MFX_TVPS_PAN1', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pitch1 Level', id= 'MFX_TVPS_LEVEL1', init= 32895, min= 32768, max= 32895 },\n { desc= 'Pitch2 Coarse', id= 'MFX_TVPS_CRS2', init= 32799, min= 32768, max= 32804 },\n { desc= 'Pitch2 Fine', id= 'MFX_TVPS_FINE2', init= 32818, min= 32768, max= 32868 },\n { desc= 'Pitch2 Delay (sync sw)', id= 'MFX_TVPS_DLY2_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Pitch2 Delay (msec)', id= 'MFX_TVPS_DLY2_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Pitch2 Delay (note)', id= 'MFX_TVPS_DLY2_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Pitch2 Feedback', id= 'MFX_TVPS_FBK2', init= 32817, min= 32768, max= 32866 },\n { desc= 'Pitch2 Pan', id= 'MFX_TVPS_PAN2', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pitch2 Level', id= 'MFX_TVPS_LEVEL2', init= 32895, min= 32768, max= 32895 },\n { desc= 'Low Gain', id= 'MFX_TVPS_EQ_LO', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_TVPS_EQ_HI', init= 32783, min= 32768, max= 32798 },\n { desc= 'Balance', id= 'MFX_TVPS_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_TVPS_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'OD->CHORUS',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_ODSCHO_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_ODSCHO_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_ODSCHO_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_ODSCHO_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Overdrive Drive', id= 'MFX_ODSCHO_OD_DRV', init= 32832, min= 32768, max= 32895 },\n { desc= 'Overdrive Pan', id= 'MFX_ODSCHO_OD_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Chorus Pre Delay', id= 'MFX_ODSCHO_CHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Chorus Rate (sync sw)', id= 'MFX_ODSCHO_CHO_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Chorus Rate (Hz)', id= 'MFX_ODSCHO_CHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Chorus Rate (note)', id= 'MFX_ODSCHO_CHO_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Chorus Depth', id= 'MFX_ODSCHO_CHO_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Chorus Balance', id= 'MFX_ODSCHO_CHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_ODSCHO_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'OD->FLANGER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_ODSFLG_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_ODSFLG_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_ODSFLG_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_ODSFLG_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Overdrive Drive', id= 'MFX_ODSFLG_OD_DRV', init= 32832, min= 32768, max= 32895 },\n { desc= 'Overdrive Pan', id= 'MFX_ODSFLG_OD_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Flanger Pre Delay', id= 'MFX_ODSFLG_FLG_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Flanger Rate (sync sw)', id= 'MFX_ODSFLG_FLG_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Flanger Rate (Hz)', id= 'MFX_ODSFLG_FLG_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Flanger Rate (note)', id= 'MFX_ODSFLG_FLG_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Flanger Depth', id= 'MFX_ODSFLG_FLG_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Flanger Feedback', id= 'MFX_ODSFLG_FLG_FBK', init= 32847, min= 32768, max= 32866 },\n { desc= 'Flanger Balance', id= 'MFX_ODSFLG_FLG_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_ODSFLG_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'OD->DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_ODSDLY_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_ODSDLY_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_ODSDLY_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_ODSDLY_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Overdrive Drive', id= 'MFX_ODSDLY_OD_DRV', init= 32832, min= 32768, max= 32895 },\n { desc= 'Overdrive Pan', id= 'MFX_ODSDLY_OD_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Delay Time (sync sw)', id= 'MFX_ODSDLY_DLY_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Time (msec)', id= 'MFX_ODSDLY_DLY_MSEC', init= 33368, min= 32768, max= 35368 },\n { desc= 'Delay Time (note)', id= 'MFX_ODSDLY_DLY_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay Feedback', id= 'MFX_ODSDLY_DLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'Delay HF Damp', id= 'MFX_ODSDLY_DLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay Balance', id= 'MFX_ODSDLY_DLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_ODSDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'DS->CHORUS',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_DSTSCHO_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_DSTSCHO_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_DSTSCHO_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_DSTSCHO_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Distortion Drive', id= 'MFX_DSTSCHO_DST_DRV', init= 32895, min= 32768, max= 32895 },\n { desc= 'Distortion Pan', id= 'MFX_DSTSCHO_DST_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Chorus Pre Delay', id= 'MFX_DSTSCHO_CHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Chorus Rate (sync sw)', id= 'MFX_DSTSCHO_CHO_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Chorus Rate (Hz)', id= 'MFX_DSTSCHO_CHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Chorus Rate (note)', id= 'MFX_DSTSCHO_CHO_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Chorus Depth', id= 'MFX_DSTSCHO_CHO_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Chorus Balance', id= 'MFX_DSTSCHO_CHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_DSTSCHO_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'DS->FLANGER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_DSTSFLG_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_DSTSFLG_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_DSTSFLG_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_DSTSFLG_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Distortion Drive', id= 'MFX_DSTSFLG_DST_DRV', init= 32895, min= 32768, max= 32895 },\n { desc= 'Distortion Pan', id= 'MFX_DSTSFLG_DST_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Flanger Pre Delay', id= 'MFX_DSTSFLG_FLG_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Flanger Rate (sync sw)', id= 'MFX_DSTSFLG_FLG_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Flanger Rate (Hz)', id= 'MFX_DSTSFLG_FLG_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Flanger Rate (note)', id= 'MFX_DSTSFLG_FLG_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Flanger Depth', id= 'MFX_DSTSFLG_FLG_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Flanger Feedback', id= 'MFX_DSTSFLG_FLG_FBK', init= 32847, min= 32768, max= 32866 },\n { desc= 'Flanger Balance', id= 'MFX_DSTSFLG_FLG_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_DSTSFLG_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'DS->DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_DSTSDLY_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_DSTSDLY_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_DSTSDLY_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_DSTSDLY_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Distortion Drive', id= 'MFX_DSTSDLY_DST_DRV', init= 32895, min= 32768, max= 32895 },\n { desc= 'Distortion Pan', id= 'MFX_DSTSDLY_DST_PAN', init= 32832, min= 32768, max= 32895 },\n { desc= 'Delay Time (sync sw)', id= 'MFX_DSTSDLY_DLY_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Time (msec)', id= 'MFX_DSTSDLY_DLY_MSEC', init= 33368, min= 32768, max= 35368 },\n { desc= 'Delay Time (note)', id= 'MFX_DSTSDLY_DLY_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay Feedback', id= 'MFX_DSTSDLY_DLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'Delay HF Damp', id= 'MFX_DSTSDLY_DLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay Balance', id= 'MFX_DSTSDLY_DLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_DSTSDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'OD/DS->TWAH',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_ODTW_CTRL_ASGN1', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 2', id= 'MFX_ODTW_CTRL_ASGN2', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 3', id= 'MFX_ODTW_CTRL_ASGN3', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 4', id= 'MFX_ODTW_CTRL_ASGN4', init= 0, min= 0, max= 6 },\n { desc= 'Drive Switch', id= 'MFX_ODTW_DRIVE_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Drive Type', id= 'MFX_ODTW_DRIVE_TYPE', init= 32768, min= 32768, max= 32769 },\n { desc= 'Drive', id= 'MFX_ODTW_DRIVE', init= 32818, min= 32768, max= 32895 },\n { desc= 'Tone', id= 'MFX_ODTW_TONE', init= 32818, min= 32768, max= 32895 },\n { desc= 'Amp Switch', id= 'MFX_ODTW_AMP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Amp Type', id= 'MFX_ODTW_AMP_TYPE', init= 32768, min= 32768, max= 32771 },\n { desc= 'TWah Switch', id= 'MFX_ODTW_TWAH_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'TWah Mode', id= 'MFX_ODTW_TWAH_MODE', init= 32769, min= 32768, max= 32769 },\n { desc= 'TWah Polarity', id= 'MFX_ODTW_TWAH_POLA', init= 32768, min= 32768, max= 32769 },\n { desc= 'TWah Sens', id= 'MFX_ODTW_TWAH_SENS', init= 32818, min= 32768, max= 32895 },\n { desc= 'TWah Manual', id= 'MFX_ODTW_TWAH_MANUAL', init= 32798, min= 32768, max= 32895 },\n { desc= 'TWah Peak', id= 'MFX_ODTW_TWAH_PEAK', init= 32818, min= 32768, max= 32895 },\n { desc= 'TWah Balance', id= 'MFX_ODTW_TWAH_BAL', init= 32868, min= 32768, max= 32868 },\n { desc= 'Low Gain', id= 'MFX_ODTW_LO_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_ODTW_HI_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_ODTW_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'OD/DS->AWAH',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_ODAW_CTRL_ASGN1', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 2', id= 'MFX_ODAW_CTRL_ASGN2', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 3', id= 'MFX_ODAW_CTRL_ASGN3', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 4', id= 'MFX_ODAW_CTRL_ASGN4', init= 0, min= 0, max= 7 },\n { desc= 'Drive Switch', id= 'MFX_ODAW_DRIVE_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Drive Type', id= 'MFX_ODAW_DRIVE_TYPE', init= 32768, min= 32768, max= 32769 },\n { desc= 'Drive', id= 'MFX_ODAW_DRIVE', init= 32818, min= 32768, max= 32895 },\n { desc= 'Tone', id= 'MFX_ODAW_TONE', init= 32818, min= 32768, max= 32895 },\n { desc= 'Amp Switch', id= 'MFX_ODAW_AMP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Amp Type', id= 'MFX_ODAW_AMP_TYPE', init= 32768, min= 32768, max= 32771 },\n { desc= 'AutoWah Switch', id= 'MFX_ODAW_AWAH_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'AutoWah Mode', id= 'MFX_ODAW_AWAH_MODE', init= 32769, min= 32768, max= 32769 },\n { desc= 'AutoWah Manual', id= 'MFX_ODAW_AWAH_MANUAL', init= 32828, min= 32768, max= 32895 },\n { desc= 'AutoWah Peak', id= 'MFX_ODAW_AWAH_PEAK', init= 32818, min= 32768, max= 32895 },\n { desc= 'AutoWah Rate (sync sw)', id= 'MFX_ODAW_AWAH_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'AutoWah Rate (Hz)', id= 'MFX_ODAW_AWAH_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'AutoWah Rate (note)', id= 'MFX_ODAW_AWAH_RATE_NOTE', init= 32779, min= 32768, max= 32789 },\n { desc= 'AutoWah Depth', id= 'MFX_ODAW_AWAH_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'AutoWah Balance', id= 'MFX_ODAW_AWAH_BAL', init= 32868, min= 32768, max= 32868 },\n { desc= 'Low Gain', id= 'MFX_ODAW_LO_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'High Gain', id= 'MFX_ODAW_HI_GAIN', init= 32783, min= 32768, max= 32798 },\n { desc= 'Level', id= 'MFX_ODAW_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'GTAMPSIM->CHORUS',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_GTCHO_CTRL_ASGN1', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 2', id= 'MFX_GTCHO_CTRL_ASGN2', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 3', id= 'MFX_GTCHO_CTRL_ASGN3', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 4', id= 'MFX_GTCHO_CTRL_ASGN4', init= 0, min= 0, max= 6 },\n { desc= 'Pre Amp Sw', id= 'MFX_GTCHO_AMP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Pre Amp Type', id= 'MFX_GTCHO_AMP_TYPE', init= 32769, min= 32768, max= 32781 },\n { desc= 'Pre Amp Volume', id= 'MFX_GTCHO_AMP_VOLUME', init= 32848, min= 32768, max= 32895 },\n { desc= 'Pre Amp Master', id= 'MFX_GTCHO_AMP_MASTER', init= 32868, min= 32768, max= 32895 },\n { desc= 'Pre Amp Gain', id= 'MFX_GTCHO_AMP_GAIN', init= 32769, min= 32768, max= 32770 },\n { desc= 'Pre Amp Bass', id= 'MFX_GTCHO_AMP_BASS', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Middle', id= 'MFX_GTCHO_AMP_MIDDLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Treble', id= 'MFX_GTCHO_AMP_TREBLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Speaker Sw', id= 'MFX_GTCHO_SP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Speaker Type', id= 'MFX_GTCHO_SP_TYPE', init= 32772, min= 32768, max= 32783 },\n { desc= 'Chorus Switch', id= 'MFX_GTCHO_CHO_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Chorus Pre Delay', id= 'MFX_GTCHO_CHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Chorus Rate (Hz)', id= 'MFX_GTCHO_CHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Chorus Depth', id= 'MFX_GTCHO_CHO_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Chorus Balance', id= 'MFX_GTCHO_CHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_GTCHO_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'GTAMPSIM->FLANGER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_GTFLN_CTRL_ASGN1', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 2', id= 'MFX_GTFLN_CTRL_ASGN2', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 3', id= 'MFX_GTFLN_CTRL_ASGN3', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 4', id= 'MFX_GTFLN_CTRL_ASGN4', init= 0, min= 0, max= 7 },\n { desc= 'Pre Amp Sw', id= 'MFX_GTFLN_AMP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Pre Amp Type', id= 'MFX_GTFLN_AMP_TYPE', init= 32769, min= 32768, max= 32781 },\n { desc= 'Pre Amp Volume', id= 'MFX_GTFLN_AMP_VOLUME', init= 32848, min= 32768, max= 32895 },\n { desc= 'Pre Amp Master', id= 'MFX_GTFLN_AMP_MASTER', init= 32868, min= 32768, max= 32895 },\n { desc= 'Pre Amp Gain', id= 'MFX_GTFLN_AMP_GAIN', init= 32769, min= 32768, max= 32770 },\n { desc= 'Pre Amp Bass', id= 'MFX_GTFLN_AMP_BASS', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Middle', id= 'MFX_GTFLN_AMP_MIDDLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Treble', id= 'MFX_GTFLN_AMP_TREBLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Speaker Sw', id= 'MFX_GTFLN_SP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Speaker Type', id= 'MFX_GTFLN_SP_TYPE', init= 32772, min= 32768, max= 32783 },\n { desc= 'Flanger Switch', id= 'MFX_GTFLN_FLN_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Flanger Pre Delay', id= 'MFX_GTFLN_FLN_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Flanger Rate (Hz)', id= 'MFX_GTFLN_FLN_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Flanger Depth', id= 'MFX_GTFLN_FLN_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Flanger Feedback', id= 'MFX_GTFLN_FLN_FBK', init= 32847, min= 32768, max= 32866 },\n { desc= 'Flanger Balance', id= 'MFX_GTFLN_FLN_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_GTFLN_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'GTAMPSIM->PHASER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_GTPH_CTRL_ASGN1', init= 0, min= 0, max= 8 },\n { desc= 'Control Assign 2', id= 'MFX_GTPH_CTRL_ASGN2', init= 0, min= 0, max= 8 },\n { desc= 'Control Assign 3', id= 'MFX_GTPH_CTRL_ASGN3', init= 0, min= 0, max= 8 },\n { desc= 'Control Assign 4', id= 'MFX_GTPH_CTRL_ASGN4', init= 0, min= 0, max= 8 },\n { desc= 'Pre Amp Sw', id= 'MFX_GTPH_AMP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Pre Amp Type', id= 'MFX_GTPH_AMP_TYPE', init= 32769, min= 32768, max= 32781 },\n { desc= 'Pre Amp Volume', id= 'MFX_GTPH_AMP_VOLUME', init= 32848, min= 32768, max= 32895 },\n { desc= 'Pre Amp Master', id= 'MFX_GTPH_AMP_MASTER', init= 32868, min= 32768, max= 32895 },\n { desc= 'Pre Amp Gain', id= 'MFX_GTPH_AMP_GAIN', init= 32769, min= 32768, max= 32770 },\n { desc= 'Pre Amp Bass', id= 'MFX_GTPH_AMP_BASS', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Middle', id= 'MFX_GTPH_AMP_MIDDLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Treble', id= 'MFX_GTPH_AMP_TREBLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Speaker Sw', id= 'MFX_GTPH_SP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Speaker Type', id= 'MFX_GTPH_SP_TYPE', init= 32772, min= 32768, max= 32783 },\n { desc= 'Phaser Switch', id= 'MFX_GTPH_PH_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Phaser Rate (Hz)', id= 'MFX_GTPH_PH_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Phaser Manual', id= 'MFX_GTPH_PH_MANUAL', init= 32828, min= 32768, max= 32895 },\n { desc= 'Phaser Depth', id= 'MFX_GTPH_PH_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Phaser Resonance', id= 'MFX_GTPH_PH_RESO', init= 32848, min= 32768, max= 32895 },\n { desc= 'Phaser Mix', id= 'MFX_GTPH_PH_MIX', init= 32895, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_GTPH_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'GTAMPSIM->DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_GTDLY_CTRL_ASGN1', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 2', id= 'MFX_GTDLY_CTRL_ASGN2', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 3', id= 'MFX_GTDLY_CTRL_ASGN3', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 4', id= 'MFX_GTDLY_CTRL_ASGN4', init= 0, min= 0, max= 6 },\n { desc= 'Pre Amp Sw', id= 'MFX_GTDLY_AMP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Pre Amp Type', id= 'MFX_GTDLY_AMP_TYPE', init= 32769, min= 32768, max= 32781 },\n { desc= 'Pre Amp Volume', id= 'MFX_GTDLY_AMP_VOLUME', init= 32848, min= 32768, max= 32895 },\n { desc= 'Pre Amp Master', id= 'MFX_GTDLY_AMP_MASTER', init= 32868, min= 32768, max= 32895 },\n { desc= 'Pre Amp Gain', id= 'MFX_GTDLY_AMP_GAIN', init= 32769, min= 32768, max= 32770 },\n { desc= 'Pre Amp Bass', id= 'MFX_GTDLY_AMP_BASS', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Middle', id= 'MFX_GTDLY_AMP_MIDDLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Pre Amp Treble', id= 'MFX_GTDLY_AMP_TREBLE', init= 32832, min= 32768, max= 32895 },\n { desc= 'Speaker Sw', id= 'MFX_GTDLY_SP_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Speaker Type', id= 'MFX_GTDLY_SP_TYPE', init= 32772, min= 32768, max= 32783 },\n { desc= 'Delay Switch', id= 'MFX_GTDLY_DLY_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Time', id= 'MFX_GTDLY_DLY_TIME', init= 33368, min= 32768, max= 34068 },\n { desc= 'Delay Feedback', id= 'MFX_GTDLY_DLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'Delay HF Damp', id= 'MFX_GTDLY_DLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay Balance', id= 'MFX_GTDLY_DLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_GTDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'EP->TREMOLO',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_EPTRM_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_EPTRM_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_EPTRM_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_EPTRM_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Type', id= 'MFX_EPTRM_TYPE', init= 32768, min= 32768, max= 32770 },\n { desc= 'Bass', id= 'MFX_EPTRM_BASS', init= 32818, min= 32768, max= 32868 },\n { desc= 'Treble', id= 'MFX_EPTRM_TREBLE', init= 32818, min= 32768, max= 32868 },\n { desc= 'Tremolo Switch', id= 'MFX_EPTRM_TRM_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Tremolo Speed (sync sw)', id= 'MFX_EPTRM_TRM_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Tremolo Speed (Hz)', id= 'MFX_EPTRM_TRM_RATE_HZ', init= 32793, min= 32769, max= 32968 },\n { desc= 'Tremolo Speed (note)', id= 'MFX_EPTRM_TRM_RATE_NOTE', init= 32779, min= 32768, max= 32789 },\n { desc= 'Tremolo Depth', id= 'MFX_EPTRM_TRM_DEPTH', init= 32818, min= 32768, max= 32895 },\n { desc= 'Tremolo Duty', id= 'MFX_EPTRM_TRM_DUTY', init= 32776, min= 32768, max= 32788 },\n { desc= 'Speaker Type', id= 'MFX_EPTRM_SPEAKER_TYPE', init= 32769, min= 32768, max= 32772 },\n { desc= 'OD Switch', id= 'MFX_EPTRM_OD_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'OD Gain', id= 'MFX_EPTRM_OD_GAIN', init= 32800, min= 32768, max= 32895 },\n { desc= 'OD Drive', id= 'MFX_EPTRM_OD_DRIVE', init= 32768, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_EPTRM_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'EP->CHORUS',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_EPCHO_CTRL_ASGN1', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 2', id= 'MFX_EPCHO_CTRL_ASGN2', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 3', id= 'MFX_EPCHO_CTRL_ASGN3', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 4', id= 'MFX_EPCHO_CTRL_ASGN4', init= 0, min= 0, max= 6 },\n { desc= 'Type', id= 'MFX_EPCHO_TYPE', init= 32768, min= 32768, max= 32770 },\n { desc= 'Bass', id= 'MFX_EPCHO_BASS', init= 32818, min= 32768, max= 32868 },\n { desc= 'Treble', id= 'MFX_EPCHO_TREBLE', init= 32818, min= 32768, max= 32868 },\n { desc= 'Chorus Switch', id= 'MFX_EPCHO_CHO_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Chorus Pre Delay', id= 'MFX_EPCHO_CHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Chorus Rate (sync sw)', id= 'MFX_EPCHO_CHO_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Chorus Rate (Hz)', id= 'MFX_EPCHO_CHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Chorus Rate (note)', id= 'MFX_EPCHO_CHO_RATE_NOTE', init= 32779, min= 32768, max= 32789 },\n { desc= 'Chorus Depth', id= 'MFX_EPCHO_CHO_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Chorus Balance', id= 'MFX_EPCHO_CHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Speaker Type', id= 'MFX_EPCHO_SPEAKER_TYPE', init= 32769, min= 32768, max= 32772 },\n { desc= 'OD Switch', id= 'MFX_EPCHO_OD_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'OD Gain', id= 'MFX_EPCHO_OD_GAIN', init= 32800, min= 32768, max= 32895 },\n { desc= 'OD Drive', id= 'MFX_EPCHO_OD_DRIVE', init= 32768, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_EPCHO_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'EP->FLANGER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_EPFLN_CTRL_ASGN1', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 2', id= 'MFX_EPFLN_CTRL_ASGN2', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 3', id= 'MFX_EPFLN_CTRL_ASGN3', init= 0, min= 0, max= 7 },\n { desc= 'Control Assign 4', id= 'MFX_EPFLN_CTRL_ASGN4', init= 0, min= 0, max= 7 },\n { desc= 'Type', id= 'MFX_EPFLN_TYPE', init= 32768, min= 32768, max= 32770 },\n { desc= 'Bass', id= 'MFX_EPFLN_BASS', init= 32818, min= 32768, max= 32868 },\n { desc= 'Treble', id= 'MFX_EPFLN_TREBLE', init= 32818, min= 32768, max= 32868 },\n { desc= 'Flanger Switch', id= 'MFX_EPFLN_FLN_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Flanger Pre Delay', id= 'MFX_EPFLN_FLN_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Flanger Rate (sync sw)', id= 'MFX_EPFLN_FLN_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Flanger Rate (Hz)', id= 'MFX_EPFLN_FLN_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Flanger Rate (note)', id= 'MFX_EPFLN_FLN_RATE_NOTE', init= 32779, min= 32768, max= 32789 },\n { desc= 'Flanger Depth', id= 'MFX_EPFLN_FLN_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Flanger Feedback', id= 'MFX_EPFLN_FLG_FBK', init= 32847, min= 32768, max= 32866 },\n { desc= 'Flanger Balance', id= 'MFX_EPFLN_FLN_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Speaker Type', id= 'MFX_EPFLN_SPEAKER_TYPE', init= 32769, min= 32768, max= 32772 },\n { desc= 'OD Switch', id= 'MFX_EPFLN_OD_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'OD Gain', id= 'MFX_EPFLN_OD_GAIN', init= 32800, min= 32768, max= 32895 },\n { desc= 'OD Drive', id= 'MFX_EPFLN_OD_DRIVE', init= 32768, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_EPFLN_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'EP->PHASER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_EPPH_CTRL_ASGN1', init= 0, min= 0, max= 8 },\n { desc= 'Control Assign 2', id= 'MFX_EPPH_CTRL_ASGN2', init= 0, min= 0, max= 8 },\n { desc= 'Control Assign 3', id= 'MFX_EPPH_CTRL_ASGN3', init= 0, min= 0, max= 8 },\n { desc= 'Control Assign 4', id= 'MFX_EPPH_CTRL_ASGN4', init= 0, min= 0, max= 8 },\n { desc= 'Type', id= 'MFX_EPPH_TYPE', init= 32768, min= 32768, max= 32770 },\n { desc= 'Bass', id= 'MFX_EPPH_BASS', init= 32818, min= 32768, max= 32868 },\n { desc= 'Treble', id= 'MFX_EPPH_TREBLE', init= 32818, min= 32768, max= 32868 },\n { desc= 'Phaser Switch', id= 'MFX_EPPH_PH_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Phaser Rate (sync sw)', id= 'MFX_EPPH_PH_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Phaser Rate (Hz)', id= 'MFX_EPPH_PH_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Phaser Rate (note)', id= 'MFX_EPPH_PH_RATE_NOTE', init= 32779, min= 32768, max= 32789 },\n { desc= 'Phaser Manual', id= 'MFX_EPPH_PH_MANUAL', init= 32828, min= 32768, max= 32895 },\n { desc= 'Phaser Depth', id= 'MFX_EPPH_PH_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Phaser Resonance', id= 'MFX_EPPH_PH_RESO', init= 32848, min= 32768, max= 32895 },\n { desc= 'Phaser Mix', id= 'MFX_EPPH_PH_MIX', init= 32895, min= 32768, max= 32895 },\n { desc= 'Speaker Type', id= 'MFX_EPPH_SPEAKER_TYPE', init= 32769, min= 32768, max= 32772 },\n { desc= 'OD Switch', id= 'MFX_EPPH_OD_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'OD Gain', id= 'MFX_EPPH_OD_GAIN', init= 32800, min= 32768, max= 32895 },\n { desc= 'OD Drive', id= 'MFX_EPPH_OD_DRIVE', init= 32768, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_EPPH_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'EP->DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_EPDLY_CTRL_ASGN1', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 2', id= 'MFX_EPDLY_CTRL_ASGN2', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 3', id= 'MFX_EPDLY_CTRL_ASGN3', init= 0, min= 0, max= 6 },\n { desc= 'Control Assign 4', id= 'MFX_EPDLY_CTRL_ASGN4', init= 0, min= 0, max= 6 },\n { desc= 'Type', id= 'MFX_EPDLY_TYPE', init= 32768, min= 32768, max= 32770 },\n { desc= 'Bass', id= 'MFX_EPDLY_BASS', init= 32818, min= 32768, max= 32868 },\n { desc= 'Treble', id= 'MFX_EPDLY_TREBLE', init= 32818, min= 32768, max= 32868 },\n { desc= 'Delay Switch', id= 'MFX_EPDLY_DLY_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Time (sync sw)', id= 'MFX_EPDLY_DLY_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Delay Time (msec)', id= 'MFX_EPDLY_DLY_MSEC', init= 33368, min= 32768, max= 34068 },\n { desc= 'Delay Time (note)', id= 'MFX_EPDLY_DLY_NOTE', init= 32779, min= 32768, max= 32789 },\n { desc= 'Delay Acceleration', id= 'MFX_EPDLY_DLY_ACCEL', init= 32778, min= 32768, max= 32783 },\n { desc= 'Delay Feedback', id= 'MFX_EPDLY_DLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'Delay HF Damp', id= 'MFX_EPDLY_DLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay Balance', id= 'MFX_EPDLY_DLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Speaker Type', id= 'MFX_EPDLY_SPEAKER_TYPE', init= 32769, min= 32768, max= 32772 },\n { desc= 'OD Switch', id= 'MFX_EPDLY_OD_SW', init= 32769, min= 32768, max= 32769 },\n { desc= 'OD Gain', id= 'MFX_EPDLY_OD_GAIN', init= 32800, min= 32768, max= 32895 },\n { desc= 'OD Drive', id= 'MFX_EPDLY_OD_DRIVE', init= 32768, min= 32768, max= 32895 },\n { desc= 'Level', id= 'MFX_EPDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'ENHANCER->CHORUS',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_EHSCHO_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_EHSCHO_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_EHSCHO_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_EHSCHO_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Enhancer Sens', id= 'MFX_EHSCHO_EH_SENS', init= 32832, min= 32768, max= 32895 },\n { desc= 'Enhancer Mix', id= 'MFX_EHSCHO_EH_MIX', init= 32832, min= 32768, max= 32895 },\n { desc= 'Chorus Pre Delay', id= 'MFX_EHSCHO_CHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Chorus Rate (sync sw)', id= 'MFX_EHSCHO_CHO_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Chorus Rate (Hz)', id= 'MFX_EHSCHO_CHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Chorus Rate (note)', id= 'MFX_EHSCHO_CHO_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Chorus Depth', id= 'MFX_EHSCHO_CHO_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Chorus Balance', id= 'MFX_EHSCHO_CHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_EHSCHO_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'ENHANCER->FLANGER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_EHSFLG_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_EHSFLG_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_EHSFLG_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_EHSFLG_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Enhancer Sens', id= 'MFX_EHSFLG_EH_SENS', init= 32832, min= 32768, max= 32895 },\n { desc= 'Enhancer Mix', id= 'MFX_EHSFLG_EH_MIX', init= 32832, min= 32768, max= 32895 },\n { desc= 'Flanger Pre Delay', id= 'MFX_EHSFLG_FLG_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Flanger Rate (sync sw)', id= 'MFX_EHSFLG_FLG_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Flanger Rate (Hz)', id= 'MFX_EHSFLG_FLG_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Flanger Rate (note)', id= 'MFX_EHSFLG_FLG_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Flanger Depth', id= 'MFX_EHSFLG_FLG_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Flanger Feedback', id= 'MFX_EHSFLG_FLG_FBK', init= 32847, min= 32768, max= 32866 },\n { desc= 'Flanger Balance', id= 'MFX_EHSFLG_FLG_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_EHSFLG_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'ENHANCER->DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_EHSDLY_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_EHSDLY_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_EHSDLY_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_EHSDLY_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Enhancer Sens', id= 'MFX_EHSDLY_EH_SENS', init= 32832, min= 32768, max= 32895 },\n { desc= 'Enhancer Mix', id= 'MFX_EHSDLY_EH_MIX', init= 32832, min= 32768, max= 32895 },\n { desc= 'Delay Time (sync sw)', id= 'MFX_EHSDLY_DLY_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Time (msec)', id= 'MFX_EHSDLY_DLY_MSEC', init= 33368, min= 32768, max= 35368 },\n { desc= 'Delay Time (note)', id= 'MFX_EHSDLY_DLY_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay Feedback', id= 'MFX_EHSDLY_DLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'Delay HF Damp', id= 'MFX_EHSDLY_DLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay Balance', id= 'MFX_EHSDLY_DLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_EHSDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'CHORUS->DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_CHOSDLY_CTRL_ASGN1', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 2', id= 'MFX_CHOSDLY_CTRL_ASGN2', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 3', id= 'MFX_CHOSDLY_CTRL_ASGN3', init= 0, min= 0, max= 4 },\n { desc= 'Control Assign 4', id= 'MFX_CHOSDLY_CTRL_ASGN4', init= 0, min= 0, max= 4 },\n { desc= 'Chorus Pre Delay', id= 'MFX_CHOSDLY_CHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Chorus Rate (sync sw)', id= 'MFX_CHOSDLY_CHO_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Chorus Rate (Hz)', id= 'MFX_CHOSDLY_CHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Chorus Rate (note)', id= 'MFX_CHOSDLY_CHO_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Chorus Depth', id= 'MFX_CHOSDLY_CHO_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Chorus Balance', id= 'MFX_CHOSDLY_CHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Delay Time (sync sw)', id= 'MFX_CHOSDLY_DLY_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Time (msec)', id= 'MFX_CHOSDLY_DLY_MSEC', init= 33368, min= 32768, max= 35368 },\n { desc= 'Delay Time (note)', id= 'MFX_CHOSDLY_DLY_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay Feedback', id= 'MFX_CHOSDLY_DLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'Delay HF Damp', id= 'MFX_CHOSDLY_DLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay Balance', id= 'MFX_CHOSDLY_DLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_CHOSDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'FLANGER->DELAY',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_FLGSDLY_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_FLGSDLY_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_FLGSDLY_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_FLGSDLY_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Flanger Pre Delay', id= 'MFX_FLGSDLY_FLG_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Flanger Rate (sync sw)', id= 'MFX_FLGSDLY_FLG_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Flanger Rate (Hz)', id= 'MFX_FLGSDLY_FLG_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Flanger Rate (note)', id= 'MFX_FLGSDLY_FLG_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Flanger Depth', id= 'MFX_FLGSDLY_FLG_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Flanger Feedback', id= 'MFX_FLGSDLY_FLG_FBK', init= 32847, min= 32768, max= 32866 },\n { desc= 'Flanger Balance', id= 'MFX_FLGSDLY_FLG_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Delay Time (sync sw)', id= 'MFX_FLGSDLY_DLY_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Delay Time (msec)', id= 'MFX_FLGSDLY_DLY_MSEC', init= 33368, min= 32768, max= 35368 },\n { desc= 'Delay Time (note)', id= 'MFX_FLGSDLY_DLY_NOTE', init= 32780, min= 32768, max= 32789 },\n { desc= 'Delay Feedback', id= 'MFX_FLGSDLY_DLY_FBK', init= 32827, min= 32768, max= 32866 },\n { desc= 'Delay HF Damp', id= 'MFX_FLGSDLY_DLY_HF_DAMP', init= 32785, min= 32768, max= 32785 },\n { desc= 'Delay Balance', id= 'MFX_FLGSDLY_DLY_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_FLGSDLY_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n },\n\n {\n desc= 'CHORUS->FLANGER',\n leaf= {\n { desc= 'Control Assign 1', id= 'MFX_CHOSFLG_CTRL_ASGN1', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 2', id= 'MFX_CHOSFLG_CTRL_ASGN2', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 3', id= 'MFX_CHOSFLG_CTRL_ASGN3', init= 0, min= 0, max= 5 },\n { desc= 'Control Assign 4', id= 'MFX_CHOSFLG_CTRL_ASGN4', init= 0, min= 0, max= 5 },\n { desc= 'Chorus Pre Delay', id= 'MFX_CHOSFLG_CHO_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Chorus Rate (sync sw)', id= 'MFX_CHOSFLG_CHO_RATE_SYNC', init= 32768, min= 32768, max= 32769 },\n { desc= 'Chorus Rate (Hz)', id= 'MFX_CHOSFLG_CHO_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Chorus Rate (note)', id= 'MFX_CHOSFLG_CHO_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Chorus Depth', id= 'MFX_CHOSFLG_CHO_DEPTH', init= 32798, min= 32768, max= 32895 },\n { desc= 'Chorus Balance', id= 'MFX_CHOSFLG_CHO_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Flanger Pre Delay', id= 'MFX_CHOSFLG_FLG_DLY', init= 32788, min= 32768, max= 32893 },\n { desc= 'Flanger Rate (sync sw)', id= 'MFX_CHOSFLG_FLG_RATE_SYNC', init= 32769, min= 32768, max= 32769 },\n { desc= 'Flanger Rate (Hz)', id= 'MFX_CHOSFLG_FLG_RATE_HZ', init= 32778, min= 32769, max= 32968 },\n { desc= 'Flanger Rate (note)', id= 'MFX_CHOSFLG_FLG_RATE_NOTE', init= 32786, min= 32768, max= 32789 },\n { desc= 'Flanger Depth', id= 'MFX_CHOSFLG_FLG_DEPTH', init= 32808, min= 32768, max= 32895 },\n { desc= 'Flanger Feedback', id= 'MFX_CHOSFLG_FLG_FBK', init= 32847, min= 32768, max= 32866 },\n { desc= 'Flanger Balance', id= 'MFX_CHOSFLG_FLG_BAL', init= 32818, min= 32768, max= 32868 },\n { desc= 'Level', id= 'MFX_CHOSFLG_LEVEL', init= 32895, min= 32768, max= 32895 }\n }\n }\n}"}, {"path": "lua/devices/integra7/_model.lua", "data": "UndefinedByteType = -1\nZeroByteSize = -2\nINTEGER_MASK = 0x10000\nINTEGER1x1 = 0x10001 --00000001\nINTEGER1x2 = 0x10003 --00000011\nINTEGER1x3 = 0x1000 --00000111\nINTEGER1x4 = 0x1000f --00001111\nINTEGER1x5 = 0x1001f --00011111\nINTEGER1x6 = 0x1003f --00111111\nINTEGER1x7 = 0x1007f --01111111\nINTEGER2x4 = 0x2000f --00001111\nINTEGER4x4 = 0x4000f --00001111\nByteSize12 = 12\nByteSize16 = 16\n\nSYSEX_PRIO_INIT = 0\nSYSEX_PRIO_SET_DEFAULT = 10\nSYSEX_PRIO_MOD = 100\n\nlocal ADDR_SIZE = 4\nlocal DATA_SIZE = 4\nlocal SIZE_F7 = 1\nlocal SIZE_CHKSM = 1\nlocal ROLAND = 0x41\nlocal DEV_ID = 0x10\nlocal DEVICE_ID_INDEX = 3\nlocal MODEL_ID = { 0, 0, 0x64 }\nlocal RQ1 = 0x11\nlocal DT1 = 0x12\nlocal ROLAND_SYSEX = { 0xF0, 0x41, DEV_ID, MODEL_ID[1], MODEL_ID[2] , MODEL_ID[3] }\nlocal ROLAND_DT1 = { ROLAND_SYSEX[1], ROLAND_SYSEX[2], ROLAND_SYSEX[3], ROLAND_SYSEX[4], ROLAND_SYSEX[5], ROLAND_SYSEX[6], DT1 }\n\nNode = {}\n\nfunction Nibble(x)\n return (x & 0x7f000000) >> 3 |\n (x & 0x007f0000) >> 2 |\n (x & 0x00007f00) >> 1 |\n x & 0x0000007f\n\nend\n\nfunction Node:new(addr, desc, id, init, min, max, valueByteSizeType, opt, pos)\n local o = {}\n setmetatable(o, self)\n self.__index = self\n o.addr = Nibble(addr)\n o.desc = desc\n o.id = id\n o.init = init\n o.min = min\n o.max = max\n o.valueByteSizeType = valueByteSizeType\n o.opt = opt\n o.pos = pos\n o.value = nil\n return o\nend\n\nfunction Node:new_parent(addr, offset, desc, id, children)\n local o = {}\n setmetatable(o, self)\n self.__index = self\n o.addr = Nibble(addr)\n o.offset = offset\n o.desc = desc\n o.id = id\n o.children = children\n return o\nend\n\nfunction Node:tostring()\n return string.format(\"0x%02X \", self.addr) .. self.desc\nend\n\nfunction Denormalize100(min, max, v)\n return math.ceil(v * (max-min) / 100 + min)\nend\n\n\nfunction Node:setvalue(v)\n if self.children ~= nil then\n error(\"try to set a value to a branch node: \\\"\" .. self.desc .. \"\\\"\")\n end\n if type(v) == \"string\" then\n self.value = v\n return\n end\n if v < self.min or v > self.max then\n error(\"value out of bounds for: \\\"\" .. self.desc .. \"\\\" = \" .. tostring(v) .. \" (\" .. tostring(self.min) .. \", \" .. tostring(self.max) .. \")\")\n end\n self.value = v\nend\n\nfunction Node:setvalue100(v)\n self:setvalue(Denormalize100(self.min, self.max, v))\nend\n\nlocal STP =\n{\n Node:new(0x0000, \"Side 1 Sound Mode\", \"NESTP_SND_MODE_SD1\", 1, 1, 4, INTEGER1x3),\n Node:new(0x0001, \"Side 1 Live Set BS MSB (CC# 0)\", \"NESTP_LIV_BS_MSB_SD1\", 84, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"Side 1 Live Set BS LSB (CC# 32)\", \"NESTP_LIV_BS_LSB_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"Side 1 Live Set PC (PC)\", \"NESTP_LIV_PC_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0004, \"Side 1 Studio Set BS MSB (CC# 0)\", \"NESTP_PRF_BS_MSB_SD1\", 85, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"Side 1 Studio Set BS LSB (CC# 32)\", \"NESTP_PRF_BS_LSB_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0006, \"Side 1 Studio Set PC (PC)\", \"NESTP_PRF_PC_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0007, \"Side 1 Live Mode Level (CC# 7)\", \"NESTP_LIV_LEVEL_SD1\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"Side 1 Live Mode Pan (CC# 10)\", \"NESTP_LIV_PAN_SD1\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0009, \"Live Mode Octave Shift \", \"NESTP_LIV_OCT_SD1\", 64, 61, 67, INTEGER1x3),\n Node:new(0x000A, \"Live Mode Keyboard Range Lower \", \"NESTP_LIV_KRNG_L_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000B, \"Live Mode Keyboard Range Upper \", \"NESTP_LIV_KRNG_U_SD1\", 127, 0, 127, INTEGER1x7),\n Node:new(0x000C, \"Side 2 Sound Mode\", \"NESTP_SND_MODE_SD2\", 1, 1, 4, INTEGER1x3),\n Node:new(0x000D, \"Side 2 Live Set BS MSB (CC# 0)\", \"NESTP_LIV_BS_MSB_SD2\", 84, 0, 127, INTEGER1x7),\n Node:new(0x000E, \"Side 2 Live Set BS LSB (CC# 32)\", \"NESTP_LIV_BS_LSB_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000F, \"Side 2 Live Set PC (PC)\", \"NESTP_LIV_PC_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"Side 2 Studio Set BS MSB (CC# 0)\", \"NESTP_PRF_BS_MSB_SD2\", 85, 0, 127, INTEGER1x7),\n Node:new(0x0011, \"Side 2 Studio Set BS LSB (CC# 32)\", \"NESTP_PRF_BS_LSB_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Side 2 Studio Set PC (PC)\", \"NESTP_PRF_PC_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"Side 2 Live Mode Level (CC# 7)\", \"NESTP_LIV_LEVEL_SD2\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Side 2 Live Mode Pan (CC# 10)\", \"NESTP_LIV_PAN_SD2\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0015, \"Live Mode Octave Shift \", \"NESTP_LIV_OCT_SD2\", 64, 61, 67, INTEGER1x3),\n Node:new(0x0016, \"Live Mode Keyboard Range Lower \", \"NESTP_LIV_KRNG_L_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0017, \"Live Mode Keyboard Range Upper \", \"NESTP_LIV_KRNG_U_SD2\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"Side 3 Sound Mode\", \"NESTP_SND_MODE_SD3\", 1, 1, 4, INTEGER1x3),\n Node:new(0x0019, \"Side 3 Live Set BS MSB (CC# 0)\", \"NESTP_LIV_BS_MSB_SD3\", 84, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Side 3 Live Set BS LSB (CC# 32)\", \"NESTP_LIV_BS_LSB_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"Side 3 Live Set PC (PC)\", \"NESTP_LIV_PC_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001C, \"Side 3 Studio Set BS MSB (CC# 0)\", \"NESTP_PRF_BS_MSB_SD3\", 85, 0, 127, INTEGER1x7),\n Node:new(0x001D, \"Side 3 Studio Set BS LSB (CC# 32)\", \"NESTP_PRF_BS_LSB_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001E, \"Side 3 Studio Set PC (PC)\", \"NESTP_PRF_PC_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001F, \"Side 3 Live Mode Level (CC# 7)\", \"NESTP_LIV_LEVEL_SD3\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"Side 3 Live Mode Pan (CC# 10)\", \"NESTP_LIV_PAN_SD3\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0021, \"Live Mode Octave Shift \", \"NESTP_LIV_OCT_SD3\", 64, 61, 67, INTEGER1x3),\n Node:new(0x0022, \"Live Mode Keyboard Range Lower \", \"NESTP_LIV_KRNG_L_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0023, \"Live Mode Keyboard Range Upper \", \"NESTP_LIV_KRNG_U_SD3\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0024, \"Side 4 Sound Mode\", \"NESTP_SND_MODE_SD4\", 1, 1, 4, INTEGER1x3),\n Node:new(0x0025, \"Side 4 Live Set BS MSB (CC# 0)\", \"NESTP_LIV_BS_MSB_SD4\", 84, 0, 127, INTEGER1x7),\n Node:new(0x0026, \"Side 4 Live Set BS LSB (CC# 32)\", \"NESTP_LIV_BS_LSB_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0027, \"Side 4 Live Set PC (PC)\", \"NESTP_LIV_PC_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0028, \"Side 4 Studio Set BS MSB (CC# 0)\", \"NESTP_PRF_BS_MSB_SD4\", 85, 0, 127, INTEGER1x7),\n Node:new(0x0029, \"Side 4 Studio Set BS LSB (CC# 32)\", \"NESTP_PRF_BS_LSB_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x002A, \"Side 4 Studio Set PC (PC)\", \"NESTP_PRF_PC_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x002B, \"Side 4 Live Mode Level (CC# 7)\", \"NESTP_LIV_LEVEL_SD4\", 100, 0, 127, INTEGER1x7),\n Node:new(0x002C, \"Side 4 Live Mode Pan (CC# 10)\", \"NESTP_LIV_PAN_SD4\", 64, 0, 127, INTEGER1x7),\n Node:new(0x002D, \"Live Mode Octave Shift \", \"NESTP_LIV_OCT_SD4\", 64, 61, 67, INTEGER1x3),\n Node:new(0x002E, \"Live Mode Keyboard Range Lower \", \"NESTP_LIV_KRNG_L_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x002F, \"Live Mode Keyboard Range Upper \", \"NESTP_LIV_KRNG_U_SD4\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0030, \"MFX1 Switch\", \"NESTP_MFX1_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0031, \"MFX2 Switch\", \"NESTP_MFX2_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0032, \"MFX3 Switch\", \"NESTP_MFX3_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0033, \"MFX4 Switch\", \"NESTP_MFX4_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0034, \"Chorus Switch\", \"NESTP_CHO_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0035, \"Reverb Switch\", \"NESTP_REV_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0036, \"Input Effect Switch\", \"NESTP_IFX_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0037, \"GM Map\", \"NESTP_GM_MAP\", 0, 0, 1, INTEGER1x4),\n}\n\nlocal STP = -- Setup\n{\n Node:new(0x0000, \"Side 1 Sound Mode\", \"NESTP_SND_MODE_SD1\", 1, 1, 4, INTEGER1x3),\n Node:new(0x0001, \"Side 1 Live Set BS MSB (CC# 0)\", \"NESTP_LIV_BS_MSB_SD1\", 84, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"Side 1 Live Set BS LSB (CC# 32)\", \"NESTP_LIV_BS_LSB_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"Side 1 Live Set PC (PC)\", \"NESTP_LIV_PC_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0004, \"Side 1 Studio Set BS MSB (CC# 0)\", \"NESTP_PRF_BS_MSB_SD1\", 85, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"Side 1 Studio Set BS LSB (CC# 32)\", \"NESTP_PRF_BS_LSB_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0006, \"Side 1 Studio Set PC (PC)\", \"NESTP_PRF_PC_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0007, \"Side 1 Live Mode Level (CC# 7)\", \"NESTP_LIV_LEVEL_SD1\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"Side 1 Live Mode Pan (CC# 10)\", \"NESTP_LIV_PAN_SD1\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0009, \"Live Mode Octave Shift \", \"NESTP_LIV_OCT_SD1\", 64, 61, 67, INTEGER1x3),\n Node:new(0x000A, \"Live Mode Keyboard Range Lower \", \"NESTP_LIV_KRNG_L_SD1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000B, \"Live Mode Keyboard Range Upper \", \"NESTP_LIV_KRNG_U_SD1\", 127, 0, 127, INTEGER1x7),\n Node:new(0x000C, \"Side 2 Sound Mode\", \"NESTP_SND_MODE_SD2\", 1, 1, 4, INTEGER1x3),\n Node:new(0x000D, \"Side 2 Live Set BS MSB (CC# 0)\", \"NESTP_LIV_BS_MSB_SD2\", 84, 0, 127, INTEGER1x7),\n Node:new(0x000E, \"Side 2 Live Set BS LSB (CC# 32)\", \"NESTP_LIV_BS_LSB_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000F, \"Side 2 Live Set PC (PC)\", \"NESTP_LIV_PC_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"Side 2 Studio Set BS MSB (CC# 0)\", \"NESTP_PRF_BS_MSB_SD2\", 85, 0, 127, INTEGER1x7),\n Node:new(0x0011, \"Side 2 Studio Set BS LSB (CC# 32)\", \"NESTP_PRF_BS_LSB_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Side 2 Studio Set PC (PC)\", \"NESTP_PRF_PC_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"Side 2 Live Mode Level (CC# 7)\", \"NESTP_LIV_LEVEL_SD2\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Side 2 Live Mode Pan (CC# 10)\", \"NESTP_LIV_PAN_SD2\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0015, \"Live Mode Octave Shift \", \"NESTP_LIV_OCT_SD2\", 64, 61, 67, INTEGER1x3),\n Node:new(0x0016, \"Live Mode Keyboard Range Lower \", \"NESTP_LIV_KRNG_L_SD2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0017, \"Live Mode Keyboard Range Upper \", \"NESTP_LIV_KRNG_U_SD2\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"Side 3 Sound Mode\", \"NESTP_SND_MODE_SD3\", 1, 1, 4, INTEGER1x3),\n Node:new(0x0019, \"Side 3 Live Set BS MSB (CC# 0)\", \"NESTP_LIV_BS_MSB_SD3\", 84, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Side 3 Live Set BS LSB (CC# 32)\", \"NESTP_LIV_BS_LSB_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"Side 3 Live Set PC (PC)\", \"NESTP_LIV_PC_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001C, \"Side 3 Studio Set BS MSB (CC# 0)\", \"NESTP_PRF_BS_MSB_SD3\", 85, 0, 127, INTEGER1x7),\n Node:new(0x001D, \"Side 3 Studio Set BS LSB (CC# 32)\", \"NESTP_PRF_BS_LSB_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001E, \"Side 3 Studio Set PC (PC)\", \"NESTP_PRF_PC_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001F, \"Side 3 Live Mode Level (CC# 7)\", \"NESTP_LIV_LEVEL_SD3\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"Side 3 Live Mode Pan (CC# 10)\", \"NESTP_LIV_PAN_SD3\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0021, \"Live Mode Octave Shift \", \"NESTP_LIV_OCT_SD3\", 64, 61, 67, INTEGER1x3),\n Node:new(0x0022, \"Live Mode Keyboard Range Lower \", \"NESTP_LIV_KRNG_L_SD3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0023, \"Live Mode Keyboard Range Upper \", \"NESTP_LIV_KRNG_U_SD3\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0024, \"Side 4 Sound Mode\", \"NESTP_SND_MODE_SD4\", 1, 1, 4, INTEGER1x3),\n Node:new(0x0025, \"Side 4 Live Set BS MSB (CC# 0)\", \"NESTP_LIV_BS_MSB_SD4\", 84, 0, 127, INTEGER1x7),\n Node:new(0x0026, \"Side 4 Live Set BS LSB (CC# 32)\", \"NESTP_LIV_BS_LSB_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0027, \"Side 4 Live Set PC (PC)\", \"NESTP_LIV_PC_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0028, \"Side 4 Studio Set BS MSB (CC# 0)\", \"NESTP_PRF_BS_MSB_SD4\", 85, 0, 127, INTEGER1x7),\n Node:new(0x0029, \"Side 4 Studio Set BS LSB (CC# 32)\", \"NESTP_PRF_BS_LSB_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x002A, \"Side 4 Studio Set PC (PC)\", \"NESTP_PRF_PC_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x002B, \"Side 4 Live Mode Level (CC# 7)\", \"NESTP_LIV_LEVEL_SD4\", 100, 0, 127, INTEGER1x7),\n Node:new(0x002C, \"Side 4 Live Mode Pan (CC# 10)\", \"NESTP_LIV_PAN_SD4\", 64, 0, 127, INTEGER1x7),\n Node:new(0x002D, \"Live Mode Octave Shift \", \"NESTP_LIV_OCT_SD4\", 64, 61, 67, INTEGER1x3),\n Node:new(0x002E, \"Live Mode Keyboard Range Lower \", \"NESTP_LIV_KRNG_L_SD4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x002F, \"Live Mode Keyboard Range Upper \", \"NESTP_LIV_KRNG_U_SD4\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0030, \"MFX1 Switch\", \"NESTP_MFX1_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0031, \"MFX2 Switch\", \"NESTP_MFX2_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0032, \"MFX3 Switch\", \"NESTP_MFX3_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0033, \"MFX4 Switch\", \"NESTP_MFX4_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0034, \"Chorus Switch\", \"NESTP_CHO_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0035, \"Reverb Switch\", \"NESTP_REV_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0036, \"Input Effect Switch\", \"NESTP_IFX_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0037, \"GM Map\", \"NESTP_GM_MAP\", 0, 0, 1, INTEGER1x4),\n}\n\nlocal SC = -- System Common\n{\n Node:new(0x0000, \"Master Tune\", \"NESC_TUNE\", 1024, 24, 2024, INTEGER4x4),\n Node:new(0x0004, \"Master Key Shift\", \"NESC_KEY_SHIFT\", 64, 40, 88, INTEGER1x6),\n Node:new(0x0005, \"Master Level\", \"NESC_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0006, \"Scale Tune Switch\", \"NESC_SCALE_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0009, \"Live Set Main Channel\", \"NESC_LIV_MAIN_CH\", 0, 0, 15, INTEGER1x5),\n Node:new(0x000A, \"Live Set Sub 1 Channel\", \"NESC_LIV_SUB1_CH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x000B, \"Live Set Sub 2 Channel\", \"NESC_LIV_SUB2_CH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x000C, \"Live Set Sub 3 Channel\", \"NESC_LIV_SUB3_CH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x000D, \"Live Set Sub 4 Channel\", \"NESC_LIV_SUB4_CH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x000E, \"Live Set Sub 5 Channel\", \"NESC_LIV_SUB5_CH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x000F, \"Live Set Sub 6 Channel\", \"NESC_LIV_SUB6_CH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0010, \"Live Set Sub 7 Channel\", \"NESC_LIV_SUB7_CH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0011, \"Studio Set Control Channel\", \"NESC_PRF_CTRL_CH\", 15, 0, 16, INTEGER1x5),\n Node:new(0x0012, \"Live Set Scale Tune Type\", \"NESC_SCALE_TYPE\", 1, 0, 8, INTEGER1x7),\n Node:new(0x0013, \"Live Set Scale Tune Key\", \"NESC_SCALE_KEY\", 0, 0, 11, INTEGER1x7),\n Node:new(0x0014, \"Live Set Scale Tune for C\", \"NESC_TUNE_C\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0015, \"Live Set Scale Tune for C#\", \"NESC_TUNE_CS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0016, \"Live Set Scale Tune for D\", \"NESC_TUNE_D\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0017, \"Live Set Scale Tune for D#\", \"NESC_TUNE_DS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"Live Set Scale Tune for E\", \"NESC_TUNE_E\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"Live Set Scale Tune for F\", \"NESC_TUNE_F\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Live Set Scale Tune for F#\", \"NESC_TUNE_FS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"Live Set Scale Tune for G\", \"NESC_TUNE_G\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001C, \"Live Set Scale Tune for G#\", \"NESC_TUNE_GS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001D, \"Live Set Scale Tune for A\", \"NESC_TUNE_A\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001E, \"Live Set Scale Tune for A#\", \"NESC_TUNE_AS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001F, \"Live Set Scale Tune for B\", \"NESC_TUNE_B\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"System Control 1 Source\", \"NESC_CTRL1_SRC\", 0, 0, 97, INTEGER1x7),\n Node:new(0x0021, \"System Control 2 Source\", \"NESC_CTRL2_SRC\", 0, 0, 97, INTEGER1x7),\n Node:new(0x0022, \"System Control 3 Source\", \"NESC_CTRL3_SRC\", 0, 0, 97, INTEGER1x7),\n Node:new(0x0023, \"System Control 4 Source\", \"NESC_CTRL4_SRC\", 0, 0, 97, INTEGER1x7),\n Node:new(0x0024, \"Control Source\", \"NESC_CTRL_SRC\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0025, \"System Clock Source\", \"NESC_CLK_SRC\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0026, \"System Tempo\", \"NESC_TEMPO\", 120, 20, 250, INTEGER2x4),\n Node:new(0x0028, \"Tempo Override\", \"NESC_OR_TEMPO\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0029, \"Receive Program Change\", \"NESC_RX_PC\", 1, 0, 1, INTEGER1x1),\n Node:new(0x002A, \"Receive Bank Select\", \"NESC_RX_BS\", 1, 0, 1, INTEGER1x1),\n Node:new(0x002B, \"Center Speaker Switch\", \"NESC_RSS_CENTERSP_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002C, \"Subwoofer Switch\", \"NESC_RSS_WOOFER_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002D, \"Output Mode\", \"NESC_RSS_OUTMODE\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002E, \"USB Audio Sampling Rate\", \"NESC_USB_SAMP_RATE\", 0, 0, 2, INTEGER1x2),\n}\n\nlocal VF = -- Virtual MFX\n{\n Node:new(0x0000, \"MFX Type\", \"NEVF_MFX_TYPE\", 0, 0, 67, INTEGER1x7, \"mfx\"),\n Node:new(0x0001, \"MFX Dry Send Level\", \"NEVF_MFX_DRY_SEND\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"MFX Chorus Send Level\", \"NEVF_MFX_CHO_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"MFX Reverb Send Level\", \"NEVF_MFX_REV_SEND\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"MFX Control 1 Source\", \"NEVF_MFX_CTRL1_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0006, \"MFX Control 1 Sens\", \"NEVF_MFX_CTRL1_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0007, \"MFX Control 2 Source\", \"NEVF_MFX_CTRL2_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0008, \"MFX Control 2 Sens\", \"NEVF_MFX_CTRL2_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0009, \"MFX Control 3 Source\", \"NEVF_MFX_CTRL3_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000A, \"MFX Control 3 Sens\", \"NEVF_MFX_CTRL3_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000B, \"MFX Control 4 Source\", \"NEVF_MFX_CTRL4_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000C, \"MFX Control 4 Sens\", \"NEVF_MFX_CTRL4_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000D, \"MFX Control Assign 1\", \"NEVF_MFX_CTRL_ASGN1\", 0, 0, 16, INTEGER1x5, \"mfx\", 0),\n Node:new(0x000E, \"MFX Control Assign 2\", \"NEVF_MFX_CTRL_ASGN2\", 0, 0, 16, INTEGER1x5, \"mfx\", 1),\n Node:new(0x000F, \"MFX Control Assign 3\", \"NEVF_MFX_CTRL_ASGN3\", 0, 0, 16, INTEGER1x5, \"mfx\", 2),\n Node:new(0x0010, \"MFX Control Assign 4\", \"NEVF_MFX_CTRL_ASGN4\", 0, 0, 16, INTEGER1x5, \"mfx\", 3),\n Node:new(0x0011, \"MFX Parameter 1 \", \"NEVF_MFX_PRM1\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 4),\n Node:new(0x0015, \"MFX Parameter 2 \", \"NEVF_MFX_PRM2\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 5),\n Node:new(0x0019, \"MFX Parameter 3 \", \"NEVF_MFX_PRM3\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 6),\n Node:new(0x001D, \"MFX Parameter 4 \", \"NEVF_MFX_PRM4\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 7),\n Node:new(0x0021, \"MFX Parameter 5 \", \"NEVF_MFX_PRM5\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 8),\n Node:new(0x0025, \"MFX Parameter 6 \", \"NEVF_MFX_PRM6\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 9),\n Node:new(0x0029, \"MFX Parameter 7 \", \"NEVF_MFX_PRM7\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 10),\n Node:new(0x002D, \"MFX Parameter 8 \", \"NEVF_MFX_PRM8\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 11),\n Node:new(0x0031, \"MFX Parameter 9 \", \"NEVF_MFX_PRM9\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 12),\n Node:new(0x0035, \"MFX Parameter 10\", \"NEVF_MFX_PRM10\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 13),\n Node:new(0x0039, \"MFX Parameter 11\", \"NEVF_MFX_PRM11\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 14),\n Node:new(0x003D, \"MFX Parameter 12\", \"NEVF_MFX_PRM12\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 15),\n Node:new(0x0041, \"MFX Parameter 13\", \"NEVF_MFX_PRM13\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 16),\n Node:new(0x0045, \"MFX Parameter 14\", \"NEVF_MFX_PRM14\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 17),\n Node:new(0x0049, \"MFX Parameter 15\", \"NEVF_MFX_PRM15\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 18),\n Node:new(0x004D, \"MFX Parameter 16\", \"NEVF_MFX_PRM16\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 19),\n Node:new(0x0051, \"MFX Parameter 17\", \"NEVF_MFX_PRM17\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 20),\n Node:new(0x0055, \"MFX Parameter 18\", \"NEVF_MFX_PRM18\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 21),\n Node:new(0x0059, \"MFX Parameter 19\", \"NEVF_MFX_PRM19\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 22),\n Node:new(0x005D, \"MFX Parameter 20\", \"NEVF_MFX_PRM20\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 23),\n Node:new(0x0061, \"MFX Parameter 21\", \"NEVF_MFX_PRM21\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 24),\n Node:new(0x0065, \"MFX Parameter 22\", \"NEVF_MFX_PRM22\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 25),\n Node:new(0x0069, \"MFX Parameter 23\", \"NEVF_MFX_PRM23\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 26),\n Node:new(0x006D, \"MFX Parameter 24\", \"NEVF_MFX_PRM24\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 27),\n Node:new(0x0071, \"MFX Parameter 25\", \"NEVF_MFX_PRM25\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 28),\n Node:new(0x0075, \"MFX Parameter 26\", \"NEVF_MFX_PRM26\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 29),\n Node:new(0x0079, \"MFX Parameter 27\", \"NEVF_MFX_PRM27\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 30),\n Node:new(0x007D, \"MFX Parameter 28\", \"NEVF_MFX_PRM28\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 31),\n Node:new(0x0101, \"MFX Parameter 29\", \"NEVF_MFX_PRM29\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 32),\n Node:new(0x0105, \"MFX Parameter 30\", \"NEVF_MFX_PRM30\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 33),\n Node:new(0x0109, \"MFX Parameter 31\", \"NEVF_MFX_PRM31\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 34),\n Node:new(0x010D, \"MFX Parameter 32\", \"NEVF_MFX_PRM32\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 35),\n}\n\nlocal VP = -- Virtual Part\n{\n Node:new(0x0000, \"Tone Level\", \"NEVP_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0001, \"Tone Pan\", \"NEVP_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"TFX Switch\", \"NEVP_TFX_SW\", 0, 0, 1, INTEGER1x1),\n}\n\nlocal FC = -- Studio Set Common\n{\n Node:new(0x0000, \"Studio Set Name\", \"NEFC_NAME\", 0, 32, 127, ByteSize16),\n Node:new(0x0011, \"MFX1 Control Channel\", \"NEFC_MFX1_CTRL_CH\", 16, 0, 16, INTEGER1x6),\n Node:new(0x0012, \"MFX2 Control Channel\", \"NEFC_MFX2_CTRL_CH\", 16, 0, 16, INTEGER1x6),\n Node:new(0x0013, \"MFX3 Control Channel\", \"NEFC_MFX3_CTRL_CH\", 16, 0, 16, INTEGER1x6),\n Node:new(0x0014, \"MFX Control Src1\", \"NEFC_MFX_CTRL_SRC1\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0015, \"MFX Control Src2\", \"NEFC_MFX_CTRL_SRC2\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0016, \"MFX Control Src3\", \"NEFC_MFX_CTRL_SRC3\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0017, \"MFX Control Src4\", \"NEFC_MFX_CTRL_SRC4\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0018, \"Voice Reserve 1 \", \"NEFC_VOICE_RESERV1\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0019, \"Voice Reserve 2 \", \"NEFC_VOICE_RESERV2\", 0, 0, 64, INTEGER1x7),\n Node:new(0x001A, \"Voice Reserve 3 \", \"NEFC_VOICE_RESERV3\", 0, 0, 64, INTEGER1x7),\n Node:new(0x001B, \"Voice Reserve 4 \", \"NEFC_VOICE_RESERV4\", 0, 0, 64, INTEGER1x7),\n Node:new(0x001C, \"Voice Reserve 5 \", \"NEFC_VOICE_RESERV5\", 0, 0, 64, INTEGER1x7),\n Node:new(0x001D, \"Voice Reserve 6 \", \"NEFC_VOICE_RESERV6\", 0, 0, 64, INTEGER1x7),\n Node:new(0x001E, \"Voice Reserve 7 \", \"NEFC_VOICE_RESERV7\", 0, 0, 64, INTEGER1x7),\n Node:new(0x001F, \"Voice Reserve 8 \", \"NEFC_VOICE_RESERV8\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0020, \"Voice Reserve 9 \", \"NEFC_VOICE_RESERV9\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0021, \"Voice Reserve 10\", \"NEFC_VOICE_RESERV10\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0022, \"Voice Reserve 11\", \"NEFC_VOICE_RESERV11\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0023, \"Voice Reserve 12\", \"NEFC_VOICE_RESERV12\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0024, \"Voice Reserve 13\", \"NEFC_VOICE_RESERV13\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0025, \"Voice Reserve 14\", \"NEFC_VOICE_RESERV14\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0026, \"Voice Reserve 15\", \"NEFC_VOICE_RESERV15\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0027, \"Voice Reserve 16\", \"NEFC_VOICE_RESERV16\", 0, 0, 64, INTEGER1x7),\n Node:new(0x0038, \"MFX Structure\", \"NEFC_MFX_STRUCT\", 0, 0, 15, INTEGER1x4),\n Node:new(0x0039, \"Tone Control 1 Source\", \"NEFC_CTRL1_SRC\", 0, 0, 97, INTEGER1x7),\n Node:new(0x003A, \"Tone Control 2 Source\", \"NEFC_CTRL2_SRC\", 0, 0, 97, INTEGER1x7),\n Node:new(0x003B, \"Tone Control 3 Source\", \"NEFC_CTRL3_SRC\", 0, 0, 97, INTEGER1x7),\n Node:new(0x003C, \"Tone Control 4 Source\", \"NEFC_CTRL4_SRC\", 0, 0, 97, INTEGER1x7),\n Node:new(0x003D, \"Studio Set Tempo\", \"NEFC_OR_TEMPO\", 120, 20, 250, INTEGER2x4),\n Node:new(0x003F, \"Solo Part\", \"NEFC_SOLO_PART\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0040, \"Reverb Switch\", \"NEFC_REVERB_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0041, \"Chorus Switch\", \"NEFC_CHORUS_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0042, \"Mastering EQ Switch\", \"NEFC_MASTER_EQ_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0043, \"Drum Comp/EQ Switch\", \"NEFC_COMPEQ_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0044, \"Drum Comp/EQ Part\", \"NEFC_COMPEQ_PART\", 9, 0, 15, INTEGER1x4),\n Node:new(0x0045, \"Drum Comp/EQ 1 Output Assign\", \"NEFC_COMPEQ1_ASSIGN\", 0, 0, 12, INTEGER1x4),\n Node:new(0x0046, \"Drum Comp/EQ 2 Output Assign\", \"NEFC_COMPEQ2_ASSIGN\", 0, 0, 12, INTEGER1x4),\n Node:new(0x0047, \"Drum Comp/EQ 3 Output Assign\", \"NEFC_COMPEQ3_ASSIGN\", 0, 0, 12, INTEGER1x4),\n Node:new(0x0048, \"Drum Comp/EQ 4 Output Assign\", \"NEFC_COMPEQ4_ASSIGN\", 0, 0, 12, INTEGER1x4),\n Node:new(0x0049, \"Drum Comp/EQ 5 Output Assign\", \"NEFC_COMPEQ5_ASSIGN\", 0, 0, 12, INTEGER1x4),\n Node:new(0x004A, \"Drum Comp/EQ 6 Output Assign\", \"NEFC_COMPEQ6_ASSIGN\", 0, 0, 12, INTEGER1x4),\n Node:new(0x004B, \"Audio Input Source Select\", \"NEFC_IN_SRC_SELECT\", 0, 0, 1, INTEGER1x1),\n Node:new(0x004C, \"Audio Input Level\", \"NEFC_IN_LEVEL\", 100, 0, 127, INTEGER1x7),\n Node:new(0x004D, \"Audio Input Chorus Send Level\", \"NEFC_IN_CHO_SEND_LEVEL\", 0, 0, 127, INTEGER1x7),\n Node:new(0x004E, \"Audio Input Reverb Send Level\", \"NEFC_IN_REV_SEND_LEVEL\", 0, 0, 127, INTEGER1x7),\n Node:new(0x004F, \"Audio Input Mute Switch\", \"NEFC_IN_MUTE_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0050, \"Expansion Slot 1 RomID\", \"NEFC_EXP_SLOT1_ROMID\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0051, \"Expansion Slot 2 RomID\", \"NEFC_EXP_SLOT2_ROMID\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0052, \"Expansion Slot 3 RomID\", \"NEFC_EXP_SLOT3_ROMID\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0053, \"Expansion Slot 4 RomID\", \"NEFC_EXP_SLOT4_ROMID\", 0, 0, 127, INTEGER1x7),\n}\n\nlocal FH = -- Studio Set Common Chorus\n{\n Node:new(0x0000, \"Chorus Type\", \"NEFH_CHO_TYPE\", 1, 0, 3, INTEGER1x4, \"chorus\"),\n Node:new(0x0001, \"Chorus Level\", \"NEFH_CHO_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"Chorus Output Assign \", \"NEFH_CHO_OUT_ASGN\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0003, \"Chorus Output Select \", \"NEFH_CHO_OUT_SELECT\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0004, \"Chorus Parameter 1 \", \"NEFH_CHO_PRM1\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 0),\n Node:new(0x0008, \"Chorus Parameter 2 \", \"NEFH_CHO_PRM2\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 1),\n Node:new(0x000C, \"Chorus Parameter 3 \", \"NEFH_CHO_PRM3\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 2),\n Node:new(0x0010, \"Chorus Parameter 4 \", \"NEFH_CHO_PRM4\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 3),\n Node:new(0x0014, \"Chorus Parameter 5 \", \"NEFH_CHO_PRM5\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 4),\n Node:new(0x0018, \"Chorus Parameter 6 \", \"NEFH_CHO_PRM6\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 5),\n Node:new(0x001C, \"Chorus Parameter 7 \", \"NEFH_CHO_PRM7\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 6),\n Node:new(0x0020, \"Chorus Parameter 8 \", \"NEFH_CHO_PRM8\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 7),\n Node:new(0x0024, \"Chorus Parameter 9 \", \"NEFH_CHO_PRM9\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 8),\n Node:new(0x0028, \"Chorus Parameter 10\", \"NEFH_CHO_PRM10\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 9),\n Node:new(0x002C, \"Chorus Parameter 11\", \"NEFH_CHO_PRM11\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 10),\n Node:new(0x0030, \"Chorus Parameter 12\", \"NEFH_CHO_PRM12\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 11),\n Node:new(0x0034, \"Chorus Parameter 13\", \"NEFH_CHO_PRM13\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 12),\n Node:new(0x0038, \"Chorus Parameter 14\", \"NEFH_CHO_PRM14\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 13),\n Node:new(0x003C, \"Chorus Parameter 15\", \"NEFH_CHO_PRM15\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 14),\n Node:new(0x0040, \"Chorus Parameter 16\", \"NEFH_CHO_PRM16\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 15),\n Node:new(0x0044, \"Chorus Parameter 17\", \"NEFH_CHO_PRM17\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 16),\n Node:new(0x0048, \"Chorus Parameter 18\", \"NEFH_CHO_PRM18\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 17),\n Node:new(0x004C, \"Chorus Parameter 19\", \"NEFH_CHO_PRM19\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 18),\n Node:new(0x0050, \"Chorus Parameter 20\", \"NEFH_CHO_PRM20\", 32768, 12768, 52768, INTEGER4x4, \"chorus\", 19),\n}\n\nlocal FV = -- Studio Set Common Reverb\n{\n Node:new(0x0000, \"Reverb Type\", \"NEFV_REV_TYPE\", 1, 0, 6, INTEGER1x4, \"reverb\"),\n Node:new(0x0001, \"Reverb Level\", \"NEFV_REV_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"Reverb Output Assign\", \"NEFV_REV_OUT_ASGN\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0003, \"Reverb Parameter 1 \", \"NEFV_REV_PRM1\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 0),\n Node:new(0x0007, \"Reverb Parameter 2 \", \"NEFV_REV_PRM2\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 1),\n Node:new(0x000B, \"Reverb Parameter 3 \", \"NEFV_REV_PRM3\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 2),\n Node:new(0x000F, \"Reverb Parameter 4 \", \"NEFV_REV_PRM4\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 3),\n Node:new(0x0013, \"Reverb Parameter 5 \", \"NEFV_REV_PRM5\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 4),\n Node:new(0x0017, \"Reverb Parameter 6 \", \"NEFV_REV_PRM6\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 5),\n Node:new(0x001B, \"Reverb Parameter 7 \", \"NEFV_REV_PRM7\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 6),\n Node:new(0x001F, \"Reverb Parameter 8 \", \"NEFV_REV_PRM8\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 7),\n Node:new(0x0023, \"Reverb Parameter 9 \", \"NEFV_REV_PRM9\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 8),\n Node:new(0x0027, \"Reverb Parameter 10\", \"NEFV_REV_PRM10\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 9),\n Node:new(0x002B, \"Reverb Parameter 11\", \"NEFV_REV_PRM11\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 10),\n Node:new(0x002F, \"Reverb Parameter 12\", \"NEFV_REV_PRM12\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 11),\n Node:new(0x0033, \"Reverb Parameter 13\", \"NEFV_REV_PRM13\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 12),\n Node:new(0x0037, \"Reverb Parameter 14\", \"NEFV_REV_PRM14\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 13),\n Node:new(0x003B, \"Reverb Parameter 15\", \"NEFV_REV_PRM15\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 14),\n Node:new(0x003F, \"Reverb Parameter 16\", \"NEFV_REV_PRM16\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 15),\n Node:new(0x0043, \"Reverb Parameter 17\", \"NEFV_REV_PRM17\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 16),\n Node:new(0x0047, \"Reverb Parameter 18\", \"NEFV_REV_PRM18\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 17),\n Node:new(0x004B, \"Reverb Parameter 19\", \"NEFV_REV_PRM19\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 18),\n Node:new(0x004F, \"Reverb Parameter 20\", \"NEFV_REV_PRM20\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 19),\n Node:new(0x0053, \"Reverb Parameter 21\", \"NEFV_REV_PRM21\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 20),\n Node:new(0x0057, \"Reverb Parameter 22\", \"NEFV_REV_PRM22\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 21),\n Node:new(0x005B, \"Reverb Parameter 23\", \"NEFV_REV_PRM23\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 22),\n Node:new(0x005F, \"Reverb Parameter 24\", \"NEFV_REV_PRM24\", 32768, 12768, 52768, INTEGER4x4, \"reverb\", 23),\n}\n\nlocal FRSS = -- Studio Set Common RSS\n{\n Node:new(0x0000, \"Motional Surround Switch\", \"NEFRSS_RSS_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0001, \"Room Type\", \"NEFRSS_RSS_ROOM_TYPE\", 2, 0, 3, INTEGER1x2),\n Node:new(0x0002, \"Reverb Level\", \"NEFRSS_REV_LEVEL\", 80, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"Reverb Room Size\", \"NEFRSS_REV_ROOMSIZE\", 1, 0, 2, INTEGER1x7),\n Node:new(0x0004, \"Reverb Time\", \"NEFRSS_REV_TIME\", 40, 0, 100, INTEGER1x7),\n Node:new(0x0005, \"Reverb Density\", \"NEFRSS_REV_DENSITY\", 100, 0, 100, INTEGER1x7),\n Node:new(0x0006, \"Reverb HF Damp\", \"NEFRSS_REV_HFDUMP\", 50, 0, 100, INTEGER1x7),\n Node:new(0x0007, \"Ext Input X-Position\", \"NEFRSS_AUX_IN_XPOS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"Ext Input Y-Position\", \"NEFRSS_AUX_IN_YPOS\", 74, 0, 127, INTEGER1x7),\n Node:new(0x0009, \"Ext Input Width\", \"NEFRSS_AUX_IN_WIDTH\", 10, 0, 32, INTEGER1x6),\n Node:new(0x000A, \"Ext Input RevSend Level\", \"NEFRSS_AUX_IN_RVSEND\", 40, 0, 127, INTEGER1x7),\n Node:new(0x000B, \"Ext Input Control Channel\", \"NEFRSS_AUX_IN_CTRL_CH\", 15, 0, 16, INTEGER1x5),\n Node:new(0x000C, \"Cross Talk Cancel\", \"NEFRSS_SP4XTALKC\", 50, 0, 100, INTEGER1x7),\n}\n\nlocal FMEQ = -- Studio Set Mastering EQ\n{\n Node:new(0x0000, \"EQ Low Freq\", \"NEFMEQ_EQ_LOWFREQ\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0001, \"EQ Low Gain\", \"NEFMEQ_EQ_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0002, \"EQ Mid Freq\", \"NEFMEQ_EQ_MIDFREQ\", 7, 0, 16, INTEGER1x5),\n Node:new(0x0003, \"EQ Mid Gain\", \"NEFMEQ_EQ_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0004, \"EQ Mid Q\", \"NEFMEQ_EQ_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0005, \"EQ High Freq\", \"NEFMEQ_EQ_HIGHFREQ\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0006, \"EQ High Gain\", \"NEFMEQ_EQ_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n}\n\nlocal FM = -- Studio Set MIDI\n{\n Node:new(0x0000, \"Phase Lock\", \"NEFM_PHASE_LOCK\", 0, 0, 1, INTEGER1x1),\n}\n\nlocal FP = -- Studio Set Part\n{\n Node:new(0x0000, \"Receive Channel\", \"NEFP_RX_CH\", 0, 0, 15, INTEGER1x4),\n Node:new(0x0001, \"Part Switch\", \"NEFP_RX_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0002, \"Receive Src1\", \"NEFP_RX_SRC1\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0003, \"Receive Src2\", \"NEFP_RX_SRC2\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0004, \"Receive Src3\", \"NEFP_RX_SRC3\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0005, \"Receive Src4\", \"NEFP_RX_SRC4\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0006, \"Tone Bank Select MSB (CC# 0)\", \"NEFP_PAT_BS_MSB\", 89, 0, 127, INTEGER1x7),\n Node:new(0x0007, \"Tone Bank Select LSB (CC# 32)\", \"NEFP_PAT_BS_LSB\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"Tone Program Number (PC)\", \"NEFP_PAT_PC\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0009, \"Part Level (CC# 7)\", \"NEFP_LEVEL\", 100, 0, 127, INTEGER1x7),\n Node:new(0x000A, \"Part Pan (CC# 10)\", \"NEFP_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x000B, \"Part Coarse Tune (RPN# 2)\", \"NEFP_PIT_CRS\", 64, 16, 112, INTEGER1x7),\n Node:new(0x000C, \"Part Fine Tune (RPN# 1)\", \"NEFP_PIT_FINE\", 64, 14, 114, INTEGER1x7),\n Node:new(0x000D, \"Part Mono/Poly (MONO ON/POLY ON)\", \"NEFP_MONO_POLY\", 2, 0, 2, INTEGER1x2),\n Node:new(0x000E, \"Part Legato Switch (CC# 68)\", \"NEFP_LEGATO_SW\", 2, 0, 2, INTEGER1x2),\n Node:new(0x000F, \"Part Pitch Bend Range (RPN# 0)\", \"NEFP_BEND_RANGE\", 25, 0, 25, INTEGER1x5),\n Node:new(0x0010, \"Part Portamento Switch (CC# 65)\", \"NEFP_PORT_SW\", 2, 0, 2, INTEGER1x2),\n Node:new(0x0011, \"Part Portamento Time (CC# 5)\", \"NEFP_PORT_TIME\", 128, 0, 128, INTEGER2x4),\n Node:new(0x0013, \"Part Cutoff Offset (CC# 74)\", \"NEFP_CUTOFF_OFST\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Part Resonance Offset (CC# 71)\", \"NEFP_RESO_OFST\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0015, \"Part Attack Time Offset (CC# 73)\", \"NEFP_ATK_OFST\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0016, \"Part Decay Time Offset (CC# 75)\", \"NEFP_DCY_OFST\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0017, \"Part Release Time Offset (CC# 72)\", \"NEFP_REL_OFST\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"Part Vibrato Rate (CC# 76)\", \"NEFP_VIB_RATE\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"Part Vibrato Depth (CC# 77)\", \"NEFP_VIB_DEPTH\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Part Vibrato Delay (CC# 78)\", \"NEFP_VIB_DELAY\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"Part Octave Shift\", \"NEFP_OCTAVE\", 64, 61, 67, INTEGER1x3),\n Node:new(0x001C, \"Part Velocity Sens Offset\", \"NEFP_VSENS_OFST\", 64, 1, 127, INTEGER1x7),\n Node:new(0x001D, \"Keyboard Range Lower\", \"NEFP_KRANGE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001E, \"Keyboard Range Upper\", \"NEFP_KRANGE_UP\", 127, 0, 127, INTEGER1x7),\n Node:new(0x001F, \"Keyboard Fade Width Lower\", \"NEFP_KFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"Keyboard Fade Width Upper\", \"NEFP_KFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0021, \"Velocity Range Lower\", \"NEFP_VRANGE_LO\", 1, 1, 127, INTEGER1x7),\n Node:new(0x0022, \"Velocity Range Upper\", \"NEFP_VRANGE_UP\", 127, 1, 127, INTEGER1x7),\n Node:new(0x0023, \"Velocity Fade Width Lower\", \"NEFP_VFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0024, \"Velocity Fade Width Upper\", \"NEFP_VFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0025, \"Mute Switch\", \"NEFP_MUTE_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0026, \"Part Dry Send Level\", \"NEFP_DRY_SEND\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0027, \"Part Chorus Send Level (CC# 93)\", \"NEFP_CHO_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0028, \"Part Reverb Send Level (CC# 91)\", \"NEFP_REV_SEND\", 20, 0, 127, INTEGER1x7),\n Node:new(0x0029, \"Part Output Assign\", \"NEFP_OUT_ASGN\", 0, 0, 11, INTEGER1x4),\n Node:new(0x002B, \"Part Scale Tune Type\", \"NEFP_SCALE_TYPE\", 1, 0, 8, INTEGER1x7),\n Node:new(0x002C, \"Part Scale Tune Key\", \"NEFP_SCALE_KEY\", 0, 0, 11, INTEGER1x7),\n Node:new(0x002D, \"Part Scale Tune for C\", \"NEFP_TUNE_C\", 64, 0, 127, INTEGER1x7),\n Node:new(0x002E, \"Part Scale Tune for C#\", \"NEFP_TUNE_CS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x002F, \"Part Scale Tune for D\", \"NEFP_TUNE_D\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0030, \"Part Scale Tune for D#\", \"NEFP_TUNE_DS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0031, \"Part Scale Tune for E\", \"NEFP_TUNE_E\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0032, \"Part Scale Tune for F\", \"NEFP_TUNE_F\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0033, \"Part Scale Tune for F#\", \"NEFP_TUNE_FS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0034, \"Part Scale Tune for G\", \"NEFP_TUNE_G\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0035, \"Part Scale Tune for G#\", \"NEFP_TUNE_GS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0036, \"Part Scale Tune for A\", \"NEFP_TUNE_A\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0037, \"Part Scale Tune for A#\", \"NEFP_TUNE_AS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0038, \"Part Scale Tune for B\", \"NEFP_TUNE_B\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0039, \"Receive Program Change\", \"NEFP_RX_PC\", 1, 0, 1, INTEGER1x1),\n Node:new(0x003A, \"Receive Bank Select\", \"NEFP_RX_BS\", 1, 0, 1, INTEGER1x1),\n Node:new(0x003B, \"Receive Pitch Bend\", \"NEFP_RX_BEND\", 1, 0, 1, INTEGER1x1),\n Node:new(0x003C, \"Receive Polyphonic Key Pressure\", \"NEFP_RX_PAFT\", 1, 0, 1, INTEGER1x1),\n Node:new(0x003D, \"Receive Channel Pressure\", \"NEFP_RX_CAFT\", 1, 0, 1, INTEGER1x1),\n Node:new(0x003E, \"Receive Modulation\", \"NEFP_RX_MOD\", 1, 0, 1, INTEGER1x1),\n Node:new(0x003F, \"Receive Volume\", \"NEFP_RX_VOL\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0040, \"Receive Pan\", \"NEFP_RX_PAN\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0041, \"Receive Expression\", \"NEFP_RX_EXPR\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0042, \"Receive Hold-1\", \"NEFP_RX_HOLD\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0043, \"Velocity Curve Type\", \"NEFP_VELO_CRV_TYPE\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0044, \"Motional Surround X-Pos\", \"NEFP_RSS_X1POS\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0046, \"Motional Surround Y-Pos\", \"NEFP_RSS_Y1POS\", 74, 0, 127, INTEGER1x7),\n Node:new(0x0048, \"Motional Surround Width\", \"NEFP_RSS_WIDTH\", 10, 0, 32, INTEGER1x6),\n Node:new(0x0049, \"Motional Surround RevSend Level\", \"NEFP_RSS_RVSEND\", 40, 0, 127, INTEGER1x7),\n}\n\nlocal FPEQ = -- Studio Set Part EQ\n{\n Node:new(0x0000, \"EQ Switch\", \"NEFPEQ_EQ_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0001, \"EQ Low Freq\", \"NEFPEQ_EQ_LOWFREQ\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0002, \"EQ Low Gain\", \"NEFPEQ_EQ_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0003, \"EQ Mid Freq\", \"NEFPEQ_EQ_MIDFREQ\", 7, 0, 16, INTEGER1x5),\n Node:new(0x0004, \"EQ Mid Gain\", \"NEFPEQ_EQ_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0005, \"EQ Mid Q\", \"NEFPEQ_EQ_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0006, \"EQ High Freq\", \"NEFPEQ_EQ_HIGHFREQ\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0007, \"EQ High Gain\", \"NEFPEQ_EQ_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n}\n\nlocal PC = -- PCM Tone Common\n{\n Node:new(0x0000, \"PCM Tone Name\", \"RFPC_NAME\", 0, 32, 127, ByteSize12),\n Node:new(0x000E, \"PCM Tone Level\", \"RFPC_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x000F, \"PCM Tone Pan\", \"RFPC_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"PCM Tone Priority\", \"RFPC_PRIORITY\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0011, \"PCM Tone Coarse Tune\", \"RFPC_PIT_CRS\", 64, 16, 112, INTEGER1x7),\n Node:new(0x0012, \"PCM Tone Fine Tune\", \"RFPC_PIT_FINE\", 64, 14, 114, INTEGER1x7),\n Node:new(0x0013, \"Octave Shift\", \"RFPC_OCTAVE\", 64, 61, 67, INTEGER1x3),\n Node:new(0x0014, \"Stretch Tune Depth\", \"RFPC_STRETCH\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0015, \"Analog Feel\", \"RFPC_ANALOG_FEEL\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0016, \"Mono/Poly\", \"RFPC_MONO_POLY\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0017, \"Legato Switch\", \"RFPC_LEGATO_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0018, \"Legato Retrigger\", \"RFPC_LEGATO_RETRIG\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0019, \"Portamento Switch\", \"RFPC_PORT_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001A, \"Portamento Mode\", \"RFPC_PORT_MODE\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001B, \"Portamento Type\", \"RFPC_PORT_TYPE\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001C, \"Portamento Start\", \"RFPC_PORT_START\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001D, \"Portamento Time\", \"RFPC_PORT_TIME\", 20, 0, 127, INTEGER1x7),\n Node:new(0x0022, \"Cutoff Offset\", \"RFPC_CUTOFF_OFST\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0023, \"Resonance Offset\", \"RFPC_RESO_OFST\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0024, \"Attack Time Offset\", \"RFPC_ATK_OFST\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0025, \"Release Time Offset\", \"RFPC_REL_OFST\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0026, \"Velocity Sens Offset\", \"RFPC_VSENS_OFST\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0028, \"PMT Control Switch\", \"RFPC_TMT_CTRL_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0029, \"Pitch Bend Range Up\", \"RFPC_BEND_RANGE_UP\", 2, 0, 48, INTEGER1x6),\n Node:new(0x002A, \"Pitch Bend Range Down\", \"RFPC_BEND_RANGE_DW\", 2, 0, 48, INTEGER1x6),\n Node:new(0x002B, \"Matrix Control 1 Source\", \"RFPC_CTRL1_SRC\", 0, 0, 109, INTEGER1x7),\n Node:new(0x002C, \"Matrix Control 1 Destination 1\", \"RFPC_CTRL1_DST1\", 0, 0, 33, INTEGER1x6),\n Node:new(0x002D, \"Matrix Control 1 Sens 1\", \"RFPC_CTRL1_SENS1\", 64, 1, 127, INTEGER1x7),\n Node:new(0x002E, \"Matrix Control 1 Destination 2\", \"RFPC_CTRL1_DST2\", 0, 0, 33, INTEGER1x6),\n Node:new(0x002F, \"Matrix Control 1 Sens 2\", \"RFPC_CTRL1_SENS2\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0030, \"Matrix Control 1 Destination 3\", \"RFPC_CTRL1_DST3\", 0, 0, 33, INTEGER1x6),\n Node:new(0x0031, \"Matrix Control 1 Sens 3\", \"RFPC_CTRL1_SENS3\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0032, \"Matrix Control 1 Destination 4\", \"RFPC_CTRL1_DST4\", 0, 0, 33, INTEGER1x6),\n Node:new(0x0033, \"Matrix Control 1 Sens 4\", \"RFPC_CTRL1_SENS4\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0034, \"Matrix Control 2 Source\", \"RFPC_CTRL2_SRC\", 0, 0, 109, INTEGER1x7),\n Node:new(0x0035, \"Matrix Control 2 Destination 1\", \"RFPC_CTRL2_DST1\", 0, 0, 33, INTEGER1x6),\n Node:new(0x0036, \"Matrix Control 2 Sens 1\", \"RFPC_CTRL2_SENS1\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0037, \"Matrix Control 2 Destination 2\", \"RFPC_CTRL2_DST2\", 0, 0, 33, INTEGER1x6),\n Node:new(0x0038, \"Matrix Control 2 Sens 2\", \"RFPC_CTRL2_SENS2\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0039, \"Matrix Control 2 Destination 3\", \"RFPC_CTRL2_DST3\", 0, 0, 33, INTEGER1x6),\n Node:new(0x003A, \"Matrix Control 2 Sens 3\", \"RFPC_CTRL2_SENS3\", 64, 1, 127, INTEGER1x7),\n Node:new(0x003B, \"Matrix Control 2 Destination 4\", \"RFPC_CTRL2_DST4\", 0, 0, 33, INTEGER1x6),\n Node:new(0x003C, \"Matrix Control 2 Sens 4\", \"RFPC_CTRL2_SENS4\", 64, 1, 127, INTEGER1x7),\n Node:new(0x003D, \"Matrix Control 3 Source\", \"RFPC_CTRL3_SRC\", 0, 0, 109, INTEGER1x7),\n Node:new(0x003E, \"Matrix Control 3 Destination 1\", \"RFPC_CTRL3_DST1\", 0, 0, 33, INTEGER1x6),\n Node:new(0x003F, \"Matrix Control 3 Sens 1\", \"RFPC_CTRL3_SENS1\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0040, \"Matrix Control 3 Destination 2\", \"RFPC_CTRL3_DST2\", 0, 0, 33, INTEGER1x6),\n Node:new(0x0041, \"Matrix Control 3 Sens 2\", \"RFPC_CTRL3_SENS2\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0042, \"Matrix Control 3 Destination 3\", \"RFPC_CTRL3_DST3\", 0, 0, 33, INTEGER1x6),\n Node:new(0x0043, \"Matrix Control 3 Sens 3\", \"RFPC_CTRL3_SENS3\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0044, \"Matrix Control 3 Destination 4\", \"RFPC_CTRL3_DST4\", 0, 0, 33, INTEGER1x6),\n Node:new(0x0045, \"Matrix Control 3 Sens 4\", \"RFPC_CTRL3_SENS4\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0046, \"Matrix Control 4 Source\", \"RFPC_CTRL4_SRC\", 0, 0, 109, INTEGER1x7),\n Node:new(0x0047, \"Matrix Control 4 Destination 1\", \"RFPC_CTRL4_DST1\", 0, 0, 33, INTEGER1x6),\n Node:new(0x0048, \"Matrix Control 4 Sens 1\", \"RFPC_CTRL4_SENS1\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0049, \"Matrix Control 4 Destination 2\", \"RFPC_CTRL4_DST2\", 0, 0, 33, INTEGER1x6),\n Node:new(0x004A, \"Matrix Control 4 Sens 2\", \"RFPC_CTRL4_SENS2\", 64, 1, 127, INTEGER1x7),\n Node:new(0x004B, \"Matrix Control 4 Destination 3\", \"RFPC_CTRL4_DST3\", 0, 0, 33, INTEGER1x6),\n Node:new(0x004C, \"Matrix Control 4 Sens 3\", \"RFPC_CTRL4_SENS3\", 64, 1, 127, INTEGER1x7),\n Node:new(0x004D, \"Matrix Control 4 Destination 4\", \"RFPC_CTRL4_DST4\", 0, 0, 33, INTEGER1x6),\n Node:new(0x004E, \"Matrix Control 4 Sens 4\", \"RFPC_CTRL4_SENS4\", 64, 1, 127, INTEGER1x7),\n Node:new(0x004F, \"Part Modulation Switch\", \"RFPC_PART_MOD_SW\", 0, 0, 1, INTEGER1x1),\n}\n\nlocal PF = -- PCM Tone Common MFX\n{\n Node:new(0x0000, \"MFX Type\", \"RFPF_MFX_TYPE\", 0, 0, 67, INTEGER1x7, \"mfx\"),\n Node:new(0x0001, \"MFX Dry Send Level\", \"RFPF_MFX_DRY_SEND\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"MFX Chorus Send Level\", \"RFPF_MFX_CHO_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"MFX Reverb Send Level\", \"RFPF_MFX_REV_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"MFX Control 1 Source\", \"RFPF_MFX_CTRL1_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0006, \"MFX Control 1 Sens\", \"RFPF_MFX_CTRL1_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0007, \"MFX Control 2 Source\", \"RFPF_MFX_CTRL2_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0008, \"MFX Control 2 Sens\", \"RFPF_MFX_CTRL2_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0009, \"MFX Control 3 Source\", \"RFPF_MFX_CTRL3_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000A, \"MFX Control 3 Sens\", \"RFPF_MFX_CTRL3_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000B, \"MFX Control 4 Source\", \"RFPF_MFX_CTRL4_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000C, \"MFX Control 4 Sens\", \"RFPF_MFX_CTRL4_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000D, \"MFX Control Assign 1\", \"RFPF_MFX_CTRL_ASGN1\", 0, 0, 16, INTEGER1x5, \"mfx\", 0),\n Node:new(0x000E, \"MFX Control Assign 2\", \"RFPF_MFX_CTRL_ASGN2\", 0, 0, 16, INTEGER1x5, \"mfx\", 1),\n Node:new(0x000F, \"MFX Control Assign 3\", \"RFPF_MFX_CTRL_ASGN3\", 0, 0, 16, INTEGER1x5, \"mfx\", 2),\n Node:new(0x0010, \"MFX Control Assign 4\", \"RFPF_MFX_CTRL_ASGN4\", 0, 0, 16, INTEGER1x5, \"mfx\", 3),\n Node:new(0x0011, \"MFX Parameter 1 \", \"RFPF_MFX_PRM1\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 4),\n Node:new(0x0015, \"MFX Parameter 2 \", \"RFPF_MFX_PRM2\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 5),\n Node:new(0x0019, \"MFX Parameter 3 \", \"RFPF_MFX_PRM3\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 6),\n Node:new(0x001D, \"MFX Parameter 4 \", \"RFPF_MFX_PRM4\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 7),\n Node:new(0x0021, \"MFX Parameter 5 \", \"RFPF_MFX_PRM5\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 8),\n Node:new(0x0025, \"MFX Parameter 6 \", \"RFPF_MFX_PRM6\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 9),\n Node:new(0x0029, \"MFX Parameter 7 \", \"RFPF_MFX_PRM7\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 10),\n Node:new(0x002D, \"MFX Parameter 8 \", \"RFPF_MFX_PRM8\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 11),\n Node:new(0x0031, \"MFX Parameter 9 \", \"RFPF_MFX_PRM9\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 12),\n Node:new(0x0035, \"MFX Parameter 10\", \"RFPF_MFX_PRM10\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 13),\n Node:new(0x0039, \"MFX Parameter 11\", \"RFPF_MFX_PRM11\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 14),\n Node:new(0x003D, \"MFX Parameter 12\", \"RFPF_MFX_PRM12\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 15),\n Node:new(0x0041, \"MFX Parameter 13\", \"RFPF_MFX_PRM13\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 16),\n Node:new(0x0045, \"MFX Parameter 14\", \"RFPF_MFX_PRM14\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 17),\n Node:new(0x0049, \"MFX Parameter 15\", \"RFPF_MFX_PRM15\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 18),\n Node:new(0x004D, \"MFX Parameter 16\", \"RFPF_MFX_PRM16\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 19),\n Node:new(0x0051, \"MFX Parameter 17\", \"RFPF_MFX_PRM17\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 20),\n Node:new(0x0055, \"MFX Parameter 18\", \"RFPF_MFX_PRM18\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 21),\n Node:new(0x0059, \"MFX Parameter 19\", \"RFPF_MFX_PRM19\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 22),\n Node:new(0x005D, \"MFX Parameter 20\", \"RFPF_MFX_PRM20\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 23),\n Node:new(0x0061, \"MFX Parameter 21\", \"RFPF_MFX_PRM21\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 24),\n Node:new(0x0065, \"MFX Parameter 22\", \"RFPF_MFX_PRM22\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 25),\n Node:new(0x0069, \"MFX Parameter 23\", \"RFPF_MFX_PRM23\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 26),\n Node:new(0x006D, \"MFX Parameter 24\", \"RFPF_MFX_PRM24\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 27),\n Node:new(0x0071, \"MFX Parameter 25\", \"RFPF_MFX_PRM25\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 28),\n Node:new(0x0075, \"MFX Parameter 26\", \"RFPF_MFX_PRM26\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 29),\n Node:new(0x0079, \"MFX Parameter 27\", \"RFPF_MFX_PRM27\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 30),\n Node:new(0x007D, \"MFX Parameter 28\", \"RFPF_MFX_PRM28\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 31),\n Node:new(0x0101, \"MFX Parameter 29\", \"RFPF_MFX_PRM29\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 32),\n Node:new(0x0105, \"MFX Parameter 30\", \"RFPF_MFX_PRM30\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 33),\n Node:new(0x0109, \"MFX Parameter 31\", \"RFPF_MFX_PRM31\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 34),\n Node:new(0x010D, \"MFX Parameter 32\", \"RFPF_MFX_PRM32\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 35),\n}\n\nlocal PX = -- PCM Tone PMT (Partial Mix Table)\n{\n Node:new(0x0000, \"Structure Type 1 & 2\", \"RFPX_STRUCT1\", 0, 0, 9, INTEGER1x4),\n Node:new(0x0001, \"Booster 1 & 2\", \"RFPX_BOOST1\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0002, \"Structure Type 3 & 4\", \"RFPX_STRUCT3\", 0, 0, 9, INTEGER1x4),\n Node:new(0x0003, \"Booster 3 & 4\", \"RFPX_BOOST3\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0004, \"PMT Velocity Control\", \"RFPX_TMT_VELO_CTRL\", 1, 0, 3, INTEGER1x2),\n Node:new(0x0005, \"PMT1 Partial Switch\", \"RFPX_TMT1_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0006, \"PMT1 Keyboard Range Lower\", \"RFPX_TMT1_KRANGE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0007, \"PMT1 Keyboard Range Upper\", \"RFPX_TMT1_KRANGE_UP\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"PMT1 Keyboard Fade Width Lower\", \"RFPX_TMT1_KFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0009, \"PMT1 Keyboard Fade Width Upper\", \"RFPX_TMT1_KFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000A, \"PMT1 Velocity Range Lower\", \"RFPX_TMT1_VRANGE_LO\", 1, 1, 127, INTEGER1x7),\n Node:new(0x000B, \"PMT1 Velocity Range Upper\", \"RFPX_TMT1_VRANGE_UP\", 127, 1, 127, INTEGER1x7),\n Node:new(0x000C, \"PMT1 Velocity Fade Width Lower\", \"RFPX_TMT1_VFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000D, \"PMT1 Velocity Fade Width Upper\", \"RFPX_TMT1_VFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000E, \"PMT2 Partial Switch\", \"RFPX_TMT2_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x000F, \"PMT2 Keyboard Range Lower\", \"RFPX_TMT2_KRANGE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"PMT2 Keyboard Range Upper\", \"RFPX_TMT2_KRANGE_UP\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0011, \"PMT2 Keyboard Fade Width Lower\", \"RFPX_TMT2_KFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"PMT2 Keyboard Fade Width Upper\", \"RFPX_TMT2_KFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"PMT2 Velocity Range Lower\", \"RFPX_TMT2_VRANGE_LO\", 1, 1, 127, INTEGER1x7),\n Node:new(0x0014, \"PMT2 Velocity Range Upper\", \"RFPX_TMT2_VRANGE_UP\", 127, 1, 127, INTEGER1x7),\n Node:new(0x0015, \"PMT2 Velocity Fade Width Lower\", \"RFPX_TMT2_VFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0016, \"PMT2 Velocity Fade Width Upper\", \"RFPX_TMT2_VFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0017, \"PMT3 Partial Switch\", \"RFPX_TMT3_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0018, \"PMT3 Keyboard Range Lower\", \"RFPX_TMT3_KRANGE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"PMT3 Keyboard Range Upper\", \"RFPX_TMT3_KRANGE_UP\", 127, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"PMT3 Keyboard Fade Width Lower\", \"RFPX_TMT3_KFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"PMT3 Keyboard Fade Width Upper\", \"RFPX_TMT3_KFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001C, \"PMT3 Velocity Range Lower\", \"RFPX_TMT3_VRANGE_LO\", 1, 1, 127, INTEGER1x7),\n Node:new(0x001D, \"PMT3 Velocity Range Upper\", \"RFPX_TMT3_VRANGE_UP\", 127, 1, 127, INTEGER1x7),\n Node:new(0x001E, \"PMT3 Velocity Fade Width Lower\", \"RFPX_TMT3_VFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001F, \"PMT3 Velocity Fade Width Upper\", \"RFPX_TMT3_VFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"PMT4 Partial Switch\", \"RFPX_TMT4_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0021, \"PMT4 Keyboard Range Lower\", \"RFPX_TMT4_KRANGE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0022, \"PMT4 Keyboard Range Upper\", \"RFPX_TMT4_KRANGE_UP\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0023, \"PMT4 Keyboard Fade Width Lower\", \"RFPX_TMT4_KFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0024, \"PMT4 Keyboard Fade Width Upper\", \"RFPX_TMT4_KFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0025, \"PMT4 Velocity Range Lower\", \"RFPX_TMT4_VRANGE_LO\", 1, 1, 127, INTEGER1x7),\n Node:new(0x0026, \"PMT4 Velocity Range Upper\", \"RFPX_TMT4_VRANGE_UP\", 127, 1, 127, INTEGER1x7),\n Node:new(0x0027, \"PMT4 Velocity Fade Width Lower\", \"RFPX_TMT4_VFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0028, \"PMT4 Velocity Fade Width Upper\", \"RFPX_TMT4_VFADE_UP\", 0, 0, 127, INTEGER1x7),\n}\n\nlocal PT = -- PCM Tone Partial\n{\n Node:new(0x0000, \"Partial Level\", \"RFPT_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0001, \"Partial Coarse Tune\", \"RFPT_PIT_CRS\", 64, 16, 112, INTEGER1x7),\n Node:new(0x0002, \"Partial Fine Tune\", \"RFPT_PIT_FINE\", 64, 14, 114, INTEGER1x7),\n Node:new(0x0003, \"Partial Random Pitch Depth\", \"RFPT_PIT_RND\", 0, 0, 30, INTEGER1x5),\n Node:new(0x0004, \"Partial Pan\", \"RFPT_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"Partial Pan Keyfollow\", \"RFPT_PAN_KF\", 64, 54, 74, INTEGER1x5),\n Node:new(0x0006, \"Partial Random Pan Depth\", \"RFPT_PAN_RND\", 0, 0, 63, INTEGER1x6),\n Node:new(0x0007, \"Partial Alternate Pan Depth\", \"RFPT_PAN_ALT\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0008, \"Partial Env Mode\", \"RFPT_ENV_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0009, \"Partial Delay Mode\", \"RFPT_DELAY_MODE\", 0, 0, 3, INTEGER1x2),\n Node:new(0x000A, \"Partial Delay Time\", \"RFPT_DELAY_TIME\", 0, 0, 149, INTEGER2x4),\n Node:new(0x000C, \"Partial Dry Send Level\", \"RFPT_DRY_SEND\", 127, 0, 127, INTEGER1x7),\n Node:new(0x000F, \"Partial Chorus Send Level\", \"RFPT_CHO_SEND_A\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"Partial Reverb Send Level\", \"RFPT_REV_SEND_A\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Partial Receive Bender\", \"RFPT_RX_BEND\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0013, \"Partial Receive Expression\", \"RFPT_RX_EXPR\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0014, \"Partial Receive Hold-1\", \"RFPT_RX_HOLD\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0016, \"Partial Redamper Switch\", \"RFPT_REDAMP_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0017, \"Partial Control 1 Switch 1\", \"RFPT_CTRL1_SW1\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0018, \"Partial Control 1 Switch 2\", \"RFPT_CTRL1_SW2\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0019, \"Partial Control 1 Switch 3\", \"RFPT_CTRL1_SW3\", 1, 0, 2, INTEGER1x2),\n Node:new(0x001A, \"Partial Control 1 Switch 4\", \"RFPT_CTRL1_SW4\", 1, 0, 2, INTEGER1x2),\n Node:new(0x001B, \"Partial Control 2 Switch 1\", \"RFPT_CTRL2_SW1\", 1, 0, 2, INTEGER1x2),\n Node:new(0x001C, \"Partial Control 2 Switch 2\", \"RFPT_CTRL2_SW2\", 1, 0, 2, INTEGER1x2),\n Node:new(0x001D, \"Partial Control 2 Switch 3\", \"RFPT_CTRL2_SW3\", 1, 0, 2, INTEGER1x2),\n Node:new(0x001E, \"Partial Control 2 Switch 4\", \"RFPT_CTRL2_SW4\", 1, 0, 2, INTEGER1x2),\n Node:new(0x001F, \"Partial Control 3 Switch 1\", \"RFPT_CTRL3_SW1\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0020, \"Partial Control 3 Switch 2\", \"RFPT_CTRL3_SW2\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0021, \"Partial Control 3 Switch 3\", \"RFPT_CTRL3_SW3\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0022, \"Partial Control 3 Switch 4\", \"RFPT_CTRL3_SW4\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0023, \"Partial Control 4 Switch 1\", \"RFPT_CTRL4_SW1\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0024, \"Partial Control 4 Switch 2\", \"RFPT_CTRL4_SW2\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0025, \"Partial Control 4 Switch 3\", \"RFPT_CTRL4_SW3\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0026, \"Partial Control 4 Switch 4\", \"RFPT_CTRL4_SW4\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0027, \"Wave Group Type\", \"RFPT_WAV_GTYPE\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0028, \"Wave Group ID\", \"RFPT_WAV_GID\", 1, 0, 16384, INTEGER4x4),\n Node:new(0x002C, \"Wave Number L (Mono)\", \"RFPT_WAV_NUML\", 1, 0, 16384, INTEGER4x4),\n Node:new(0x0030, \"Wave Number R\", \"RFPT_WAV_NUMR\", 0, 0, 16384, INTEGER4x4),\n Node:new(0x0034, \"Wave Gain\", \"RFPT_WAV_GAIN\", 1, 0, 3, INTEGER1x2),\n Node:new(0x0035, \"Wave FXM Switch\", \"RFPT_FXM_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0036, \"Wave FXM Color\", \"RFPT_FXM_COLOR\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0037, \"Wave FXM Depth\", \"RFPT_FXM_DEPTH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0038, \"Wave Tempo Sync\", \"RFPT_TEMPO_SYNC\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0039, \"Wave Pitch Keyfollow\", \"RFPT_PIT_KF\", 74, 44, 84, INTEGER1x6),\n Node:new(0x003A, \"Pitch Env Depth\", \"RFPT_PENV_DEPTH\", 64, 52, 76, INTEGER1x5),\n Node:new(0x003B, \"Pitch Env Velocity Sens\", \"RFPT_PENV_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x003C, \"Pitch Env Time 1 Velocity Sens\", \"RFPT_PENV_T1_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x003D, \"Pitch Env Time 4 Velocity Sens\", \"RFPT_PENV_T4_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x003E, \"Pitch Env Time Keyfollow\", \"RFPT_PENV_TKF\", 64, 54, 74, INTEGER1x5),\n Node:new(0x003F, \"Pitch Env Time 1\", \"RFPT_PENV_T1\", 40, 0, 127, INTEGER1x7),\n Node:new(0x0040, \"Pitch Env Time 2\", \"RFPT_PENV_T2\", 80, 0, 127, INTEGER1x7),\n Node:new(0x0041, \"Pitch Env Time 3\", \"RFPT_PENV_T3\", 40, 0, 127, INTEGER1x7),\n Node:new(0x0042, \"Pitch Env Time 4\", \"RFPT_PENV_T4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0043, \"Pitch Env Level 0\", \"RFPT_PENV_L0\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0044, \"Pitch Env Level 1\", \"RFPT_PENV_L1\", 34, 1, 127, INTEGER1x7),\n Node:new(0x0045, \"Pitch Env Level 2\", \"RFPT_PENV_L2\", 94, 1, 127, INTEGER1x7),\n Node:new(0x0046, \"Pitch Env Level 3\", \"RFPT_PENV_L3\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0047, \"Pitch Env Level 4\", \"RFPT_PENV_L4\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0048, \"TVF Filter Type\", \"RFPT_FILTER_TYPE\", 1, 0, 6, INTEGER1x3),\n Node:new(0x0049, \"TVF Cutoff Frequency\", \"RFPT_CUTOFF\", 127, 0, 127, INTEGER1x7),\n Node:new(0x004A, \"TVF Cutoff Keyfollow\", \"RFPT_CUTOFF_KF\", 64, 44, 84, INTEGER1x6),\n Node:new(0x004B, \"TVF Cutoff Velocity Curve\", \"RFPT_CUTOFF_VCRV\", 1, 0, 7, INTEGER1x3),\n Node:new(0x004C, \"TVF Cutoff Velocity Sens\", \"RFPT_CUTOFF_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x004D, \"TVF Resonance\", \"RFPT_RESO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x004E, \"TVF Resonance Velocity Sens\", \"RFPT_RESO_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x004F, \"TVF Env Depth\", \"RFPT_FENV_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0050, \"TVF Env Velocity Curve\", \"RFPT_FENV_VCRV\", 1, 0, 7, INTEGER1x3),\n Node:new(0x0051, \"TVF Env Velocity Sens\", \"RFPT_FENV_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0052, \"TVF Env Time 1 Velocity Sens\", \"RFPT_FENV_T1_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0053, \"TVF Env Time 4 Velocity Sens\", \"RFPT_FENV_T4_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0054, \"TVF Env Time Keyfollow\", \"RFPT_FENV_TKF\", 64, 54, 74, INTEGER1x5),\n Node:new(0x0055, \"TVF Env Time 1\", \"RFPT_FENV_T1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0056, \"TVF Env Time 2\", \"RFPT_FENV_T2\", 10, 0, 127, INTEGER1x7),\n Node:new(0x0057, \"TVF Env Time 3\", \"RFPT_FENV_T3\", 10, 0, 127, INTEGER1x7),\n Node:new(0x0058, \"TVF Env Time 4\", \"RFPT_FENV_T4\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0059, \"TVF Env Level 0\", \"RFPT_FENV_L0\", 0, 0, 127, INTEGER1x7),\n Node:new(0x005A, \"TVF Env Level 1\", \"RFPT_FENV_L1\", 127, 0, 127, INTEGER1x7),\n Node:new(0x005B, \"TVF Env Level 2\", \"RFPT_FENV_L2\", 127, 0, 127, INTEGER1x7),\n Node:new(0x005C, \"TVF Env Level 3\", \"RFPT_FENV_L3\", 127, 0, 127, INTEGER1x7),\n Node:new(0x005D, \"TVF Env Level 4\", \"RFPT_FENV_L4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x005E, \"Bias Level\", \"RFPT_BIAS_LEVEL\", 64, 54, 74, INTEGER1x5),\n Node:new(0x005F, \"Bias Position\", \"RFPT_BIAS_POS\", 60, 0, 127, INTEGER1x7),\n Node:new(0x0060, \"Bias Direction\", \"RFPT_BIAS_DIR\", 3, 0, 3, INTEGER1x2),\n Node:new(0x0061, \"TVA Level Velocity Curve\", \"RFPT_LEVEL_VCRV\", 1, 0, 7, INTEGER1x3),\n Node:new(0x0062, \"TVA Level Velocity Sens\", \"RFPT_LEVEL_VSENS\", 96, 1, 127, INTEGER1x7),\n Node:new(0x0063, \"TVA Env Time 1 Velocity Sens\", \"RFPT_AENV_T1_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0064, \"TVA Env Time 4 Velocity Sens\", \"RFPT_AENV_T4_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0065, \"TVA Env Time Keyfollow\", \"RFPT_AENV_TKF\", 64, 54, 74, INTEGER1x5),\n Node:new(0x0066, \"TVA Env Time 1\", \"RFPT_AENV_T1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0067, \"TVA Env Time 2\", \"RFPT_AENV_T2\", 10, 0, 127, INTEGER1x7),\n Node:new(0x0068, \"TVA Env Time 3\", \"RFPT_AENV_T3\", 10, 0, 127, INTEGER1x7),\n Node:new(0x0069, \"TVA Env Time 4\", \"RFPT_AENV_T4\", 10, 0, 127, INTEGER1x7),\n Node:new(0x006A, \"TVA Env Level 1\", \"RFPT_AENV_L1\", 127, 0, 127, INTEGER1x7),\n Node:new(0x006B, \"TVA Env Level 2\", \"RFPT_AENV_L2\", 127, 0, 127, INTEGER1x7),\n Node:new(0x006C, \"TVA Env Level 3\", \"RFPT_AENV_L3\", 127, 0, 127, INTEGER1x7),\n Node:new(0x006D, \"LFO1 Waveform\", \"RFPT_LFO1_FORM\", 1, 0, 12, INTEGER1x4),\n Node:new(0x006E, \"LFO1 Rate\", \"RFPT_LFO1_RATE\", 92, 0, 149, INTEGER2x4),\n Node:new(0x0070, \"LFO1 Offset\", \"RFPT_LFO1_OFST\", 2, 0, 4, INTEGER1x3),\n Node:new(0x0071, \"LFO1 Rate Detune\", \"RFPT_LFO1_RATE_DETN\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0072, \"LFO1 Delay Time\", \"RFPT_LFO1_DELAY\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0073, \"LFO1 Delay Time Keyfollow\", \"RFPT_LFO1_DELAY_KF\", 64, 54, 74, INTEGER1x5),\n Node:new(0x0074, \"LFO1 Fade Mode\", \"RFPT_LFO1_FADE_MODE\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0075, \"LFO1 Fade Time\", \"RFPT_LFO1_FADE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0076, \"LFO1 Key Trigger\", \"RFPT_LFO1_KEY_TRIG\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0077, \"LFO1 Pitch Depth\", \"RFPT_LFO1_PIT_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0078, \"LFO1 TVF Depth\", \"RFPT_LFO1_TVF_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0079, \"LFO1 TVA Depth\", \"RFPT_LFO1_TVA_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x007A, \"LFO1 Pan Depth\", \"RFPT_LFO1_PAN_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x007B, \"LFO2 Waveform\", \"RFPT_LFO2_FORM\", 1, 0, 12, INTEGER1x4),\n Node:new(0x007C, \"LFO2 Rate\", \"RFPT_LFO2_RATE\", 92, 0, 149, INTEGER2x4),\n Node:new(0x007E, \"LFO2 Offset\", \"RFPT_LFO2_OFST\", 2, 0, 4, INTEGER1x3),\n Node:new(0x007F, \"LFO2 Rate Detune\", \"RFPT_LFO2_RATE_DETN\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0100, \"LFO2 Delay Time\", \"RFPT_LFO2_DELAY\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0101, \"LFO2 Delay Time Keyfollow\", \"RFPT_LFO2_DELAY_KF\", 64, 54, 74, INTEGER1x5),\n Node:new(0x0102, \"LFO2 Fade Mode\", \"RFPT_LFO2_FADE_MODE\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0103, \"LFO2 Fade Time\", \"RFPT_LFO2_FADE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0104, \"LFO2 Key Trigger\", \"RFPT_LFO2_KEY_TRIG\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0105, \"LFO2 Pitch Depth\", \"RFPT_LFO2_PIT_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0106, \"LFO2 TVF Depth\", \"RFPT_LFO2_TVF_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0107, \"LFO2 TVA Depth\", \"RFPT_LFO2_TVA_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0108, \"LFO2 Pan Depth\", \"RFPT_LFO2_PAN_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0109, \"LFO Step Type\", \"RFPT_LFO_STEP_TYPE\", 0, 0, 1, INTEGER1x4),\n Node:new(0x010A, \"LFO Step1\", \"RFPT_LFO_STEP1\", 64, 28, 100, INTEGER1x7),\n Node:new(0x010B, \"LFO Step2\", \"RFPT_LFO_STEP2\", 64, 28, 100, INTEGER1x7),\n Node:new(0x010C, \"LFO Step3\", \"RFPT_LFO_STEP3\", 64, 28, 100, INTEGER1x7),\n Node:new(0x010D, \"LFO Step4\", \"RFPT_LFO_STEP4\", 64, 28, 100, INTEGER1x7),\n Node:new(0x010E, \"LFO Step5\", \"RFPT_LFO_STEP5\", 64, 28, 100, INTEGER1x7),\n Node:new(0x010F, \"LFO Step6\", \"RFPT_LFO_STEP6\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0110, \"LFO Step7\", \"RFPT_LFO_STEP7\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0111, \"LFO Step8\", \"RFPT_LFO_STEP8\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0112, \"LFO Step9\", \"RFPT_LFO_STEP9\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0113, \"LFO Step10\", \"RFPT_LFO_STEP10\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0114, \"LFO Step11\", \"RFPT_LFO_STEP11\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0115, \"LFO Step12\", \"RFPT_LFO_STEP12\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0116, \"LFO Step13\", \"RFPT_LFO_STEP13\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0117, \"LFO Step14\", \"RFPT_LFO_STEP14\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0118, \"LFO Step15\", \"RFPT_LFO_STEP15\", 64, 28, 100, INTEGER1x7),\n Node:new(0x0119, \"LFO Step16\", \"RFPT_LFO_STEP16\", 64, 28, 100, INTEGER1x7),\n}\n\nlocal PLGT4 = -- PCM Tone Controller\n{\n Node:new(0x0000, \"Beam Switch\", \"RFPLGT4_BEAM_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0001, \"Beam Assign\", \"RFPLGT4_BEAM_ASGN\", 2, 0, 109, INTEGER1x7),\n Node:new(0x0002, \"Beam Polarity\", \"RFPLGT4_BEAM_POL\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0003, \"Beam Range Lower\", \"RFPLGT4_BEAM_RANGE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0004, \"Beam Range Upper\", \"RFPLGT4_BEAM_RANGE_UP\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"Knob 1 Assign\", \"RFPLGT4_KNOB1_ASGN\", 0, 0, 102, INTEGER1x7),\n Node:new(0x0006, \"Knob 2 Assign\", \"RFPLGT4_KNOB2_ASGN\", 0, 0, 102, INTEGER1x7),\n Node:new(0x0007, \"Knob 3 Assign\", \"RFPLGT4_KNOB3_ASGN\", 0, 0, 102, INTEGER1x7),\n Node:new(0x0008, \"Knob 4 Assign\", \"RFPLGT4_KNOB4_ASGN\", 0, 0, 102, INTEGER1x7),\n Node:new(0x0009, \"Switch 1 Assign\", \"RFPLGT4_SW1_ASGN\", 0, 0, 105, INTEGER1x7),\n Node:new(0x000A, \"Switch 1 Assign Mode\", \"RFPLGT4_SW1_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x000B, \"Switch 2 Assign\", \"RFPLGT4_SW2_ASGN\", 0, 0, 105, INTEGER1x7),\n Node:new(0x000C, \"Switch 2 Assign Mode\", \"RFPLGT4_SW2_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x000D, \"Switch 3 Assign\", \"RFPLGT4_SW3_ASGN\", 0, 0, 105, INTEGER1x7),\n Node:new(0x000E, \"Switch 3 Assign Mode\", \"RFPLGT4_SW3_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x000F, \"Switch 4 Assign\", \"RFPLGT4_SW4_ASGN\", 0, 0, 105, INTEGER1x7),\n Node:new(0x0010, \"Switch 4 Assign Mode\", \"RFPLGT4_SW4_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0011, \"Arpeggio Switch\", \"RFPLGT4_ARP_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0012, \"Arpeggio Hold\", \"RFPLGT4_ARP_HOLD\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0013, \"Arpeggio Style\", \"RFPLGT4_ARP_STYLE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Arpeggio Variation\", \"RFPLGT4_ARP_VARIAT\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0015, \"Arpeggio Motif\", \"RFPLGT4_ARP_MOTIF\", 0, 0, 9, INTEGER1x7),\n Node:new(0x0016, \"Arpeggio Accent Rate\", \"RFPLGT4_ARP_ACCT_RATE\", 100, 0, 100, INTEGER1x7),\n Node:new(0x0017, \"Arpeggio Shuffle Rate\", \"RFPLGT4_ARP_SHFL_RATE\", 50, 0, 100, INTEGER1x7),\n Node:new(0x0018, \"Arpeggio Shuffle Resolution\", \"RFPLGT4_ARP_SHFL_RESO\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0019, \"Arpeggio Keyboard Velocity\", \"RFPLGT4_ARP_VELO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Arpeggio Octave Range\", \"RFPLGT4_ARP_RANGE\", 64, 61, 67, INTEGER1x3),\n Node:new(0x001B, \"Arpeggio Key Trigger\", \"RFPLGT4_ARP_KEY_TRIG\", 0, 0, 1, INTEGER1x1),\n}\n\nlocal PC2 = -- PCM Tone Common 2\n{\n Node:new(0x0000, \"(reserve)\", \"RESERVE_DUMMY\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"Tone Category\", \"RFPC2_CATE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"Phrase Octave Shift\", \"RFPC2_PHRASE_OCT\", 64, 61, 67, INTEGER1x3),\n Node:new(0x0014, \"Keyword Flag 1 \", \"RFPC2_KEYWORD1\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0015, \"Keyword Flag 2 \", \"RFPC2_KEYWORD2\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0016, \"Keyword Flag 3 \", \"RFPC2_KEYWORD3\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0017, \"Keyword Flag 4 \", \"RFPC2_KEYWORD4\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0018, \"Keyword Flag 5 \", \"RFPC2_KEYWORD5\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0019, \"Keyword Flag 6 \", \"RFPC2_KEYWORD6\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001A, \"Keyword Flag 7 \", \"RFPC2_KEYWORD7\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001B, \"Keyword Flag 8 \", \"RFPC2_KEYWORD8\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001C, \"Keyword Flag 9 \", \"RFPC2_KEYWORD9\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001D, \"Keyword Flag 10\", \"RFPC2_KEYWORD10\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001E, \"Keyword Flag 11\", \"RFPC2_KEYWORD11\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001F, \"Keyword Flag 12\", \"RFPC2_KEYWORD12\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0020, \"Keyword Flag 13\", \"RFPC2_KEYWORD13\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0021, \"Keyword Flag 14\", \"RFPC2_KEYWORD14\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0022, \"Keyword Flag 15\", \"RFPC2_KEYWORD15\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0023, \"Keyword Flag 16\", \"RFPC2_KEYWORD16\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0024, \"Keyword Flag 17\", \"RFPC2_KEYWORD17\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0025, \"Keyword Flag 18\", \"RFPC2_KEYWORD18\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0026, \"Keyword Flag 19\", \"RFPC2_KEYWORD19\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0027, \"Keyword Flag 20\", \"RFPC2_KEYWORD20\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0028, \"Keyword Flag 21\", \"RFPC2_KEYWORD21\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0029, \"Keyword Flag 22\", \"RFPC2_KEYWORD22\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002A, \"Keyword Flag 23\", \"RFPC2_KEYWORD23\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002B, \"Keyword Flag 24\", \"RFPC2_KEYWORD24\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002C, \"Keyword Flag 25\", \"RFPC2_KEYWORD25\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002D, \"Keyword Flag 26\", \"RFPC2_KEYWORD26\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002E, \"Keyword Flag 27\", \"RFPC2_KEYWORD27\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002F, \"Keyword Flag 28\", \"RFPC2_KEYWORD28\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0030, \"Keyword Flag 29\", \"RFPC2_KEYWORD29\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0031, \"Keyword Flag 30\", \"RFPC2_KEYWORD30\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0032, \"Keyword Flag 31\", \"RFPC2_KEYWORD31\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0033, \"TFX Switch\", \"RFPC2_TFX_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0034, \"Meta 1 \", \"RFPC2_META1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0035, \"Meta 2 \", \"RFPC2_META2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0036, \"Meta 3 \", \"RFPC2_META3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0037, \"Meta 4 \", \"RFPC2_META4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0038, \"Phrase Number\", \"RFPC2_PHRASE\", 0, 0, 65535, INTEGER4x4),\n}\n\nlocal PTM = -- PCM Tone Modify\n{\n Node:new(0x0001, \"Modify Parameter 1 \", \"RFPTM_MOD_PRM1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"Modify Parameter 2 \", \"RFPTM_MOD_PRM2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"Modify Parameter 3 \", \"RFPTM_MOD_PRM3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0004, \"Modify Parameter 4 \", \"RFPTM_MOD_PRM4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"Modify Parameter 5 \", \"RFPTM_MOD_PRM5\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0006, \"Modify Parameter 6 \", \"RFPTM_MOD_PRM6\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0007, \"Modify Parameter 7 \", \"RFPTM_MOD_PRM7\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"Modify Parameter 8 \", \"RFPTM_MOD_PRM8\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0009, \"Modify Parameter 9 \", \"RFPTM_MOD_PRM9\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000A, \"Modify Parameter 10\", \"RFPTM_MOD_PRM10\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000B, \"Modify Parameter 11\", \"RFPTM_MOD_PRM11\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000C, \"Modify Parameter 12\", \"RFPTM_MOD_PRM12\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000D, \"Modify Parameter 13\", \"RFPTM_MOD_PRM13\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000E, \"Modify Parameter 14\", \"RFPTM_MOD_PRM14\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000F, \"Modify Parameter 15\", \"RFPTM_MOD_PRM15\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"Modify Parameter 16\", \"RFPTM_MOD_PRM16\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0011, \"Modify Parameter 17\", \"RFPTM_MOD_PRM17\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Modify Parameter 18\", \"RFPTM_MOD_PRM18\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"Modify Parameter 19\", \"RFPTM_MOD_PRM19\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Modify Parameter 20\", \"RFPTM_MOD_PRM20\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0015, \"Modify Parameter 21\", \"RFPTM_MOD_PRM21\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0016, \"Modify Parameter 22\", \"RFPTM_MOD_PRM22\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0017, \"Modify Parameter 23\", \"RFPTM_MOD_PRM23\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"Modify Parameter 24\", \"RFPTM_MOD_PRM24\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"Modify Parameter 25\", \"RFPTM_MOD_PRM25\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Modify Parameter 26\", \"RFPTM_MOD_PRM26\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"Modify Parameter 27\", \"RFPTM_MOD_PRM27\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001C, \"Modify Parameter 28\", \"RFPTM_MOD_PRM28\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001D, \"Modify Parameter 29\", \"RFPTM_MOD_PRM29\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001E, \"Modify Parameter 30\", \"RFPTM_MOD_PRM30\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001F, \"Modify Parameter 31\", \"RFPTM_MOD_PRM31\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"Modify Parameter 32\", \"RFPTM_MOD_PRM32\", 0, 0, 127, INTEGER1x7),\n}\n\nlocal RC = -- Rhythm Set Common\n{\n Node:new(0x0000, \"Rhythm Name\", \"RFRC_NAME\", 0, 32, 127, ByteSize12),\n Node:new(0x000C, \"Rhythm Level\", \"RFRC_LEVEL\", 127, 0, 127, INTEGER1x7),\n}\n\nlocal RF = -- Rhythm Set Common MFX\n{\n Node:new(0x0000, \"MFX Type\", \"RFRF_MFX_TYPE\", 0, 0, 67, INTEGER1x7, \"mfx\"),\n Node:new(0x0001, \"MFX Dry Send Level\", \"RFRF_MFX_DRY_SEND\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"MFX Chorus Send Level\", \"RFRF_MFX_CHO_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"MFX Reverb Send Level\", \"RFRF_MFX_REV_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"MFX Control 1 Source\", \"RFRF_MFX_CTRL1_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0006, \"MFX Control 1 Sens\", \"RFRF_MFX_CTRL1_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0007, \"MFX Control 2 Source\", \"RFRF_MFX_CTRL2_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0008, \"MFX Control 2 Sens\", \"RFRF_MFX_CTRL2_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0009, \"MFX Control 3 Source\", \"RFRF_MFX_CTRL3_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000A, \"MFX Control 3 Sens\", \"RFRF_MFX_CTRL3_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000B, \"MFX Control 4 Source\", \"RFRF_MFX_CTRL4_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000C, \"MFX Control 4 Sens\", \"RFRF_MFX_CTRL4_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000D, \"MFX Control Assign 1\", \"RFRF_MFX_CTRL_ASGN1\", 0, 0, 16, INTEGER1x5, \"mfx\", 0),\n Node:new(0x000E, \"MFX Control Assign 2\", \"RFRF_MFX_CTRL_ASGN2\", 0, 0, 16, INTEGER1x5, \"mfx\", 1),\n Node:new(0x000F, \"MFX Control Assign 3\", \"RFRF_MFX_CTRL_ASGN3\", 0, 0, 16, INTEGER1x5, \"mfx\", 2),\n Node:new(0x0010, \"MFX Control Assign 4\", \"RFRF_MFX_CTRL_ASGN4\", 0, 0, 16, INTEGER1x5, \"mfx\", 3),\n Node:new(0x0011, \"MFX Parameter 1 \", \"RFRF_MFX_PRM1\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 4),\n Node:new(0x0015, \"MFX Parameter 2 \", \"RFRF_MFX_PRM2\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 5),\n Node:new(0x0019, \"MFX Parameter 3 \", \"RFRF_MFX_PRM3\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 6),\n Node:new(0x001D, \"MFX Parameter 4 \", \"RFRF_MFX_PRM4\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 7),\n Node:new(0x0021, \"MFX Parameter 5 \", \"RFRF_MFX_PRM5\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 8),\n Node:new(0x0025, \"MFX Parameter 6 \", \"RFRF_MFX_PRM6\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 9),\n Node:new(0x0029, \"MFX Parameter 7 \", \"RFRF_MFX_PRM7\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 10),\n Node:new(0x002D, \"MFX Parameter 8 \", \"RFRF_MFX_PRM8\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 11),\n Node:new(0x0031, \"MFX Parameter 9 \", \"RFRF_MFX_PRM9\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 12),\n Node:new(0x0035, \"MFX Parameter 10\", \"RFRF_MFX_PRM10\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 13),\n Node:new(0x0039, \"MFX Parameter 11\", \"RFRF_MFX_PRM11\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 14),\n Node:new(0x003D, \"MFX Parameter 12\", \"RFRF_MFX_PRM12\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 15),\n Node:new(0x0041, \"MFX Parameter 13\", \"RFRF_MFX_PRM13\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 16),\n Node:new(0x0045, \"MFX Parameter 14\", \"RFRF_MFX_PRM14\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 17),\n Node:new(0x0049, \"MFX Parameter 15\", \"RFRF_MFX_PRM15\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 18),\n Node:new(0x004D, \"MFX Parameter 16\", \"RFRF_MFX_PRM16\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 19),\n Node:new(0x0051, \"MFX Parameter 17\", \"RFRF_MFX_PRM17\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 20),\n Node:new(0x0055, \"MFX Parameter 18\", \"RFRF_MFX_PRM18\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 21),\n Node:new(0x0059, \"MFX Parameter 19\", \"RFRF_MFX_PRM19\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 22),\n Node:new(0x005D, \"MFX Parameter 20\", \"RFRF_MFX_PRM20\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 23),\n Node:new(0x0061, \"MFX Parameter 21\", \"RFRF_MFX_PRM21\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 24),\n Node:new(0x0065, \"MFX Parameter 22\", \"RFRF_MFX_PRM22\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 25),\n Node:new(0x0069, \"MFX Parameter 23\", \"RFRF_MFX_PRM23\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 26),\n Node:new(0x006D, \"MFX Parameter 24\", \"RFRF_MFX_PRM24\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 27),\n Node:new(0x0071, \"MFX Parameter 25\", \"RFRF_MFX_PRM25\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 28),\n Node:new(0x0075, \"MFX Parameter 26\", \"RFRF_MFX_PRM26\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 29),\n Node:new(0x0079, \"MFX Parameter 27\", \"RFRF_MFX_PRM27\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 30),\n Node:new(0x007D, \"MFX Parameter 28\", \"RFRF_MFX_PRM28\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 31),\n Node:new(0x0101, \"MFX Parameter 29\", \"RFRF_MFX_PRM29\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 32),\n Node:new(0x0105, \"MFX Parameter 30\", \"RFRF_MFX_PRM30\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 33),\n Node:new(0x0109, \"MFX Parameter 31\", \"RFRF_MFX_PRM31\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 34),\n Node:new(0x010D, \"MFX Parameter 32\", \"RFRF_MFX_PRM32\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 35),\n}\n\nlocal RCQ = -- Rhythm Set Common Comp/EQ\n{\n Node:new(0x0000, \"Comp1 Switch\", \"RFRCQ_COMP1_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0001, \"Comp1 Attack Time\", \"RFRCQ_COMP1_ATTACK\", 9, 0, 31, INTEGER1x5),\n Node:new(0x0002, \"Comp1 Release Time\", \"RFRCQ_COMP1_RELEASE\", 9, 0, 23, INTEGER1x5),\n Node:new(0x0003, \"Comp1 Threshold\", \"RFRCQ_COMP1_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0004, \"Comp1 Ratio\", \"RFRCQ_COMP1_RATIO\", 3, 0, 19, INTEGER1x5),\n Node:new(0x0005, \"Comp1 Output Gain\", \"RFRCQ_COMP1_POSTGAIN\", 6, 0, 24, INTEGER1x5),\n Node:new(0x0006, \"EQ1 Switch\", \"RFRCQ_EQ1_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0007, \"EQ1 Low Freq\", \"RFRCQ_EQ1_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0008, \"EQ1 Low Gain\", \"RFRCQ_EQ1_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0009, \"EQ1 Mid Freq\", \"RFRCQ_EQ1_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x000A, \"EQ1 Mid Gain\", \"RFRCQ_EQ1_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x000B, \"EQ1 Mid Q\", \"RFRCQ_EQ1_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x000C, \"EQ1 High Freq\", \"RFRCQ_EQ1_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x000D, \"EQ1 High Gain\", \"RFRCQ_EQ1_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x000E, \"Comp2 Switch\", \"RFRCQ_COMP2_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x000F, \"Comp2 Attack Time\", \"RFRCQ_COMP2_ATTACK\", 9, 0, 31, INTEGER1x5),\n Node:new(0x0010, \"Comp2 Release Time\", \"RFRCQ_COMP2_RELEASE\", 9, 0, 23, INTEGER1x5),\n Node:new(0x0011, \"Comp2 Threshold\", \"RFRCQ_COMP2_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Comp2 Ratio\", \"RFRCQ_COMP2_RATIO\", 3, 0, 19, INTEGER1x5),\n Node:new(0x0013, \"Comp2 Output Gain\", \"RFRCQ_COMP2_POSTGAIN\", 6, 0, 24, INTEGER1x5),\n Node:new(0x0014, \"EQ2 Switch\", \"RFRCQ_EQ2_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0015, \"EQ2 Low Freq\", \"RFRCQ_EQ2_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0016, \"EQ2 Low Gain\", \"RFRCQ_EQ2_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0017, \"EQ2 Mid Freq\", \"RFRCQ_EQ2_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0018, \"EQ2 Mid Gain\", \"RFRCQ_EQ2_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0019, \"EQ2 Mid Q\", \"RFRCQ_EQ2_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x001A, \"EQ2 High Freq\", \"RFRCQ_EQ2_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x001B, \"EQ2 High Gain\", \"RFRCQ_EQ2_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x001C, \"Comp3 Switch\", \"RFRCQ_COMP3_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001D, \"Comp3 Attack Time\", \"RFRCQ_COMP3_ATTACK\", 9, 0, 31, INTEGER1x5),\n Node:new(0x001E, \"Comp3 Release Time\", \"RFRCQ_COMP3_RELEASE\", 9, 0, 23, INTEGER1x5),\n Node:new(0x001F, \"Comp3 Threshold\", \"RFRCQ_COMP3_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"Comp3 Ratio\", \"RFRCQ_COMP3_RATIO\", 3, 0, 19, INTEGER1x5),\n Node:new(0x0021, \"Comp3 Output Gain\", \"RFRCQ_COMP3_POSTGAIN\", 6, 0, 24, INTEGER1x5),\n Node:new(0x0022, \"EQ3 Switch\", \"RFRCQ_EQ3_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0023, \"EQ3 Low Freq\", \"RFRCQ_EQ3_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0024, \"EQ3 Low Gain\", \"RFRCQ_EQ3_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0025, \"EQ3 Mid Freq\", \"RFRCQ_EQ3_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0026, \"EQ3 Mid Gain\", \"RFRCQ_EQ3_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0027, \"EQ3 Mid Q\", \"RFRCQ_EQ3_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0028, \"EQ3 High Freq\", \"RFRCQ_EQ3_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0029, \"EQ3 High Gain\", \"RFRCQ_EQ3_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x002A, \"Comp4 Switch\", \"RFRCQ_COMP4_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002B, \"Comp4 Attack Time\", \"RFRCQ_COMP4_ATTACK\", 9, 0, 31, INTEGER1x5),\n Node:new(0x002C, \"Comp4 Release Time\", \"RFRCQ_COMP4_RELEASE\", 9, 0, 23, INTEGER1x5),\n Node:new(0x002D, \"Comp4 Threshold\", \"RFRCQ_COMP4_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x002E, \"Comp4 Ratio\", \"RFRCQ_COMP4_RATIO\", 3, 0, 19, INTEGER1x5),\n Node:new(0x002F, \"Comp4 Output Gain\", \"RFRCQ_COMP4_POSTGAIN\", 6, 0, 24, INTEGER1x5),\n Node:new(0x0030, \"EQ4 Switch\", \"RFRCQ_EQ4_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0031, \"EQ4 Low Freq\", \"RFRCQ_EQ4_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0032, \"EQ4 Low Gain\", \"RFRCQ_EQ4_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0033, \"EQ4 Mid Freq\", \"RFRCQ_EQ4_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0034, \"EQ4 Mid Gain\", \"RFRCQ_EQ4_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0035, \"EQ4 Mid Q\", \"RFRCQ_EQ4_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0036, \"EQ4 High Freq\", \"RFRCQ_EQ4_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0037, \"EQ4 High Gain\", \"RFRCQ_EQ4_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0038, \"Comp5 Switch\", \"RFRCQ_COMP5_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0039, \"Comp5 Attack Time\", \"RFRCQ_COMP5_ATTACK\", 9, 0, 31, INTEGER1x5),\n Node:new(0x003A, \"Comp5 Release Time\", \"RFRCQ_COMP5_RELEASE\", 9, 0, 23, INTEGER1x5),\n Node:new(0x003B, \"Comp5 Threshold\", \"RFRCQ_COMP5_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x003C, \"Comp5 Ratio\", \"RFRCQ_COMP5_RATIO\", 3, 0, 19, INTEGER1x5),\n Node:new(0x003D, \"Comp5 Output Gain\", \"RFRCQ_COMP5_POSTGAIN\", 6, 0, 24, INTEGER1x5),\n Node:new(0x003E, \"EQ5 Switch\", \"RFRCQ_EQ5_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x003F, \"EQ5 Low Freq\", \"RFRCQ_EQ5_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0040, \"EQ5 Low Gain\", \"RFRCQ_EQ5_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0041, \"EQ5 Mid Freq\", \"RFRCQ_EQ5_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0042, \"EQ5 Mid Gain\", \"RFRCQ_EQ5_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0043, \"EQ5 Mid Q\", \"RFRCQ_EQ5_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0044, \"EQ5 High Freq\", \"RFRCQ_EQ5_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0045, \"EQ5 High Gain\", \"RFRCQ_EQ5_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0046, \"Comp6 Switch\", \"RFRCQ_COMP6_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0047, \"Comp6 Attack Time\", \"RFRCQ_COMP6_ATTACK\", 9, 0, 31, INTEGER1x5),\n Node:new(0x0048, \"Comp6 Release Time\", \"RFRCQ_COMP6_RELEASE\", 9, 0, 23, INTEGER1x5),\n Node:new(0x0049, \"Comp6 Threshold\", \"RFRCQ_COMP6_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x004A, \"Comp6 Ratio\", \"RFRCQ_COMP6_RATIO\", 3, 0, 19, INTEGER1x5),\n Node:new(0x004B, \"Comp6 Output Gain\", \"RFRCQ_COMP6_POSTGAIN\", 6, 0, 24, INTEGER1x5),\n Node:new(0x004C, \"EQ6 Switch\", \"RFRCQ_EQ6_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x004D, \"EQ6 Low Freq\", \"RFRCQ_EQ6_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x004E, \"EQ6 Low Gain\", \"RFRCQ_EQ6_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x004F, \"EQ6 Mid Freq\", \"RFRCQ_EQ6_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0050, \"EQ6 Mid Gain\", \"RFRCQ_EQ6_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0051, \"EQ6 Mid Q\", \"RFRCQ_EQ6_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0052, \"EQ6 High Freq\", \"RFRCQ_EQ6_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0053, \"EQ6 High Gain\", \"RFRCQ_EQ6_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n}\n\nlocal RT = -- Rhythm Set Partial\n{\n Node:new(0x0000, \"Partial Name\", \"RFRT_NAME\", 0, 32, 127, ByteSize12),\n Node:new(0x000C, \"Assign Type\", \"RFRT_ASGN_TYPE\", 0, 0, 1, INTEGER1x1),\n Node:new(0x000D, \"Mute Group\", \"RFRT_MUTE_GRP\", 0, 0, 31, INTEGER1x5),\n Node:new(0x000E, \"Partial Level\", \"RFRT_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x000F, \"Partial Coarse Tune\", \"RFRT_SRC_KEY\", 60, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"Partial Fine Tune\", \"RFRT_PIT_FINE\", 64, 14, 114, INTEGER1x7),\n Node:new(0x0011, \"Partial Random Pitch Depth\", \"RFRT_PIT_RND\", 0, 0, 30, INTEGER1x5),\n Node:new(0x0012, \"Partial Pan\", \"RFRT_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"Partial Random Pan Depth\", \"RFRT_PAN_RND\", 0, 0, 63, INTEGER1x6),\n Node:new(0x0014, \"Partial Alternate Pan Depth\", \"RFRT_PAN_ALT\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0015, \"Partial Env Mode\", \"RFRT_ENV_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0016, \"Partial Dry Send Level\", \"RFRT_DRY_SEND\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"Partial Chorus Send Level\", \"RFRT_CHO_SEND_A\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Partial Reverb Send Level\", \"RFRT_REV_SEND_A\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"Partial Output Assign\", \"RFRT_OUT_ASGN\", 0, 0, 6, INTEGER1x4),\n Node:new(0x001C, \"Partial Pitch Bend Range\", \"RFRT_BEND_RANGE\", 2, 0, 48, INTEGER1x6),\n Node:new(0x001D, \"Partial Receive Expression\", \"RFRT_RX_EXPR\", 1, 0, 1, INTEGER1x1),\n Node:new(0x001E, \"Partial Receive Hold-1\", \"RFRT_RX_HOLD\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0020, \"WMT Velocity Control\", \"RFRT_WMT_VELO_CTRL\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0021, \"WMT1 Wave Switch\", \"RFRT_WMT1_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0022, \"WMT1 Wave Group Type\", \"RFRT_WMT1_WAV_GTYPE\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0023, \"WMT1 Wave Group ID\", \"RFRT_WMT1_WAV_GID\", 1, 0, 16384, INTEGER4x4),\n Node:new(0x0027, \"WMT1 Wave Number L (Mono)\", \"RFRT_WMT1_WAV_NUML\", 0, 0, 16384, INTEGER4x4),\n Node:new(0x002B, \"WMT1 Wave Number R\", \"RFRT_WMT1_WAV_NUMR\", 0, 0, 16384, INTEGER4x4),\n Node:new(0x002F, \"WMT1 Wave Gain\", \"RFRT_WMT1_WAV_GAIN\", 1, 0, 3, INTEGER1x2),\n Node:new(0x0030, \"WMT1 Wave FXM Switch\", \"RFRT_WMT1_FXM_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0031, \"WMT1 Wave FXM Color\", \"RFRT_WMT1_FXM_COLOR\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0032, \"WMT1 Wave FXM Depth\", \"RFRT_WMT1_FXM_DEPTH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0033, \"WMT1 Wave Tempo Sync\", \"RFRT_WMT1_TEMPO_SYNC\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0034, \"WMT1 Wave Coarse Tune\", \"RFRT_WMT1_PIT_CRS\", 64, 16, 112, INTEGER1x7),\n Node:new(0x0035, \"WMT1 Wave Fine Tune\", \"RFRT_WMT1_PIT_FINE\", 64, 14, 114, INTEGER1x7),\n Node:new(0x0036, \"WMT1 Wave Pan\", \"RFRT_WMT1_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0037, \"WMT1 Wave Random Pan Switch\", \"RFRT_WMT1_PAN_RND\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0038, \"WMT1 Wave Alternate Pan Switch\", \"RFRT_WMT1_PAN_ALT\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0039, \"WMT1 Wave Level\", \"RFRT_WMT1_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x003A, \"WMT1 Velocity Range Lower\", \"RFRT_WMT1_VRANGE_LO\", 1, 1, 127, INTEGER1x7),\n Node:new(0x003B, \"WMT1 Velocity Range Upper\", \"RFRT_WMT1_VRANGE_UP\", 127, 1, 127, INTEGER1x7),\n Node:new(0x003C, \"WMT1 Velocity Fade Width Lower\", \"RFRT_WMT1_VFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x003D, \"WMT1 Velocity Fade Width Upper\", \"RFRT_WMT1_VFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x003E, \"WMT2 Wave Switch\", \"RFRT_WMT2_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x003F, \"WMT2 Wave Group Type\", \"RFRT_WMT2_WAV_GTYPE\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0040, \"WMT2 Wave Group ID\", \"RFRT_WMT2_WAV_GID\", 1, 0, 16384, INTEGER4x4),\n Node:new(0x0044, \"WMT2 Wave Number L (Mono)\", \"RFRT_WMT2_WAV_NUML\", 0, 0, 16384, INTEGER4x4),\n Node:new(0x0048, \"WMT2 Wave Number R\", \"RFRT_WMT2_WAV_NUMR\", 0, 0, 16384, INTEGER4x4),\n Node:new(0x004C, \"WMT2 Wave Gain\", \"RFRT_WMT2_WAV_GAIN\", 1, 0, 3, INTEGER1x2),\n Node:new(0x004D, \"WMT2 Wave FXM Switch\", \"RFRT_WMT2_FXM_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x004E, \"WMT2 Wave FXM Color\", \"RFRT_WMT2_FXM_COLOR\", 0, 0, 3, INTEGER1x2),\n Node:new(0x004F, \"WMT2 Wave FXM Depth\", \"RFRT_WMT2_FXM_DEPTH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0050, \"WMT2 Wave Tempo Sync\", \"RFRT_WMT2_TEMPO_SYNC\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0051, \"WMT2 Wave Coarse Tune\", \"RFRT_WMT2_PIT_CRS\", 64, 16, 112, INTEGER1x7),\n Node:new(0x0052, \"WMT2 Wave Fine Tune\", \"RFRT_WMT2_PIT_FINE\", 64, 14, 114, INTEGER1x7),\n Node:new(0x0053, \"WMT2 Wave Pan\", \"RFRT_WMT2_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0054, \"WMT2 Wave Random Pan Switch\", \"RFRT_WMT2_PAN_RND\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0055, \"WMT2 Wave Alternate Pan Switch\", \"RFRT_WMT2_PAN_ALT\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0056, \"WMT2 Wave Level\", \"RFRT_WMT2_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0057, \"WMT2 Velocity Range Lower\", \"RFRT_WMT2_VRANGE_LO\", 1, 1, 127, INTEGER1x7),\n Node:new(0x0058, \"WMT2 Velocity Range Upper\", \"RFRT_WMT2_VRANGE_UP\", 127, 1, 127, INTEGER1x7),\n Node:new(0x0059, \"WMT2 Velocity Fade Width Lower\", \"RFRT_WMT2_VFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x005A, \"WMT2 Velocity Fade Width Upper\", \"RFRT_WMT2_VFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x005B, \"WMT3 Wave Switch\", \"RFRT_WMT3_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x005C, \"WMT3 Wave Group Type\", \"RFRT_WMT3_WAV_GTYPE\", 0, 0, 3, INTEGER1x2),\n Node:new(0x005D, \"WMT3 Wave Group ID\", \"RFRT_WMT3_WAV_GID\", 1, 0, 16384, INTEGER4x4),\n Node:new(0x0061, \"WMT3 Wave Number L (Mono)\", \"RFRT_WMT3_WAV_NUML\", 0, 0, 16384, INTEGER4x4),\n Node:new(0x0065, \"WMT3 Wave Number R\", \"RFRT_WMT3_WAV_NUMR\", 0, 0, 16384, INTEGER4x4),\n Node:new(0x0069, \"WMT3 Wave Gain\", \"RFRT_WMT3_WAV_GAIN\", 1, 0, 3, INTEGER1x2),\n Node:new(0x006A, \"WMT3 Wave FXM Switch\", \"RFRT_WMT3_FXM_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x006B, \"WMT3 Wave FXM Color\", \"RFRT_WMT3_FXM_COLOR\", 0, 0, 3, INTEGER1x2),\n Node:new(0x006C, \"WMT3 Wave FXM Depth\", \"RFRT_WMT3_FXM_DEPTH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x006D, \"WMT3 Wave Tempo Sync\", \"RFRT_WMT3_TEMPO_SYNC\", 0, 0, 1, INTEGER1x1),\n Node:new(0x006E, \"WMT3 Wave Coarse Tune\", \"RFRT_WMT3_PIT_CRS\", 64, 16, 112, INTEGER1x7),\n Node:new(0x006F, \"WMT3 Wave Fine Tune\", \"RFRT_WMT3_PIT_FINE\", 64, 14, 114, INTEGER1x7),\n Node:new(0x0070, \"WMT3 Wave Pan\", \"RFRT_WMT3_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0071, \"WMT3 Wave Random Pan Switch\", \"RFRT_WMT3_PAN_RND\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0072, \"WMT3 Wave Alternate Pan Switch\", \"RFRT_WMT3_PAN_ALT\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0073, \"WMT3 Wave Level\", \"RFRT_WMT3_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0074, \"WMT3 Velocity Range Lower\", \"RFRT_WMT3_VRANGE_LO\", 1, 1, 127, INTEGER1x7),\n Node:new(0x0075, \"WMT3 Velocity Range Upper\", \"RFRT_WMT3_VRANGE_UP\", 127, 1, 127, INTEGER1x7),\n Node:new(0x0076, \"WMT3 Velocity Fade Width Lower\", \"RFRT_WMT3_VFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0077, \"WMT3 Velocity Fade Width Upper\", \"RFRT_WMT3_VFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0078, \"WMT4 Wave Switch\", \"RFRT_WMT4_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0079, \"WMT4 Wave Group Type\", \"RFRT_WMT4_WAV_GTYPE\", 0, 0, 3, INTEGER1x2),\n Node:new(0x007A, \"WMT4 Wave Group ID\", \"RFRT_WMT4_WAV_GID\", 1, 0, 16384, INTEGER4x4),\n Node:new(0x007E, \"WMT4 Wave Number L (Mono)\", \"RFRT_WMT4_WAV_NUML\", 0, 0, 16384, INTEGER4x4),\n Node:new(0x0102, \"WMT4 Wave Number R\", \"RFRT_WMT4_WAV_NUMR\", 0, 0, 16384, INTEGER4x4),\n Node:new(0x0106, \"WMT4 Wave Gain\", \"RFRT_WMT4_WAV_GAIN\", 1, 0, 3, INTEGER1x2),\n Node:new(0x0107, \"WMT4 Wave FXM Switch\", \"RFRT_WMT4_FXM_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0108, \"WMT4 Wave FXM Color\", \"RFRT_WMT4_FXM_COLOR\", 0, 0, 3, INTEGER1x2),\n Node:new(0x0109, \"WMT4 Wave FXM Depth\", \"RFRT_WMT4_FXM_DEPTH\", 0, 0, 16, INTEGER1x5),\n Node:new(0x010A, \"WMT4 Wave Tempo Sync\", \"RFRT_WMT4_TEMPO_SYNC\", 0, 0, 1, INTEGER1x1),\n Node:new(0x010B, \"WMT4 Wave Coarse Tune\", \"RFRT_WMT4_PIT_CRS\", 64, 16, 112, INTEGER1x7),\n Node:new(0x010C, \"WMT4 Wave Fine Tune\", \"RFRT_WMT4_PIT_FINE\", 64, 14, 114, INTEGER1x7),\n Node:new(0x010D, \"WMT4 Wave Pan\", \"RFRT_WMT4_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x010E, \"WMT4 Wave Random Pan Switch\", \"RFRT_WMT4_PAN_RND\", 1, 0, 1, INTEGER1x1),\n Node:new(0x010F, \"WMT4 Wave Alternate Pan Switch\", \"RFRT_WMT4_PAN_ALT\", 1, 0, 2, INTEGER1x2),\n Node:new(0x0110, \"WMT4 Wave Level\", \"RFRT_WMT4_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0111, \"WMT4 Velocity Range Lower\", \"RFRT_WMT4_VRANGE_LO\", 1, 1, 127, INTEGER1x7),\n Node:new(0x0112, \"WMT4 Velocity Range Upper\", \"RFRT_WMT4_VRANGE_UP\", 127, 1, 127, INTEGER1x7),\n Node:new(0x0113, \"WMT4 Velocity Fade Width Lower\", \"RFRT_WMT4_VFADE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0114, \"WMT4 Velocity Fade Width Upper\", \"RFRT_WMT4_VFADE_UP\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0115, \"Pitch Env Depth\", \"RFRT_PENV_DEPTH\", 64, 52, 76, INTEGER1x5),\n Node:new(0x0116, \"Pitch Env Velocity Sens\", \"RFRT_PENV_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0117, \"Pitch Env Time 1 Velocity Sens\", \"RFRT_PENV_T1_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0118, \"Pitch Env Time 4 Velocity Sens\", \"RFRT_PENV_T4_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0119, \"Pitch Env Time 1\", \"RFRT_PENV_T1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x011A, \"Pitch Env Time 2\", \"RFRT_PENV_T2\", 40, 0, 127, INTEGER1x7),\n Node:new(0x011B, \"Pitch Env Time 3\", \"RFRT_PENV_T3\", 80, 0, 127, INTEGER1x7),\n Node:new(0x011C, \"Pitch Env Time 4\", \"RFRT_PENV_T4\", 40, 0, 127, INTEGER1x7),\n Node:new(0x011D, \"Pitch Env Level 0\", \"RFRT_PENV_L0\", 64, 1, 127, INTEGER1x7),\n Node:new(0x011E, \"Pitch Env Level 1\", \"RFRT_PENV_L1\", 34, 1, 127, INTEGER1x7),\n Node:new(0x011F, \"Pitch Env Level 2\", \"RFRT_PENV_L2\", 94, 1, 127, INTEGER1x7),\n Node:new(0x0120, \"Pitch Env Level 3\", \"RFRT_PENV_L3\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0121, \"Pitch Env Level 4\", \"RFRT_PENV_L4\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0122, \"TVF Filter Type\", \"RFRT_FILTER_TYPE\", 1, 0, 6, INTEGER1x3),\n Node:new(0x0123, \"TVF Cutoff Frequency\", \"RFRT_CUTOFF\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0124, \"TVF Cutoff Velocity Curve\", \"RFRT_CUTOFF_VCRV\", 1, 0, 7, INTEGER1x3),\n Node:new(0x0125, \"TVF Cutoff Velocity Sens\", \"RFRT_CUTOFF_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0126, \"TVF Resonance\", \"RFRT_RESO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0127, \"TVF Resonance Velocity Sens\", \"RFRT_RESO_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0128, \"TVF Env Depth\", \"RFRT_FENV_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0129, \"TVF Env Velocity Curve Type\", \"RFRT_FENV_VCRV\", 1, 0, 7, INTEGER1x3),\n Node:new(0x012A, \"TVF Env Velocity Sens\", \"RFRT_FENV_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x012B, \"TVF Env Time 1 Velocity Sens\", \"RFRT_FENV_T1_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x012C, \"TVF Env Time 4 Velocity Sens\", \"RFRT_FENV_T4_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x012D, \"TVF Env Time 1\", \"RFRT_FENV_T1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x012E, \"TVF Env Time 2\", \"RFRT_FENV_T2\", 10, 0, 127, INTEGER1x7),\n Node:new(0x012F, \"TVF Env Time 3\", \"RFRT_FENV_T3\", 10, 0, 127, INTEGER1x7),\n Node:new(0x0130, \"TVF Env Time 4\", \"RFRT_FENV_T4\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0131, \"TVF Env Level 0\", \"RFRT_FENV_L0\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0132, \"TVF Env Level 1\", \"RFRT_FENV_L1\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0133, \"TVF Env Level 2\", \"RFRT_FENV_L2\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0134, \"TVF Env Level 3\", \"RFRT_FENV_L3\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0135, \"TVF Env Level 4\", \"RFRT_FENV_L4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0136, \"TVA Level Velocity Curve\", \"RFRT_LEVEL_VCRV\", 1, 0, 7, INTEGER1x3),\n Node:new(0x0137, \"TVA Level Velocity Sens\", \"RFRT_LEVEL_VSENS\", 96, 1, 127, INTEGER1x7),\n Node:new(0x0138, \"TVA Env Time 1 Velocity Sens\", \"RFRT_AENV_T1_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0139, \"TVA Env Time 4 Velocity Sens\", \"RFRT_AENV_T4_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x013A, \"TVA Env Time 1\", \"RFRT_AENV_T1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x013B, \"TVA Env Time 2\", \"RFRT_AENV_T2\", 10, 0, 127, INTEGER1x7),\n Node:new(0x013C, \"TVA Env Time 3\", \"RFRT_AENV_T3\", 10, 0, 127, INTEGER1x7),\n Node:new(0x013D, \"TVA Env Time 4\", \"RFRT_AENV_T4\", 10, 0, 127, INTEGER1x7),\n Node:new(0x013E, \"TVA Env Level 1\", \"RFRT_AENV_L1\", 127, 0, 127, INTEGER1x7),\n Node:new(0x013F, \"TVA Env Level 2\", \"RFRT_AENV_L2\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0140, \"TVA Env Level 3\", \"RFRT_AENV_L3\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0141, \"One Shot Mode\", \"RFRT_ONE_SHOT\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0142, \"Relative Level\", \"RFRT_LEVEL_MOD\", 64, 0, 127, INTEGER1x7),\n}\n\nlocal RLGT4 = -- Rhythm Set Controller\n{\n Node:new(0x0000, \"Beam Switch\", \"RFRLGT4_BEAM_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0001, \"Beam Assign\", \"RFRLGT4_BEAM_ASGN\", 2, 0, 106, INTEGER1x7),\n Node:new(0x0002, \"Beam Polarity\", \"RFRLGT4_BEAM_POL\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0003, \"Beam Range Lower\", \"RFRLGT4_BEAM_RANGE_LO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0004, \"Beam Range Upper\", \"RFRLGT4_BEAM_RANGE_UP\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"Knob 1 Assign\", \"RFRLGT4_KNOB1_ASGN\", 0, 0, 100, INTEGER1x7),\n Node:new(0x0006, \"Knob 2 Assign\", \"RFRLGT4_KNOB2_ASGN\", 0, 0, 100, INTEGER1x7),\n Node:new(0x0007, \"Knob 3 Assign\", \"RFRLGT4_KNOB3_ASGN\", 0, 0, 100, INTEGER1x7),\n Node:new(0x0008, \"Knob 4 Assign\", \"RFRLGT4_KNOB4_ASGN\", 0, 0, 100, INTEGER1x7),\n Node:new(0x0009, \"Switch 1 Assign\", \"RFRLGT4_SW1_ASGN\", 0, 0, 104, INTEGER1x7),\n Node:new(0x000A, \"Switch 1 Assign Mode\", \"RFRLGT4_SW1_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x000B, \"Switch 2 Assign\", \"RFRLGT4_SW2_ASGN\", 0, 0, 104, INTEGER1x7),\n Node:new(0x000C, \"Switch 2 Assign Mode\", \"RFRLGT4_SW2_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x000D, \"Switch 3 Assign\", \"RFRLGT4_SW3_ASGN\", 0, 0, 104, INTEGER1x7),\n Node:new(0x000E, \"Switch 3 Assign Mode\", \"RFRLGT4_SW3_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x000F, \"Switch 4 Assign\", \"RFRLGT4_SW4_ASGN\", 0, 0, 104, INTEGER1x7),\n Node:new(0x0010, \"Switch 4 Assign Mode\", \"RFRLGT4_SW4_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0011, \"Pattern Switch\", \"RFRLGT4_PTN_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0012, \"Pattern Hold\", \"RFRLGT4_PTN_HOLD\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0013, \"Pattern Style\", \"RFRLGT4_PTN_STYLE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Pattern Accent Rate\", \"RFRLGT4_PTN_ACCT_RATE\", 100, 0, 100, INTEGER1x7),\n Node:new(0x0015, \"Pattern Shuffle Rate\", \"RFRLGT4_PTN_SHFL_RATE\", 50, 0, 100, INTEGER1x7),\n Node:new(0x0016, \"Pattern Shuffle Resolution\", \"RFRLGT4_PTN_SHFL_RESO\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0017, \"Pattern Keyboard Velocity\", \"RFRLGT4_PTN_VELO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"Pattern Note Assign\", \"RFRLGT4_PTN_NOTE_ASGN\", 60, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"Pattern Key Trigger\", \"RFRLGT4_PTN_KEY_TRIG\", 0, 0, 1, INTEGER1x1),\n}\n\nlocal RC2 = -- Rhythm Set Common 2\n{\n Node:new(0x0000, \"(reserve)\", \"RESERVE_DUMMY\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"Phrase Number\", \"RFRC2_PHRASE\", 0, 0, 255, INTEGER2x4),\n Node:new(0x0012, \"Keyword Flag 1 \", \"RFRC2_KEYWORD1\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0013, \"Keyword Flag 2 \", \"RFRC2_KEYWORD2\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0014, \"Keyword Flag 3 \", \"RFRC2_KEYWORD3\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0015, \"Keyword Flag 4 \", \"RFRC2_KEYWORD4\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0016, \"Keyword Flag 5 \", \"RFRC2_KEYWORD5\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0017, \"Keyword Flag 6 \", \"RFRC2_KEYWORD6\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0018, \"Keyword Flag 7 \", \"RFRC2_KEYWORD7\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0019, \"Keyword Flag 8 \", \"RFRC2_KEYWORD8\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001A, \"Keyword Flag 9 \", \"RFRC2_KEYWORD9\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001B, \"Keyword Flag 10\", \"RFRC2_KEYWORD10\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001C, \"Keyword Flag 11\", \"RFRC2_KEYWORD11\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001D, \"Keyword Flag 12\", \"RFRC2_KEYWORD12\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001E, \"Keyword Flag 13\", \"RFRC2_KEYWORD13\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001F, \"Keyword Flag 14\", \"RFRC2_KEYWORD14\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0020, \"Keyword Flag 15\", \"RFRC2_KEYWORD15\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0021, \"Keyword Flag 16\", \"RFRC2_KEYWORD16\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0022, \"Keyword Flag 17\", \"RFRC2_KEYWORD17\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0023, \"Keyword Flag 18\", \"RFRC2_KEYWORD18\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0024, \"Keyword Flag 19\", \"RFRC2_KEYWORD19\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0025, \"Keyword Flag 20\", \"RFRC2_KEYWORD20\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0026, \"Keyword Flag 21\", \"RFRC2_KEYWORD21\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0027, \"Keyword Flag 22\", \"RFRC2_KEYWORD22\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0028, \"Keyword Flag 23\", \"RFRC2_KEYWORD23\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0029, \"Keyword Flag 24\", \"RFRC2_KEYWORD24\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002A, \"Keyword Flag 25\", \"RFRC2_KEYWORD25\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002B, \"Keyword Flag 26\", \"RFRC2_KEYWORD26\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002C, \"Keyword Flag 27\", \"RFRC2_KEYWORD27\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002D, \"Keyword Flag 28\", \"RFRC2_KEYWORD28\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002E, \"Keyword Flag 29\", \"RFRC2_KEYWORD29\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002F, \"Keyword Flag 30\", \"RFRC2_KEYWORD30\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0030, \"Keyword Flag 31\", \"RFRC2_KEYWORD31\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0031, \"TFX Switch\", \"RFRC2_TFX_SW\", 1, 0, 1, INTEGER1x1),\n}\n\nlocal RTM = -- Rhythm Set Tone Modify\n{\n Node:new(0x0001, \"Modify Parameter 1 \", \"RFRTM_MOD_PRM1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"Modify Parameter 2 \", \"RFRTM_MOD_PRM2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"Modify Parameter 3 \", \"RFRTM_MOD_PRM3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0004, \"Modify Parameter 4 \", \"RFRTM_MOD_PRM4\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"Modify Parameter 5 \", \"RFRTM_MOD_PRM5\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0006, \"Modify Parameter 6 \", \"RFRTM_MOD_PRM6\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0007, \"Modify Parameter 7 \", \"RFRTM_MOD_PRM7\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"Modify Parameter 8 \", \"RFRTM_MOD_PRM8\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0009, \"Modify Parameter 9 \", \"RFRTM_MOD_PRM9\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000A, \"Modify Parameter 10\", \"RFRTM_MOD_PRM10\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000B, \"Modify Parameter 11\", \"RFRTM_MOD_PRM11\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000C, \"Modify Parameter 12\", \"RFRTM_MOD_PRM12\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000D, \"Modify Parameter 13\", \"RFRTM_MOD_PRM13\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000E, \"Modify Parameter 14\", \"RFRTM_MOD_PRM14\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000F, \"Modify Parameter 15\", \"RFRTM_MOD_PRM15\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"Modify Parameter 16\", \"RFRTM_MOD_PRM16\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0011, \"Modify Parameter 17\", \"RFRTM_MOD_PRM17\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Modify Parameter 18\", \"RFRTM_MOD_PRM18\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"Modify Parameter 19\", \"RFRTM_MOD_PRM19\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Modify Parameter 20\", \"RFRTM_MOD_PRM20\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0015, \"Modify Parameter 21\", \"RFRTM_MOD_PRM21\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0016, \"Modify Parameter 22\", \"RFRTM_MOD_PRM22\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0017, \"Modify Parameter 23\", \"RFRTM_MOD_PRM23\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"Modify Parameter 24\", \"RFRTM_MOD_PRM24\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"Modify Parameter 25\", \"RFRTM_MOD_PRM25\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Modify Parameter 26\", \"RFRTM_MOD_PRM26\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"Modify Parameter 27\", \"RFRTM_MOD_PRM27\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001C, \"Modify Parameter 28\", \"RFRTM_MOD_PRM28\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001D, \"Modify Parameter 29\", \"RFRTM_MOD_PRM29\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001E, \"Modify Parameter 30\", \"RFRTM_MOD_PRM30\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001F, \"Modify Parameter 31\", \"RFRTM_MOD_PRM31\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"Modify Parameter 32\", \"RFRTM_MOD_PRM32\", 0, 0, 127, INTEGER1x7),\n}\n\nlocal SHPC = -- SN Synth Tone Common\n{\n Node:new(0x0000, \"Tone Name\", \"SHPC_NAME\", 0, 32, 127, ByteSize12),\n Node:new(0x000C, \"Tone Level\", \"SHPC_LEVEL\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Portamento Switch\", \"SHPC_PORT_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0013, \"Portamento Time\", \"SHPC_PORT_TIME\", 20, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Mono Switch\", \"SHPC_MONO_SW\", 0, 0, 1, INTEGER1x2),\n Node:new(0x0015, \"Octave Shift\", \"SHPC_OCTAVE\", 64, 61, 67, INTEGER1x3),\n Node:new(0x0016, \"Pitch Bend Range Up\", \"SHPC_BEND_RANGE_UP\", 2, 0, 24, INTEGER1x5),\n Node:new(0x0017, \"Pitch Bend Range Down\", \"SHPC_BEND_RANGE_DW\", 2, 0, 24, INTEGER1x5),\n Node:new(0x0019, \"Partial1 Switch\", \"SHPC_TONE1_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001A, \"Partial1 Select\", \"SHPC_TONE1_SEL\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001B, \"Partial2 Switch\", \"SHPC_TONE2_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001C, \"Partial2 Select\", \"SHPC_TONE2_SEL\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001D, \"Partial3 Switch\", \"SHPC_TONE3_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001E, \"Partial3 Select\", \"SHPC_TONE3_SEL\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001F, \"RING Switch\", \"SHPC_SYNC_RING_SEL\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0020, \"TFX Switch\", \"SHPC_TFX_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x002E, \"Unison Switch\", \"SHPC_UNISON\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0031, \"Portamento Mode\", \"SHPC_PORT_MODE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0032, \"Legato Switch\", \"SHPC_LEGATO_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0034, \"Analog Feel\", \"SHPC_ANALOG_FEEL\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0035, \"Wave Shape\", \"SHPC_CROSS_MOD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0036, \"Tone Category\", \"SHPC_CATE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0037, \"Phrase Number\", \"SHPC_PHRASE\", 0, 0, 65535, INTEGER4x4),\n Node:new(0x003B, \"Phrase Octave Shift\", \"SHPC_PHRASE_OCT\", 64, 61, 67, INTEGER1x3),\n Node:new(0x003C, \"Unison Size\", \"SHPC_UNISON_SIZE\", 3, 0, 3, INTEGER1x2),\n}\n\nlocal SHPF = -- SN Synth Tone Common MFX\n{\n Node:new(0x0000, \"MFX Type\", \"SHPF_MFX_TYPE\", 0, 0, 67, INTEGER1x7, \"mfx\"),\n Node:new(0x0001, \"MFX Dry Send Level\", \"SHPF_MFX_DRY_SEND\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"MFX Chorus Send Level\", \"SHPF_MFX_CHO_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"MFX Reverb Send Level\", \"SHPF_MFX_REV_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"MFX Control 1 Source\", \"SHPF_MFX_CTRL1_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0006, \"MFX Control 1 Sens\", \"SHPF_MFX_CTRL1_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0007, \"MFX Control 2 Source\", \"SHPF_MFX_CTRL2_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0008, \"MFX Control 2 Sens\", \"SHPF_MFX_CTRL2_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0009, \"MFX Control 3 Source\", \"SHPF_MFX_CTRL3_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000A, \"MFX Control 3 Sens\", \"SHPF_MFX_CTRL3_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000B, \"MFX Control 4 Source\", \"SHPF_MFX_CTRL4_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000C, \"MFX Control 4 Sens\", \"SHPF_MFX_CTRL4_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000D, \"MFX Control Assign 1\", \"SHPF_MFX_CTRL_ASGN1\", 0, 0, 16, INTEGER1x5, \"mfx\", 0),\n Node:new(0x000E, \"MFX Control Assign 2\", \"SHPF_MFX_CTRL_ASGN2\", 0, 0, 16, INTEGER1x5, \"mfx\", 1),\n Node:new(0x000F, \"MFX Control Assign 3\", \"SHPF_MFX_CTRL_ASGN3\", 0, 0, 16, INTEGER1x5, \"mfx\", 2),\n Node:new(0x0010, \"MFX Control Assign 4\", \"SHPF_MFX_CTRL_ASGN4\", 0, 0, 16, INTEGER1x5, \"mfx\", 3),\n Node:new(0x0011, \"MFX Parameter 1 \", \"SHPF_MFX_PRM1\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 4),\n Node:new(0x0015, \"MFX Parameter 2 \", \"SHPF_MFX_PRM2\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 5),\n Node:new(0x0019, \"MFX Parameter 3 \", \"SHPF_MFX_PRM3\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 6),\n Node:new(0x001D, \"MFX Parameter 4 \", \"SHPF_MFX_PRM4\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 7),\n Node:new(0x0021, \"MFX Parameter 5 \", \"SHPF_MFX_PRM5\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 8),\n Node:new(0x0025, \"MFX Parameter 6 \", \"SHPF_MFX_PRM6\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 9),\n Node:new(0x0029, \"MFX Parameter 7 \", \"SHPF_MFX_PRM7\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 10),\n Node:new(0x002D, \"MFX Parameter 8 \", \"SHPF_MFX_PRM8\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 11),\n Node:new(0x0031, \"MFX Parameter 9 \", \"SHPF_MFX_PRM9\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 12),\n Node:new(0x0035, \"MFX Parameter 10\", \"SHPF_MFX_PRM10\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 13),\n Node:new(0x0039, \"MFX Parameter 11\", \"SHPF_MFX_PRM11\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 14),\n Node:new(0x003D, \"MFX Parameter 12\", \"SHPF_MFX_PRM12\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 15),\n Node:new(0x0041, \"MFX Parameter 13\", \"SHPF_MFX_PRM13\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 16),\n Node:new(0x0045, \"MFX Parameter 14\", \"SHPF_MFX_PRM14\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 17),\n Node:new(0x0049, \"MFX Parameter 15\", \"SHPF_MFX_PRM15\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 18),\n Node:new(0x004D, \"MFX Parameter 16\", \"SHPF_MFX_PRM16\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 19),\n Node:new(0x0051, \"MFX Parameter 17\", \"SHPF_MFX_PRM17\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 20),\n Node:new(0x0055, \"MFX Parameter 18\", \"SHPF_MFX_PRM18\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 21),\n Node:new(0x0059, \"MFX Parameter 19\", \"SHPF_MFX_PRM19\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 22),\n Node:new(0x005D, \"MFX Parameter 20\", \"SHPF_MFX_PRM20\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 23),\n Node:new(0x0061, \"MFX Parameter 21\", \"SHPF_MFX_PRM21\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 24),\n Node:new(0x0065, \"MFX Parameter 22\", \"SHPF_MFX_PRM22\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 25),\n Node:new(0x0069, \"MFX Parameter 23\", \"SHPF_MFX_PRM23\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 26),\n Node:new(0x006D, \"MFX Parameter 24\", \"SHPF_MFX_PRM24\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 27),\n Node:new(0x0071, \"MFX Parameter 25\", \"SHPF_MFX_PRM25\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 28),\n Node:new(0x0075, \"MFX Parameter 26\", \"SHPF_MFX_PRM26\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 29),\n Node:new(0x0079, \"MFX Parameter 27\", \"SHPF_MFX_PRM27\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 30),\n Node:new(0x007D, \"MFX Parameter 28\", \"SHPF_MFX_PRM28\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 31),\n Node:new(0x0101, \"MFX Parameter 29\", \"SHPF_MFX_PRM29\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 32),\n Node:new(0x0105, \"MFX Parameter 30\", \"SHPF_MFX_PRM30\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 33),\n Node:new(0x0109, \"MFX Parameter 31\", \"SHPF_MFX_PRM31\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 34),\n Node:new(0x010D, \"MFX Parameter 32\", \"SHPF_MFX_PRM32\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 35),\n}\n\nlocal SHPTM = -- SN Synth Tone Modify\n{\n Node:new(0x0000, \"(reserve)\", \"RESERVE_DUMMY\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0001, \"Attack Time Interval Sens \", \"SHPTM_MOD_PRM1\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"Release Time Interval Sens \", \"SHPTM_MOD_PRM2\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"Portamento Time Interval Sens \", \"SHPTM_MOD_PRM3\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0004, \"Envelope Loop Mode \", \"SHPTM_MOD_PRM4\", 0, 0, 2, INTEGER1x7),\n Node:new(0x0005, \"Envelope Loop Sync Note \", \"SHPTM_MOD_PRM5\", 0, 0, 21, INTEGER1x7),\n Node:new(0x0006, \"Chromatic Portamento \", \"SHPTM_MOD_PRM6\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0007, \"Modify Parameter 7 \", \"SHPTM_MOD_PRM7\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"Modify Parameter 8 \", \"SHPTM_MOD_PRM8\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0009, \"Modify Parameter 9 \", \"SHPTM_MOD_PRM9\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000A, \"Modify Parameter 10\", \"SHPTM_MOD_PRM10\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000B, \"Modify Parameter 11\", \"SHPTM_MOD_PRM11\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000C, \"Modify Parameter 12\", \"SHPTM_MOD_PRM12\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000D, \"Modify Parameter 13\", \"SHPTM_MOD_PRM13\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000E, \"Modify Parameter 14\", \"SHPTM_MOD_PRM14\", 0, 0, 127, INTEGER1x7),\n Node:new(0x000F, \"Modify Parameter 15\", \"SHPTM_MOD_PRM15\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"Modify Parameter 16\", \"SHPTM_MOD_PRM16\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0011, \"Modify Parameter 17\", \"SHPTM_MOD_PRM17\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Modify Parameter 18\", \"SHPTM_MOD_PRM18\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"Modify Parameter 19\", \"SHPTM_MOD_PRM19\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Modify Parameter 20\", \"SHPTM_MOD_PRM20\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0015, \"Modify Parameter 21\", \"SHPTM_MOD_PRM21\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0016, \"Modify Parameter 22\", \"SHPTM_MOD_PRM22\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0017, \"Modify Parameter 23\", \"SHPTM_MOD_PRM23\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"Modify Parameter 24\", \"SHPTM_MOD_PRM24\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"Modify Parameter 25\", \"SHPTM_MOD_PRM25\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Modify Parameter 26\", \"SHPTM_MOD_PRM26\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"Modify Parameter 27\", \"SHPTM_MOD_PRM27\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001C, \"Modify Parameter 28\", \"SHPTM_MOD_PRM28\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001D, \"Modify Parameter 29\", \"SHPTM_MOD_PRM29\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001E, \"Modify Parameter 30\", \"SHPTM_MOD_PRM30\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001F, \"Modify Parameter 31\", \"SHPTM_MOD_PRM31\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"Modify Parameter 32\", \"SHPTM_MOD_PRM32\", 0, 0, 127, INTEGER1x7),\n}\n\nlocal SHPT = -- SN Synth Tone Partial\n{\n Node:new(0x0000, \"OSC Wave\", \"SHPT_OSC_WAVE\", 0, 0, 7, INTEGER1x3),\n Node:new(0x0001, \"OSC Wave Variation\", \"SHPT_OSC_WAVE_VAR\", 0, 0, 2, INTEGER1x6),\n Node:new(0x0003, \"OSC Pitch\", \"SHPT_OSC_PIT_CRS\", 64, 40, 88, INTEGER1x6),\n Node:new(0x0004, \"OSC Detune\", \"SHPT_OSC_PIT_DETUNE\", 64, 14, 114, INTEGER1x7),\n Node:new(0x0005, \"OSC Pulse Width Mod Depth\", \"SHPT_OSC_PWM\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0006, \"OSC Pulse Width\", \"SHPT_OSC_PW\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0007, \"OSC Pitch Env Attack Time\", \"SHPT_OSC_PENV_ATK\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"OSC Pitch Env Decay \", \"SHPT_OSC_PENV_DCY\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0009, \"OSC Pitch Env Depth \", \"SHPT_OSC_PENV_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000A, \"FILTER Mode\", \"SHPT_FILT_MODE\", 1, 0, 7, INTEGER1x3),\n Node:new(0x000B, \"FILTER Slope\", \"SHPT_FILT_SLOPE\", 1, 0, 1, INTEGER1x1),\n Node:new(0x000C, \"FILTER Cutoff\", \"SHPT_FILT_FREQ\", 127, 0, 127, INTEGER1x7),\n Node:new(0x000D, \"FILTER Cutoff Keyfollow\", \"SHPT_FILT_FREQ_KF\", 64, 54, 74, INTEGER1x6),\n Node:new(0x000E, \"FILTER Env Velocity Sens\", \"SHPT_FILT_ENV_VSENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000F, \"FILTER Resonance\", \"SHPT_FILT_RESO\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0010, \"FILTER Env Attack Time\", \"SHPT_FILT_ENV_ATK\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0011, \"FILTER Env Decay Time \", \"SHPT_FILT_ENV_DCY\", 36, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"FILTER Env Sustain Level\", \"SHPT_FILT_ENV_SUS\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"FILTER Env Release Time\", \"SHPT_FILT_ENV_REL\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"FILTER Env Depth \", \"SHPT_FILT_ENV_DEPTH\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0015, \"AMP Level\", \"SHPT_AMP_LEVEL\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0016, \"AMP Level Velocity Sens\", \"SHPT_AMP_LEVEL_VSENS\", 83, 1, 127, INTEGER1x7),\n Node:new(0x0017, \"AMP Env Attack Time\", \"SHPT_AMP_ENV_ATK\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"AMP Env Decay Time \", \"SHPT_AMP_ENV_DCY\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"AMP Env Sustain Level\", \"SHPT_AMP_ENV_SUS\", 127, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"AMP Env Release Time\", \"SHPT_AMP_ENV_REL\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001B, \"AMP Pan\", \"SHPT_AMP_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001C, \"LFO Shape\", \"SHPT_LFO_SHAPE\", 0, 0, 5, INTEGER1x3),\n Node:new(0x001D, \"LFO Rate\", \"SHPT_LFO_RATE\", 81, 0, 127, INTEGER1x7),\n Node:new(0x001E, \"LFO Tempo Sync Switch\", \"SHPT_LFO_SYNC_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001F, \"LFO Tempo Sync Note\", \"SHPT_LFO_SYNC_NOTE\", 17, 0, 19, INTEGER1x5),\n Node:new(0x0020, \"LFO Fade Time\", \"SHPT_LFO_FADE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0021, \"LFO Key Trigger\", \"SHPT_LFO_KEY_TRIG\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0022, \"LFO Pitch Depth\", \"SHPT_LFO_PITCH_MOD\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0023, \"LFO Filter Depth\", \"SHPT_LFO_FILTER_MOD\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0024, \"LFO Amp Depth\", \"SHPT_LFO_AMP_MOD\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0025, \"LFO Pan Depth\", \"SHPT_LFO_PAN_MOD\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0026, \"Modulation LFO Shape\", \"SHPT_MLFO_SHAPE\", 0, 0, 5, INTEGER1x3),\n Node:new(0x0027, \"Modulation LFO Rate\", \"SHPT_MLFO_RATE\", 88, 0, 127, INTEGER1x7),\n Node:new(0x0028, \"Modulation LFO Tempo Sync Switch\", \"SHPT_MLFO_SYNC_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0029, \"Modulation LFO Tempo Sync Note\", \"SHPT_MLFO_SYNC_NOTE\", 17, 0, 19, INTEGER1x5),\n Node:new(0x002A, \"OSC Pulse Width Shift\", \"SHPT_OSC_PW_SHIFT\", 127, 0, 127, INTEGER1x7),\n Node:new(0x002C, \"Modulation LFO Pitch Depth\", \"SHPT_MLFO_PITCH_MOD\", 80, 1, 127, INTEGER1x7),\n Node:new(0x002D, \"Modulation LFO Filter Depth\", \"SHPT_MLFO_FILTER_MOD\", 64, 1, 127, INTEGER1x7),\n Node:new(0x002E, \"Modulation LFO Amp Depth\", \"SHPT_MLFO_AMP_MOD\", 64, 1, 127, INTEGER1x7),\n Node:new(0x002F, \"Modulation LFO Pan Depth\", \"SHPT_MLFO_PAN_MOD\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0030, \"Cutoff Aftertouch Sens\", \"SHPT_AFT_CUTOFF_SENS\", 73, 1, 127, INTEGER1x7),\n Node:new(0x0031, \"Level Aftertouch Sens\", \"SHPT_AFT_LEVEL_SENS\", 74, 1, 127, INTEGER1x7),\n Node:new(0x0034, \"Wave Gain\", \"SHPT_WAV_GAIN\", 1, 0, 3, INTEGER1x2),\n Node:new(0x0035, \"Wave Number\", \"SHPT_WAV_NUML\", 45, 1, 450, INTEGER4x4),\n Node:new(0x0039, \"HPF Cutoff\", \"SHPT_HPF_CUTOFF\", 0, 0, 127, INTEGER1x7),\n Node:new(0x003A, \"Super Saw Detune\", \"SHPT_SSAW_DETUNE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x003B, \"Modulation LFO Rate Control\", \"SHPT_MLFO_RATE_MOD\", 82, 1, 127, INTEGER1x7),\n Node:new(0x003C, \"AMP Level Keyfollow\", \"SHPT_BIAS_LEVEL\", 64, 54, 74, INTEGER1x5),\n}\n\nlocal SNTC = -- SN Tone Common\n{\n Node:new(0x0000, \"Tone Name\", \"SNTC_NAME\", 0, 32, 127, ByteSize16),\n Node:new(0x0010, \"Tone Level\", \"SNTC_TONE_LEVEL\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0011, \"Mono/Poly\", \"SNTC_MONO_POLY\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0012, \"Portamento Time Offset\", \"SNTC_PORT_TIME\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"Cutoff Offset\", \"SNTC_CUTOFF_OFST\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0014, \"Resonance Offset\", \"SNTC_RESO_OFST\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0015, \"Attack Time Offset\", \"SNTC_ATK_OFST\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0016, \"Release Time Offset\", \"SNTC_REL_OFST\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0017, \"Vibrato Rate\", \"SNTC_VIB_RATE\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0018, \"Vibrato Depth\", \"SNTC_VIB_DEPTH\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0019, \"Vibrato Delay\", \"SNTC_VIB_DELAY\", 64, 0, 127, INTEGER1x7),\n Node:new(0x001A, \"Octave Shift\", \"SNTC_OCTAVE\", 64, 61, 67, INTEGER1x3),\n Node:new(0x001B, \"Category\", \"SNTC_CATE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x001C, \"Phrase Number\", \"SNTC_PHRASE\", 0, 0, 255, INTEGER2x4),\n Node:new(0x001E, \"Phrase Octave Shift\", \"SNTC_PHRASE_OCT\", 64, 61, 67, INTEGER1x3),\n Node:new(0x001F, \"TFX Switch\", \"SNTC_TFX_SW\", 1, 0, 1, INTEGER1x1),\n Node:new(0x0020, \"Inst Variation\", \"SNTC_INST_BS_LSB\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0021, \"Inst Number\", \"SNTC_INST_BS_PC\", 0, 0, 127, INTEGER1x7, \"mod\", 0),\n Node:new(0x0022, \"Modify Parameter 1 \", \"SNTC_MOD_PRM1\", 0, 0, 127, INTEGER1x7, \"mod\", 0),\n Node:new(0x0023, \"Modify Parameter 2 \", \"SNTC_MOD_PRM2\", 0, 0, 127, INTEGER1x7, \"mod\", 1),\n Node:new(0x0024, \"Modify Parameter 3 \", \"SNTC_MOD_PRM3\", 0, 0, 127, INTEGER1x7, \"mod\", 2),\n Node:new(0x0025, \"Modify Parameter 4 \", \"SNTC_MOD_PRM4\", 0, 0, 127, INTEGER1x7, \"mod\", 3),\n Node:new(0x0026, \"Modify Parameter 5 \", \"SNTC_MOD_PRM5\", 0, 0, 127, INTEGER1x7, \"mod\", 4),\n Node:new(0x0027, \"Modify Parameter 6 \", \"SNTC_MOD_PRM6\", 0, 0, 127, INTEGER1x7, \"mod\", 5),\n Node:new(0x0028, \"Modify Parameter 7 \", \"SNTC_MOD_PRM7\", 0, 0, 127, INTEGER1x7, \"mod\", 6),\n Node:new(0x0029, \"Modify Parameter 8 \", \"SNTC_MOD_PRM8\", 0, 0, 127, INTEGER1x7, \"mod\", 7),\n Node:new(0x002A, \"Modify Parameter 9 \", \"SNTC_MOD_PRM9\", 0, 0, 127, INTEGER1x7, \"mod\", 8),\n Node:new(0x002B, \"Modify Parameter 10\", \"SNTC_MOD_PRM10\", 0, 0, 127, INTEGER1x7, \"mod\", 9),\n Node:new(0x002C, \"Modify Parameter 11\", \"SNTC_MOD_PRM11\", 0, 0, 127, INTEGER1x7, \"mod\", 10),\n Node:new(0x002D, \"Modify Parameter 12\", \"SNTC_MOD_PRM12\", 0, 0, 127, INTEGER1x7, \"mod\", 11),\n Node:new(0x002E, \"Modify Parameter 13\", \"SNTC_MOD_PRM13\", 0, 0, 127, INTEGER1x7, \"mod\", 12),\n Node:new(0x002F, \"Modify Parameter 14\", \"SNTC_MOD_PRM14\", 0, 0, 127, INTEGER1x7, \"mod\", 13),\n Node:new(0x0030, \"Modify Parameter 15\", \"SNTC_MOD_PRM15\", 0, 0, 127, INTEGER1x7, \"mod\", 14),\n Node:new(0x0031, \"Modify Parameter 16\", \"SNTC_MOD_PRM16\", 0, 0, 127, INTEGER1x7, \"mod\", 15),\n Node:new(0x0032, \"Modify Parameter 17\", \"SNTC_MOD_PRM17\", 0, 0, 127, INTEGER1x7, \"mod\", 16),\n Node:new(0x0033, \"Modify Parameter 18\", \"SNTC_MOD_PRM18\", 0, 0, 127, INTEGER1x7, \"mod\", 17),\n Node:new(0x0034, \"Modify Parameter 19\", \"SNTC_MOD_PRM19\", 0, 0, 127, INTEGER1x7, \"mod\", 18),\n Node:new(0x0035, \"Modify Parameter 20\", \"SNTC_MOD_PRM20\", 0, 0, 127, INTEGER1x7, \"mod\", 19),\n Node:new(0x0036, \"Modify Parameter 21\", \"SNTC_MOD_PRM21\", 0, 0, 127, INTEGER1x7, \"mod\", 20),\n Node:new(0x0037, \"Modify Parameter 22\", \"SNTC_MOD_PRM22\", 0, 0, 127, INTEGER1x7, \"mod\", 21),\n Node:new(0x0038, \"Modify Parameter 23\", \"SNTC_MOD_PRM23\", 0, 0, 127, INTEGER1x7, \"mod\", 22),\n Node:new(0x0039, \"Modify Parameter 24\", \"SNTC_MOD_PRM24\", 0, 0, 127, INTEGER1x7, \"mod\", 23),\n Node:new(0x003A, \"Modify Parameter 25\", \"SNTC_MOD_PRM25\", 0, 0, 127, INTEGER1x7, \"mod\", 24),\n Node:new(0x003B, \"Modify Parameter 26\", \"SNTC_MOD_PRM26\", 0, 0, 127, INTEGER1x7, \"mod\", 25),\n Node:new(0x003C, \"Modify Parameter 27\", \"SNTC_MOD_PRM27\", 0, 0, 127, INTEGER1x7, \"mod\", 26),\n Node:new(0x003D, \"Modify Parameter 28\", \"SNTC_MOD_PRM28\", 0, 0, 127, INTEGER1x7, \"mod\", 27),\n Node:new(0x003E, \"Modify Parameter 29\", \"SNTC_MOD_PRM29\", 0, 0, 127, INTEGER1x7, \"mod\", 28),\n Node:new(0x003F, \"Modify Parameter 30\", \"SNTC_MOD_PRM30\", 0, 0, 127, INTEGER1x7, \"mod\", 29),\n Node:new(0x0040, \"Modify Parameter 31\", \"SNTC_MOD_PRM31\", 0, 0, 127, INTEGER1x7, \"mod\", 30),\n Node:new(0x0041, \"Modify Parameter 32\", \"SNTC_MOD_PRM32\", 0, 0, 127, INTEGER1x7, \"mod\", 31),\n}\n\nlocal SNTF = -- SN Tone MFX\n{\n Node:new(0x0000, \"MFX Type\", \"SNTF_MFX_TYPE\", 0, 0, 67, INTEGER1x7, \"mfx\"),\n Node:new(0x0001, \"MFX Dry Send Level\", \"SNTF_MFX_DRY_SEND\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"MFX Chorus Send Level\", \"SNTF_MFX_CHO_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"MFX Reverb Send Level\", \"SNTF_MFX_REV_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"MFX Control 1 Source\", \"SNTF_MFX_CTRL1_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0006, \"MFX Control 1 Sens\", \"SNTF_MFX_CTRL1_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0007, \"MFX Control 2 Source\", \"SNTF_MFX_CTRL2_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0008, \"MFX Control 2 Sens\", \"SNTF_MFX_CTRL2_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0009, \"MFX Control 3 Source\", \"SNTF_MFX_CTRL3_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000A, \"MFX Control 3 Sens\", \"SNTF_MFX_CTRL3_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000B, \"MFX Control 4 Source\", \"SNTF_MFX_CTRL4_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000C, \"MFX Control 4 Sens\", \"SNTF_MFX_CTRL4_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000D, \"MFX Control Assign 1\", \"SNTF_MFX_CTRL_ASGN1\", 0, 0, 16, INTEGER1x5, \"mfx\", 0),\n Node:new(0x000E, \"MFX Control Assign 2\", \"SNTF_MFX_CTRL_ASGN2\", 0, 0, 16, INTEGER1x5, \"mfx\", 1),\n Node:new(0x000F, \"MFX Control Assign 3\", \"SNTF_MFX_CTRL_ASGN3\", 0, 0, 16, INTEGER1x5, \"mfx\", 2),\n Node:new(0x0010, \"MFX Control Assign 4\", \"SNTF_MFX_CTRL_ASGN4\", 0, 0, 16, INTEGER1x5, \"mfx\", 3),\n Node:new(0x0011, \"MFX Parameter 1 \", \"SNTF_MFX_PRM1\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 4),\n Node:new(0x0015, \"MFX Parameter 2 \", \"SNTF_MFX_PRM2\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 5),\n Node:new(0x0019, \"MFX Parameter 3 \", \"SNTF_MFX_PRM3\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 6),\n Node:new(0x001D, \"MFX Parameter 4 \", \"SNTF_MFX_PRM4\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 7),\n Node:new(0x0021, \"MFX Parameter 5 \", \"SNTF_MFX_PRM5\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 8),\n Node:new(0x0025, \"MFX Parameter 6 \", \"SNTF_MFX_PRM6\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 9),\n Node:new(0x0029, \"MFX Parameter 7 \", \"SNTF_MFX_PRM7\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 10),\n Node:new(0x002D, \"MFX Parameter 8 \", \"SNTF_MFX_PRM8\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 11),\n Node:new(0x0031, \"MFX Parameter 9 \", \"SNTF_MFX_PRM9\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 12),\n Node:new(0x0035, \"MFX Parameter 10\", \"SNTF_MFX_PRM10\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 13),\n Node:new(0x0039, \"MFX Parameter 11\", \"SNTF_MFX_PRM11\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 14),\n Node:new(0x003D, \"MFX Parameter 12\", \"SNTF_MFX_PRM12\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 15),\n Node:new(0x0041, \"MFX Parameter 13\", \"SNTF_MFX_PRM13\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 16),\n Node:new(0x0045, \"MFX Parameter 14\", \"SNTF_MFX_PRM14\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 17),\n Node:new(0x0049, \"MFX Parameter 15\", \"SNTF_MFX_PRM15\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 18),\n Node:new(0x004D, \"MFX Parameter 16\", \"SNTF_MFX_PRM16\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 19),\n Node:new(0x0051, \"MFX Parameter 17\", \"SNTF_MFX_PRM17\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 20),\n Node:new(0x0055, \"MFX Parameter 18\", \"SNTF_MFX_PRM18\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 21),\n Node:new(0x0059, \"MFX Parameter 19\", \"SNTF_MFX_PRM19\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 22),\n Node:new(0x005D, \"MFX Parameter 20\", \"SNTF_MFX_PRM20\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 23),\n Node:new(0x0061, \"MFX Parameter 21\", \"SNTF_MFX_PRM21\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 24),\n Node:new(0x0065, \"MFX Parameter 22\", \"SNTF_MFX_PRM22\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 25),\n Node:new(0x0069, \"MFX Parameter 23\", \"SNTF_MFX_PRM23\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 26),\n Node:new(0x006D, \"MFX Parameter 24\", \"SNTF_MFX_PRM24\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 27),\n Node:new(0x0071, \"MFX Parameter 25\", \"SNTF_MFX_PRM25\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 28),\n Node:new(0x0075, \"MFX Parameter 26\", \"SNTF_MFX_PRM26\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 29),\n Node:new(0x0079, \"MFX Parameter 27\", \"SNTF_MFX_PRM27\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 30),\n Node:new(0x007D, \"MFX Parameter 28\", \"SNTF_MFX_PRM28\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 31),\n Node:new(0x0101, \"MFX Parameter 29\", \"SNTF_MFX_PRM29\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 32),\n Node:new(0x0105, \"MFX Parameter 30\", \"SNTF_MFX_PRM30\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 33),\n Node:new(0x0109, \"MFX Parameter 31\", \"SNTF_MFX_PRM31\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 34),\n Node:new(0x010D, \"MFX Parameter 32\", \"SNTF_MFX_PRM32\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 35),\n}\n\nlocal KC = -- Kit Common\n{\n Node:new(0x0000, \"Kit Name\", \"SDKC_NAME\", 0, 32, 127, ByteSize16),\n Node:new(0x0010, \"Kit Level\", \"SDKC_LEVEL\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0011, \"Ambience Level\", \"SDKC_AMBIENCE_LEVEL\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Phrase Number\", \"SDKC_PHRASE\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0013, \"TFX Switch\", \"SDKC_TFX_SW\", 1, 0, 1, INTEGER1x1),\n}\n\nlocal KF = -- Kit MFX\n{\n Node:new(0x0000, \"MFX Type\", \"SDKF_MFX_TYPE\", 0, 0, 67, INTEGER1x7, \"mfx\"),\n Node:new(0x0001, \"MFX Dry Send Level\", \"SDKF_MFX_DRY_SEND\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0002, \"MFX Chorus Send Level\", \"SDKF_MFX_CHO_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0003, \"MFX Reverb Send Level\", \"SDKF_MFX_REV_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"MFX Control 1 Source\", \"SDKF_MFX_CTRL1_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0006, \"MFX Control 1 Sens\", \"SDKF_MFX_CTRL1_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0007, \"MFX Control 2 Source\", \"SDKF_MFX_CTRL2_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x0008, \"MFX Control 2 Sens\", \"SDKF_MFX_CTRL2_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x0009, \"MFX Control 3 Source\", \"SDKF_MFX_CTRL3_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000A, \"MFX Control 3 Sens\", \"SDKF_MFX_CTRL3_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000B, \"MFX Control 4 Source\", \"SDKF_MFX_CTRL4_SRC\", 0, 0, 101, INTEGER1x7),\n Node:new(0x000C, \"MFX Control 4 Sens\", \"SDKF_MFX_CTRL4_SENS\", 64, 1, 127, INTEGER1x7),\n Node:new(0x000D, \"MFX Control Assign 1\", \"SDKF_MFX_CTRL_ASGN1\", 0, 0, 16, INTEGER1x5, \"mfx\", 0),\n Node:new(0x000E, \"MFX Control Assign 2\", \"SDKF_MFX_CTRL_ASGN2\", 0, 0, 16, INTEGER1x5, \"mfx\", 1),\n Node:new(0x000F, \"MFX Control Assign 3\", \"SDKF_MFX_CTRL_ASGN3\", 0, 0, 16, INTEGER1x5, \"mfx\", 2),\n Node:new(0x0010, \"MFX Control Assign 4\", \"SDKF_MFX_CTRL_ASGN4\", 0, 0, 16, INTEGER1x5, \"mfx\", 3),\n Node:new(0x0011, \"MFX Parameter 1 \", \"SDKF_MFX_PRM1\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 4),\n Node:new(0x0015, \"MFX Parameter 2 \", \"SDKF_MFX_PRM2\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 5),\n Node:new(0x0019, \"MFX Parameter 3 \", \"SDKF_MFX_PRM3\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 6),\n Node:new(0x001D, \"MFX Parameter 4 \", \"SDKF_MFX_PRM4\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 7),\n Node:new(0x0021, \"MFX Parameter 5 \", \"SDKF_MFX_PRM5\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 8),\n Node:new(0x0025, \"MFX Parameter 6 \", \"SDKF_MFX_PRM6\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 9),\n Node:new(0x0029, \"MFX Parameter 7 \", \"SDKF_MFX_PRM7\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 10),\n Node:new(0x002D, \"MFX Parameter 8 \", \"SDKF_MFX_PRM8\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 11),\n Node:new(0x0031, \"MFX Parameter 9 \", \"SDKF_MFX_PRM9\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 12),\n Node:new(0x0035, \"MFX Parameter 10\", \"SDKF_MFX_PRM10\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 13),\n Node:new(0x0039, \"MFX Parameter 11\", \"SDKF_MFX_PRM11\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 14),\n Node:new(0x003D, \"MFX Parameter 12\", \"SDKF_MFX_PRM12\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 15),\n Node:new(0x0041, \"MFX Parameter 13\", \"SDKF_MFX_PRM13\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 16),\n Node:new(0x0045, \"MFX Parameter 14\", \"SDKF_MFX_PRM14\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 17),\n Node:new(0x0049, \"MFX Parameter 15\", \"SDKF_MFX_PRM15\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 18),\n Node:new(0x004D, \"MFX Parameter 16\", \"SDKF_MFX_PRM16\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 19),\n Node:new(0x0051, \"MFX Parameter 17\", \"SDKF_MFX_PRM17\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 20),\n Node:new(0x0055, \"MFX Parameter 18\", \"SDKF_MFX_PRM18\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 21),\n Node:new(0x0059, \"MFX Parameter 19\", \"SDKF_MFX_PRM19\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 22),\n Node:new(0x005D, \"MFX Parameter 20\", \"SDKF_MFX_PRM20\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 23),\n Node:new(0x0061, \"MFX Parameter 21\", \"SDKF_MFX_PRM21\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 24),\n Node:new(0x0065, \"MFX Parameter 22\", \"SDKF_MFX_PRM22\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 25),\n Node:new(0x0069, \"MFX Parameter 23\", \"SDKF_MFX_PRM23\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 26),\n Node:new(0x006D, \"MFX Parameter 24\", \"SDKF_MFX_PRM24\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 27),\n Node:new(0x0071, \"MFX Parameter 25\", \"SDKF_MFX_PRM25\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 28),\n Node:new(0x0075, \"MFX Parameter 26\", \"SDKF_MFX_PRM26\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 29),\n Node:new(0x0079, \"MFX Parameter 27\", \"SDKF_MFX_PRM27\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 30),\n Node:new(0x007D, \"MFX Parameter 28\", \"SDKF_MFX_PRM28\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 31),\n Node:new(0x0101, \"MFX Parameter 29\", \"SDKF_MFX_PRM29\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 32),\n Node:new(0x0105, \"MFX Parameter 30\", \"SDKF_MFX_PRM30\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 33),\n Node:new(0x0109, \"MFX Parameter 31\", \"SDKF_MFX_PRM31\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 34),\n Node:new(0x010D, \"MFX Parameter 32\", \"SDKF_MFX_PRM32\", 32768, 12768, 52768, INTEGER4x4, \"mfx\", 35),\n}\n\nlocal KCQ = -- Kit Common Comp/EQ\n{\n Node:new(0x0000, \"Comp1 Switch\", \"SDKCQ_COMP1_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0001, \"Comp1 Attack Time\", \"SDKCQ_COMP1_ATTACK\", 0, 0, 31, INTEGER1x5),\n Node:new(0x0002, \"Comp1 Release Time\", \"SDKCQ_COMP1_RELEASE\", 0, 0, 23, INTEGER1x5),\n Node:new(0x0003, \"Comp1 Threshold\", \"SDKCQ_COMP1_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0004, \"Comp1 Ratio\", \"SDKCQ_COMP1_RATIO\", 0, 0, 19, INTEGER1x5),\n Node:new(0x0005, \"Comp1 Output Gain\", \"SDKCQ_COMP1_POSTGAIN\", 0, 0, 24, INTEGER1x5),\n Node:new(0x0006, \"EQ1 Switch\", \"SDKCQ_EQ1_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0007, \"EQ1 Low Freq\", \"SDKCQ_EQ1_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0008, \"EQ1 Low Gain\", \"SDKCQ_EQ1_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0009, \"EQ1 Mid Freq\", \"SDKCQ_EQ1_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x000A, \"EQ1 Mid Gain\", \"SDKCQ_EQ1_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x000B, \"EQ1 Mid Q\", \"SDKCQ_EQ1_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x000C, \"EQ1 High Freq\", \"SDKCQ_EQ1_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x000D, \"EQ1 High Gain\", \"SDKCQ_EQ1_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x000E, \"Comp2 Switch\", \"SDKCQ_COMP2_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x000F, \"Comp2 Attack Time\", \"SDKCQ_COMP2_ATTACK\", 0, 0, 31, INTEGER1x5),\n Node:new(0x0010, \"Comp2 Release Time\", \"SDKCQ_COMP2_RELEASE\", 0, 0, 23, INTEGER1x5),\n Node:new(0x0011, \"Comp2 Threshold\", \"SDKCQ_COMP2_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Comp2 Ratio\", \"SDKCQ_COMP2_RATIO\", 0, 0, 19, INTEGER1x5),\n Node:new(0x0013, \"Comp2 Output Gain\", \"SDKCQ_COMP2_POSTGAIN\", 0, 0, 24, INTEGER1x5),\n Node:new(0x0014, \"EQ2 Switch\", \"SDKCQ_EQ2_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0015, \"EQ2 Low Freq\", \"SDKCQ_EQ2_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0016, \"EQ2 Low Gain\", \"SDKCQ_EQ2_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0017, \"EQ2 Mid Freq\", \"SDKCQ_EQ2_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0018, \"EQ2 Mid Gain\", \"SDKCQ_EQ2_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0019, \"EQ2 Mid Q\", \"SDKCQ_EQ2_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x001A, \"EQ2 High Freq\", \"SDKCQ_EQ2_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x001B, \"EQ2 High Gain\", \"SDKCQ_EQ2_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x001C, \"Comp3 Switch\", \"SDKCQ_COMP3_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x001D, \"Comp3 Attack Time\", \"SDKCQ_COMP3_ATTACK\", 0, 0, 31, INTEGER1x5),\n Node:new(0x001E, \"Comp3 Release Time\", \"SDKCQ_COMP3_RELEASE\", 0, 0, 23, INTEGER1x5),\n Node:new(0x001F, \"Comp3 Threshold\", \"SDKCQ_COMP3_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0020, \"Comp3 Ratio\", \"SDKCQ_COMP3_RATIO\", 0, 0, 19, INTEGER1x5),\n Node:new(0x0021, \"Comp3 Output Gain\", \"SDKCQ_COMP3_POSTGAIN\", 0, 0, 24, INTEGER1x5),\n Node:new(0x0022, \"EQ3 Switch\", \"SDKCQ_EQ3_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0023, \"EQ3 Low Freq\", \"SDKCQ_EQ3_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0024, \"EQ3 Low Gain\", \"SDKCQ_EQ3_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0025, \"EQ3 Mid Freq\", \"SDKCQ_EQ3_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0026, \"EQ3 Mid Gain\", \"SDKCQ_EQ3_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0027, \"EQ3 Mid Q\", \"SDKCQ_EQ3_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0028, \"EQ3 High Freq\", \"SDKCQ_EQ3_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0029, \"EQ3 High Gain\", \"SDKCQ_EQ3_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x002A, \"Comp4 Switch\", \"SDKCQ_COMP4_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x002B, \"Comp4 Attack Time\", \"SDKCQ_COMP4_ATTACK\", 0, 0, 31, INTEGER1x5),\n Node:new(0x002C, \"Comp4 Release Time\", \"SDKCQ_COMP4_RELEASE\", 0, 0, 23, INTEGER1x5),\n Node:new(0x002D, \"Comp4 Threshold\", \"SDKCQ_COMP4_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x002E, \"Comp4 Ratio\", \"SDKCQ_COMP4_RATIO\", 0, 0, 19, INTEGER1x5),\n Node:new(0x002F, \"Comp4 Output Gain\", \"SDKCQ_COMP4_POSTGAIN\", 0, 0, 24, INTEGER1x5),\n Node:new(0x0030, \"EQ4 Switch\", \"SDKCQ_EQ4_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0031, \"EQ4 Low Freq\", \"SDKCQ_EQ4_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0032, \"EQ4 Low Gain\", \"SDKCQ_EQ4_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0033, \"EQ4 Mid Freq\", \"SDKCQ_EQ4_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0034, \"EQ4 Mid Gain\", \"SDKCQ_EQ4_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0035, \"EQ4 Mid Q\", \"SDKCQ_EQ4_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0036, \"EQ4 High Freq\", \"SDKCQ_EQ4_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0037, \"EQ4 High Gain\", \"SDKCQ_EQ4_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0038, \"Comp5 Switch\", \"SDKCQ_COMP5_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0039, \"Comp5 Attack Time\", \"SDKCQ_COMP5_ATTACK\", 0, 0, 31, INTEGER1x5),\n Node:new(0x003A, \"Comp5 Release Time\", \"SDKCQ_COMP5_RELEASE\", 0, 0, 23, INTEGER1x5),\n Node:new(0x003B, \"Comp5 Threshold\", \"SDKCQ_COMP5_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x003C, \"Comp5 Ratio\", \"SDKCQ_COMP5_RATIO\", 0, 0, 19, INTEGER1x5),\n Node:new(0x003D, \"Comp5 Output Gain\", \"SDKCQ_COMP5_POSTGAIN\", 0, 0, 24, INTEGER1x5),\n Node:new(0x003E, \"EQ5 Switch\", \"SDKCQ_EQ5_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x003F, \"EQ5 Low Freq\", \"SDKCQ_EQ5_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0040, \"EQ5 Low Gain\", \"SDKCQ_EQ5_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0041, \"EQ5 Mid Freq\", \"SDKCQ_EQ5_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0042, \"EQ5 Mid Gain\", \"SDKCQ_EQ5_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0043, \"EQ5 Mid Q\", \"SDKCQ_EQ5_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0044, \"EQ5 High Freq\", \"SDKCQ_EQ5_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0045, \"EQ5 High Gain\", \"SDKCQ_EQ5_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0046, \"Comp6 Switch\", \"SDKCQ_COMP6_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x0047, \"Comp6 Attack Time\", \"SDKCQ_COMP6_ATTACK\", 0, 0, 31, INTEGER1x5),\n Node:new(0x0048, \"Comp6 Release Time\", \"SDKCQ_COMP6_RELEASE\", 0, 0, 23, INTEGER1x5),\n Node:new(0x0049, \"Comp6 Threshold\", \"SDKCQ_COMP6_THRESHOLD\", 0, 0, 127, INTEGER1x7),\n Node:new(0x004A, \"Comp6 Ratio\", \"SDKCQ_COMP6_RATIO\", 0, 0, 19, INTEGER1x5),\n Node:new(0x004B, \"Comp6 Output Gain\", \"SDKCQ_COMP6_POSTGAIN\", 0, 0, 24, INTEGER1x5),\n Node:new(0x004C, \"EQ6 Switch\", \"SDKCQ_EQ6_SW\", 0, 0, 1, INTEGER1x1),\n Node:new(0x004D, \"EQ6 Low Freq\", \"SDKCQ_EQ6_LOWFREQ\", 0, 0, 1, INTEGER1x1),\n Node:new(0x004E, \"EQ6 Low Gain\", \"SDKCQ_EQ6_LOWGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x004F, \"EQ6 Mid Freq\", \"SDKCQ_EQ6_MIDFREQ\", 0, 0, 16, INTEGER1x5),\n Node:new(0x0050, \"EQ6 Mid Gain\", \"SDKCQ_EQ6_MIDGAIN\", 15, 0, 30, INTEGER1x5),\n Node:new(0x0051, \"EQ6 Mid Q\", \"SDKCQ_EQ6_MIDQ\", 0, 0, 4, INTEGER1x3),\n Node:new(0x0052, \"EQ6 High Freq\", \"SDKCQ_EQ6_HIGHFREQ\", 0, 0, 2, INTEGER1x2),\n Node:new(0x0053, \"EQ6 High Gain\", \"SDKCQ_EQ6_HIGHGAIN\", 15, 0, 30, INTEGER1x5),\n}\n\nlocal KN = -- Kit Note\n{\n Node:new(0x0000, \"Inst Number\", \"SDKN_INST_NUM\", 1, 0, 512, INTEGER4x4),\n Node:new(0x0004, \"Level\", \"SDKN_INST_LEVEL\", 100, 0, 127, INTEGER1x7),\n Node:new(0x0005, \"Pan\", \"SDKN_INST_PAN\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0006, \"Chorus Send Level\", \"SDKN_INST_CHO_SEND\", 0, 0, 127, INTEGER1x7),\n Node:new(0x0007, \"Reverb Send Level\", \"SDKN_INST_REV_SEND\", 64, 0, 127, INTEGER1x7),\n Node:new(0x0008, \"Tune\", \"SDKN_PIT_FINE\", 128, 8, 248, INTEGER4x4),\n Node:new(0x000C, \"Attack\", \"SDKN_ATTACK\", 100, 0, 100, INTEGER1x7),\n Node:new(0x000D, \"Decay\", \"SDKN_DECAY\", 64, 1, 64, INTEGER1x7),\n Node:new(0x000E, \"Brilliance\", \"SDKN_BRIGHTNESS\", 64, 49, 76, INTEGER1x5),\n Node:new(0x000F, \"Variation\", \"SDKN_FLAM_CTRL\", 0, 0, 7, INTEGER1x7),\n Node:new(0x0010, \"Dynamic Range\", \"SDKN_DYN_RANG\", 32, 0, 63, INTEGER1x6),\n Node:new(0x0011, \"Stereo Width\", \"SDKN_STEREO_WIDTH\", 127, 0, 127, INTEGER1x7),\n Node:new(0x0012, \"Output Assign\", \"SDKN_OUTPUT_ASSIGN\", 0, 0, 6, INTEGER1x3),\n}\n\nlocal PAT = -- PCM Tone\n{\n Node:new_parent(0x0, 0, \"PCM Tone Common\", \"_PC\", PC),\n Node:new_parent(0x200, 0, \"PCM Tone Common MFX\", \"_PF\", PF),\n Node:new_parent(0x1000, 110, \"PCM Tone PMT (Partial Mix Table)\", \"_PX\", PX),\n Node:new_parent(0x2000, 151, \"PCM Tone Partial (Partial 1)\", \"_PT1\", PT),\n Node:new_parent(0x2200, 289, \"PCM Tone Partial (Partial 2)\", \"_PT2\", PT),\n Node:new_parent(0x2400, 427, \"PCM Tone Partial (Partial 3)\", \"_PT3\", PT),\n Node:new_parent(0x2600, 565, \"PCM Tone Partial (Partial 4)\", \"_PT4\", PT),\n Node:new_parent(0x3000, 703, \"PCM Tone Common 2\", \"_PC2\", PC2)\n}\n\nlocal RHY = -- Rhythm Set\n{\n Node:new_parent(0x0, 0, \"Rhythm Set Common\", \"_RC\", RC),\n Node:new_parent(0x200, 2, \"Rhythm Set Common MFX\", \"_RF\", RF),\n Node:new_parent(0x800, 50, \"Rhythm Set Common Comp/EQ\", \"_RCQ\", RCQ),\n Node:new_parent(0x1000, 134, \"Rhythm Set Partial (Key # 21)\", \"_RT21\", RT),\n Node:new_parent(0x1200, 279, \"Rhythm Set Partial (Key # 22)\", \"_RT22\", RT),\n Node:new_parent(0x1400, 424, \"Rhythm Set Partial (Key # 23)\", \"_RT23\", RT),\n Node:new_parent(0x1600, 569, \"Rhythm Set Partial (Key # 24)\", \"_RT24\", RT),\n Node:new_parent(0x1800, 714, \"Rhythm Set Partial (Key # 25)\", \"_RT25\", RT),\n Node:new_parent(0x1A00, 859, \"Rhythm Set Partial (Key # 26)\", \"_RT26\", RT),\n Node:new_parent(0x1C00, 1004, \"Rhythm Set Partial (Key # 27)\", \"_RT27\", RT),\n Node:new_parent(0x1E00, 1149, \"Rhythm Set Partial (Key # 28)\", \"_RT28\", RT),\n Node:new_parent(0x2000, 1294, \"Rhythm Set Partial (Key # 29)\", \"_RT29\", RT),\n Node:new_parent(0x2200, 1439, \"Rhythm Set Partial (Key # 30)\", \"_RT30\", RT),\n Node:new_parent(0x2400, 1584, \"Rhythm Set Partial (Key # 31)\", \"_RT31\", RT),\n Node:new_parent(0x2600, 1729, \"Rhythm Set Partial (Key # 32)\", \"_RT32\", RT),\n Node:new_parent(0x2800, 1874, \"Rhythm Set Partial (Key # 33)\", \"_RT33\", RT),\n Node:new_parent(0x2A00, 2019, \"Rhythm Set Partial (Key # 34)\", \"_RT34\", RT),\n Node:new_parent(0x2C00, 2164, \"Rhythm Set Partial (Key # 35)\", \"_RT35\", RT),\n Node:new_parent(0x2E00, 2309, \"Rhythm Set Partial (Key # 36)\", \"_RT36\", RT),\n Node:new_parent(0x3000, 2454, \"Rhythm Set Partial (Key # 37)\", \"_RT37\", RT),\n Node:new_parent(0x3200, 2599, \"Rhythm Set Partial (Key # 38)\", \"_RT38\", RT),\n Node:new_parent(0x3400, 2744, \"Rhythm Set Partial (Key # 39)\", \"_RT39\", RT),\n Node:new_parent(0x3600, 2889, \"Rhythm Set Partial (Key # 40)\", \"_RT40\", RT),\n Node:new_parent(0x3800, 3034, \"Rhythm Set Partial (Key # 41)\", \"_RT41\", RT),\n Node:new_parent(0x3A00, 3179, \"Rhythm Set Partial (Key # 42)\", \"_RT42\", RT),\n Node:new_parent(0x3C00, 3324, \"Rhythm Set Partial (Key # 43)\", \"_RT43\", RT),\n Node:new_parent(0x3E00, 3469, \"Rhythm Set Partial (Key # 44)\", \"_RT44\", RT),\n Node:new_parent(0x4000, 3614, \"Rhythm Set Partial (Key # 45)\", \"_RT45\", RT),\n Node:new_parent(0x4200, 3759, \"Rhythm Set Partial (Key # 46)\", \"_RT46\", RT),\n Node:new_parent(0x4400, 3904, \"Rhythm Set Partial (Key # 47)\", \"_RT47\", RT),\n Node:new_parent(0x4600, 4049, \"Rhythm Set Partial (Key # 48)\", \"_RT48\", RT),\n Node:new_parent(0x4800, 4194, \"Rhythm Set Partial (Key # 49)\", \"_RT49\", RT),\n Node:new_parent(0x4A00, 4339, \"Rhythm Set Partial (Key # 50)\", \"_RT50\", RT),\n Node:new_parent(0x4C00, 4484, \"Rhythm Set Partial (Key # 51)\", \"_RT51\", RT),\n Node:new_parent(0x4E00, 4629, \"Rhythm Set Partial (Key # 52)\", \"_RT52\", RT),\n Node:new_parent(0x5000, 4774, \"Rhythm Set Partial (Key # 53)\", \"_RT53\", RT),\n Node:new_parent(0x5200, 4919, \"Rhythm Set Partial (Key # 54)\", \"_RT54\", RT),\n Node:new_parent(0x5400, 5064, \"Rhythm Set Partial (Key # 55)\", \"_RT55\", RT),\n Node:new_parent(0x5600, 5209, \"Rhythm Set Partial (Key # 56)\", \"_RT56\", RT),\n Node:new_parent(0x5800, 5354, \"Rhythm Set Partial (Key # 57)\", \"_RT57\", RT),\n Node:new_parent(0x5A00, 5499, \"Rhythm Set Partial (Key # 58)\", \"_RT58\", RT),\n Node:new_parent(0x5C00, 5644, \"Rhythm Set Partial (Key # 59)\", \"_RT59\", RT),\n Node:new_parent(0x5E00, 5789, \"Rhythm Set Partial (Key # 60)\", \"_RT60\", RT),\n Node:new_parent(0x6000, 5934, \"Rhythm Set Partial (Key # 61)\", \"_RT61\", RT),\n Node:new_parent(0x6200, 6079, \"Rhythm Set Partial (Key # 62)\", \"_RT62\", RT),\n Node:new_parent(0x6400, 6224, \"Rhythm Set Partial (Key # 63)\", \"_RT63\", RT),\n Node:new_parent(0x6600, 6369, \"Rhythm Set Partial (Key # 64)\", \"_RT64\", RT),\n Node:new_parent(0x6800, 6514, \"Rhythm Set Partial (Key # 65)\", \"_RT65\", RT),\n Node:new_parent(0x6A00, 6659, \"Rhythm Set Partial (Key # 66)\", \"_RT66\", RT),\n Node:new_parent(0x6C00, 6804, \"Rhythm Set Partial (Key # 67)\", \"_RT67\", RT),\n Node:new_parent(0x6E00, 6949, \"Rhythm Set Partial (Key # 68)\", \"_RT68\", RT),\n Node:new_parent(0x7000, 7094, \"Rhythm Set Partial (Key # 69)\", \"_RT69\", RT),\n Node:new_parent(0x7200, 7239, \"Rhythm Set Partial (Key # 70)\", \"_RT70\", RT),\n Node:new_parent(0x7400, 7384, \"Rhythm Set Partial (Key # 71)\", \"_RT71\", RT),\n Node:new_parent(0x7600, 7529, \"Rhythm Set Partial (Key # 72)\", \"_RT72\", RT),\n Node:new_parent(0x7800, 7674, \"Rhythm Set Partial (Key # 73)\", \"_RT73\", RT),\n Node:new_parent(0x7A00, 7819, \"Rhythm Set Partial (Key # 74)\", \"_RT74\", RT),\n Node:new_parent(0x7C00, 7964, \"Rhythm Set Partial (Key # 75)\", \"_RT75\", RT),\n Node:new_parent(0x7E00, 8109, \"Rhythm Set Partial (Key # 76)\", \"_RT76\", RT),\n Node:new_parent(0x10000, 8254, \"Rhythm Set Partial (Key # 77)\", \"_RT77\", RT),\n Node:new_parent(0x10200, 8399, \"Rhythm Set Partial (Key # 78)\", \"_RT78\", RT),\n Node:new_parent(0x10400, 8544, \"Rhythm Set Partial (Key # 79)\", \"_RT79\", RT),\n Node:new_parent(0x10600, 8689, \"Rhythm Set Partial (Key # 80)\", \"_RT80\", RT),\n Node:new_parent(0x10800, 8834, \"Rhythm Set Partial (Key # 81)\", \"_RT81\", RT),\n Node:new_parent(0x10A00, 8979, \"Rhythm Set Partial (Key # 82)\", \"_RT82\", RT),\n Node:new_parent(0x10C00, 9124, \"Rhythm Set Partial (Key # 83)\", \"_RT83\", RT),\n Node:new_parent(0x10E00, 9269, \"Rhythm Set Partial (Key # 84)\", \"_RT84\", RT),\n Node:new_parent(0x11000, 9414, \"Rhythm Set Partial (Key # 85)\", \"_RT85\", RT),\n Node:new_parent(0x11200, 9559, \"Rhythm Set Partial (Key # 86)\", \"_RT86\", RT),\n Node:new_parent(0x11400, 9704, \"Rhythm Set Partial (Key # 87)\", \"_RT87\", RT),\n Node:new_parent(0x11600, 9849, \"Rhythm Set Partial (Key # 88)\", \"_RT88\", RT),\n Node:new_parent(0x11800, 9994, \"Rhythm Set Partial (Key # 89)\", \"_RT89\", RT),\n Node:new_parent(0x11A00, 10139, \"Rhythm Set Partial (Key # 90)\", \"_RT90\", RT),\n Node:new_parent(0x11C00, 10284, \"Rhythm Set Partial (Key # 91)\", \"_RT91\", RT),\n Node:new_parent(0x11E00, 10429, \"Rhythm Set Partial (Key # 92)\", \"_RT92\", RT),\n Node:new_parent(0x12000, 10574, \"Rhythm Set Partial (Key # 93)\", \"_RT93\", RT),\n Node:new_parent(0x12200, 10719, \"Rhythm Set Partial (Key # 94)\", \"_RT94\", RT),\n Node:new_parent(0x12400, 10864, \"Rhythm Set Partial (Key # 95)\", \"_RT95\", RT),\n Node:new_parent(0x12600, 11009, \"Rhythm Set Partial (Key # 96)\", \"_RT96\", RT),\n Node:new_parent(0x12800, 11154, \"Rhythm Set Partial (Key # 97)\", \"_RT97\", RT),\n Node:new_parent(0x12A00, 11299, \"Rhythm Set Partial (Key # 98)\", \"_RT98\", RT),\n Node:new_parent(0x12C00, 11444, \"Rhythm Set Partial (Key # 99)\", \"_RT99\", RT),\n Node:new_parent(0x12E00, 11589, \"Rhythm Set Partial (Key # 100)\", \"_RT100\", RT),\n Node:new_parent(0x13000, 11734, \"Rhythm Set Partial (Key # 101)\", \"_RT101\", RT),\n Node:new_parent(0x13200, 11879, \"Rhythm Set Partial (Key # 102)\", \"_RT102\", RT),\n Node:new_parent(0x13400, 12024, \"Rhythm Set Partial (Key # 103)\", \"_RT103\", RT),\n Node:new_parent(0x13600, 12169, \"Rhythm Set Partial (Key # 104)\", \"_RT104\", RT),\n Node:new_parent(0x13800, 12314, \"Rhythm Set Partial (Key # 105)\", \"_RT105\", RT),\n Node:new_parent(0x13A00, 12459, \"Rhythm Set Partial (Key # 106)\", \"_RT106\", RT),\n Node:new_parent(0x13C00, 12604, \"Rhythm Set Partial (Key # 107)\", \"_RT107\", RT),\n Node:new_parent(0x13E00, 12749, \"Rhythm Set Partial (Key # 108)\", \"_RT108\", RT),\n Node:new_parent(0x20000, 12894, \"Rhythm Set Common 2\", \"_RC2\", RC2),\n}\n\nlocal SHPAT = -- Synth Tone\n{\n Node:new_parent(0x0, 0, \"Synth Tone Common\", \"_SHPC\", SHPC),\n Node:new_parent(0x200, 25, \"Synth Tone MFX\", \"_SHPF\", SHPF),\n Node:new_parent(0x2000, 73, \"Synth Tone Partial (1)\", \"_SHPT1\", SHPT),\n Node:new_parent(0x2100, 127, \"Synth Tone Partial (2)\", \"_SHPT2\", SHPT),\n Node:new_parent(0x2200, 181, \"Synth Tone Partial (3)\", \"_SHPT3\", SHPT),\n Node:new_parent(0x5000, 235, \"Synth Tone Modify\", \"_SHPTM\", SHPTM)\n}\n\nlocal SNTONE = -- SuperNATURAL Tone\n{\n Node:new_parent(0x0, 0, \"SN Tone Common\", \"_SNTC\", SNTC),\n Node:new_parent(0x200, 0, \"SN Tone MFX\", \"_SNTF\", SNTF)\n}\n\nlocal KIT = -- Drum Kit\n{\n Node:new_parent(0x0, 0, \"Drum Kit Common\", \"_KC\", KC),\n Node:new_parent(0x200, 5, \"Drum Kit MFX\", \"_KF\", KF),\n Node:new_parent(0x800, 53, \"Drum Kit Common Comp/EQ\", \"_KCQ\", KCQ),\n Node:new_parent(0x1000, 137, \"Drum Kit Note (Key # 27)\", \"_KN27\", KN),\n Node:new_parent(0x1100, 150, \"Drum Kit Note (Key # 28)\", \"_KN28\", KN),\n Node:new_parent(0x1200, 163, \"Drum Kit Note (Key # 29)\", \"_KN29\", KN),\n Node:new_parent(0x1300, 176, \"Drum Kit Note (Key # 30)\", \"_KN30\", KN),\n Node:new_parent(0x1400, 189, \"Drum Kit Note (Key # 31)\", \"_KN31\", KN),\n Node:new_parent(0x1500, 202, \"Drum Kit Note (Key # 32)\", \"_KN32\", KN),\n Node:new_parent(0x1600, 215, \"Drum Kit Note (Key # 33)\", \"_KN33\", KN),\n Node:new_parent(0x1700, 228, \"Drum Kit Note (Key # 34)\", \"_KN34\", KN),\n Node:new_parent(0x1800, 241, \"Drum Kit Note (Key # 35)\", \"_KN35\", KN),\n Node:new_parent(0x1900, 254, \"Drum Kit Note (Key # 36)\", \"_KN36\", KN),\n Node:new_parent(0x1A00, 267, \"Drum Kit Note (Key # 37)\", \"_KN37\", KN),\n Node:new_parent(0x1B00, 280, \"Drum Kit Note (Key # 38)\", \"_KN38\", KN),\n Node:new_parent(0x1C00, 293, \"Drum Kit Note (Key # 39)\", \"_KN39\", KN),\n Node:new_parent(0x1D00, 306, \"Drum Kit Note (Key # 40)\", \"_KN40\", KN),\n Node:new_parent(0x1E00, 319, \"Drum Kit Note (Key # 41)\", \"_KN41\", KN),\n Node:new_parent(0x1F00, 332, \"Drum Kit Note (Key # 42)\", \"_KN42\", KN),\n Node:new_parent(0x2000, 345, \"Drum Kit Note (Key # 43)\", \"_KN43\", KN),\n Node:new_parent(0x2100, 358, \"Drum Kit Note (Key # 44)\", \"_KN44\", KN),\n Node:new_parent(0x2200, 371, \"Drum Kit Note (Key # 45)\", \"_KN45\", KN),\n Node:new_parent(0x2300, 384, \"Drum Kit Note (Key # 46)\", \"_KN46\", KN),\n Node:new_parent(0x2400, 397, \"Drum Kit Note (Key # 47)\", \"_KN47\", KN),\n Node:new_parent(0x2500, 410, \"Drum Kit Note (Key # 48)\", \"_KN48\", KN),\n Node:new_parent(0x2600, 423, \"Drum Kit Note (Key # 49)\", \"_KN49\", KN),\n Node:new_parent(0x2700, 436, \"Drum Kit Note (Key # 50)\", \"_KN50\", KN),\n Node:new_parent(0x2800, 449, \"Drum Kit Note (Key # 51)\", \"_KN51\", KN),\n Node:new_parent(0x2900, 462, \"Drum Kit Note (Key # 52)\", \"_KN52\", KN),\n Node:new_parent(0x2A00, 475, \"Drum Kit Note (Key # 53)\", \"_KN53\", KN),\n Node:new_parent(0x2B00, 488, \"Drum Kit Note (Key # 54)\", \"_KN54\", KN),\n Node:new_parent(0x2C00, 501, \"Drum Kit Note (Key # 55)\", \"_KN55\", KN),\n Node:new_parent(0x2D00, 514, \"Drum Kit Note (Key # 56)\", \"_KN56\", KN),\n Node:new_parent(0x2E00, 527, \"Drum Kit Note (Key # 57)\", \"_KN57\", KN),\n Node:new_parent(0x2F00, 540, \"Drum Kit Note (Key # 58)\", \"_KN58\", KN),\n Node:new_parent(0x3000, 553, \"Drum Kit Note (Key # 59)\", \"_KN59\", KN),\n Node:new_parent(0x3100, 566, \"Drum Kit Note (Key # 60)\", \"_KN60\", KN),\n Node:new_parent(0x3200, 579, \"Drum Kit Note (Key # 61)\", \"_KN61\", KN),\n Node:new_parent(0x3300, 592, \"Drum Kit Note (Key # 62)\", \"_KN62\", KN),\n Node:new_parent(0x3400, 605, \"Drum Kit Note (Key # 63)\", \"_KN63\", KN),\n Node:new_parent(0x3500, 618, \"Drum Kit Note (Key # 64)\", \"_KN64\", KN),\n Node:new_parent(0x3600, 631, \"Drum Kit Note (Key # 65)\", \"_KN65\", KN),\n Node:new_parent(0x3700, 644, \"Drum Kit Note (Key # 66)\", \"_KN66\", KN),\n Node:new_parent(0x3800, 657, \"Drum Kit Note (Key # 67)\", \"_KN67\", KN),\n Node:new_parent(0x3900, 670, \"Drum Kit Note (Key # 68)\", \"_KN68\", KN),\n Node:new_parent(0x3A00, 683, \"Drum Kit Note (Key # 69)\", \"_KN69\", KN),\n Node:new_parent(0x3B00, 696, \"Drum Kit Note (Key # 70)\", \"_KN70\", KN),\n Node:new_parent(0x3C00, 709, \"Drum Kit Note (Key # 71)\", \"_KN71\", KN),\n Node:new_parent(0x3D00, 722, \"Drum Kit Note (Key # 72)\", \"_KN72\", KN),\n Node:new_parent(0x3E00, 735, \"Drum Kit Note (Key # 73)\", \"_KN73\", KN),\n Node:new_parent(0x3F00, 748, \"Drum Kit Note (Key # 74)\", \"_KN74\", KN),\n Node:new_parent(0x4000, 761, \"Drum Kit Note (Key # 75)\", \"_KN75\", KN),\n Node:new_parent(0x4100, 774, \"Drum Kit Note (Key # 76)\", \"_KN76\", KN),\n Node:new_parent(0x4200, 787, \"Drum Kit Note (Key # 77)\", \"_KN77\", KN),\n Node:new_parent(0x4300, 800, \"Drum Kit Note (Key # 78)\", \"_KN78\", KN),\n Node:new_parent(0x4400, 813, \"Drum Kit Note (Key # 79)\", \"_KN79\", KN),\n Node:new_parent(0x4500, 826, \"Drum Kit Note (Key # 80)\", \"_KN80\", KN),\n Node:new_parent(0x4600, 839, \"Drum Kit Note (Key # 81)\", \"_KN81\", KN),\n Node:new_parent(0x4700, 852, \"Drum Kit Note (Key # 82)\", \"_KN82\", KN),\n Node:new_parent(0x4800, 865, \"Drum Kit Note (Key # 83)\", \"_KN83\", KN),\n Node:new_parent(0x4900, 878, \"Drum Kit Note (Key # 84)\", \"_KN84\", KN),\n Node:new_parent(0x4A00, 891, \"Drum Kit Note (Key # 85)\", \"_KN85\", KN),\n Node:new_parent(0x4B00, 904, \"Drum Kit Note (Key # 86)\", \"_KN86\", KN),\n Node:new_parent(0x4C00, 917, \"Drum Kit Note (Key # 87)\", \"_KN87\", KN),\n Node:new_parent(0x4D00, 930, \"Drum Kit Note (Key # 88)\", \"_KN88\", KN),\n}\n\nlocal SETUP =\n{\n Node:new_parent(0x0, 0, \"Setup\", \"_STP\", STP),\n}\n\nlocal SYS =\n{\n Node:new_parent(0x0, 0, \"System Common\", \"_SC\", SC),\n}\n\nlocal PRF = -- Studio Set\n{\n Node:new_parent(0x0, 0, \"Studio Set Common\", \"_FC\", FC),\n Node:new_parent(0x400, 51, \"Studio Set Common Chorus\", \"_FH\", FH),\n Node:new_parent(0x600, 75, \"Studio Set Common Reverb\", \"_FV\", FV),\n Node:new_parent(0x800, 102, \"Studio Set Common RSS\", \"_FRSS\", FRSS),\n Node:new_parent(0x900, 115, \"Studio Set Mastering EQ\", \"_FMEQ\", FMEQ),\n Node:new_parent(0x1000, 122, \"Studio Set MIDI (Channel 1)\", \"_FM1\", FM),\n Node:new_parent(0x1100, 123, \"Studio Set MIDI (Channel 2)\", \"_FM2\", FM),\n Node:new_parent(0x1200, 124, \"Studio Set MIDI (Channel 3)\", \"_FM3\", FM),\n Node:new_parent(0x1300, 125, \"Studio Set MIDI (Channel 4)\", \"_FM4\", FM),\n Node:new_parent(0x1400, 126, \"Studio Set MIDI (Channel 5)\", \"_FM5\", FM),\n Node:new_parent(0x1500, 127, \"Studio Set MIDI (Channel 6)\", \"_FM6\", FM),\n Node:new_parent(0x1600, 128, \"Studio Set MIDI (Channel 7)\", \"_FM7\", FM),\n Node:new_parent(0x1700, 129, \"Studio Set MIDI (Channel 8)\", \"_FM8\", FM),\n Node:new_parent(0x1800, 130, \"Studio Set MIDI (Channel 9)\", \"_FM9\", FM),\n Node:new_parent(0x1900, 131, \"Studio Set MIDI (Channel 10)\", \"_FM10\", FM),\n Node:new_parent(0x1A00, 132, \"Studio Set MIDI (Channel 11)\", \"_FM11\", FM),\n Node:new_parent(0x1B00, 133, \"Studio Set MIDI (Channel 12)\", \"_FM12\", FM),\n Node:new_parent(0x1C00, 134, \"Studio Set MIDI (Channel 13)\", \"_FM13\", FM),\n Node:new_parent(0x1D00, 135, \"Studio Set MIDI (Channel 14)\", \"_FM14\", FM),\n Node:new_parent(0x1E00, 136, \"Studio Set MIDI (Channel 15)\", \"_FM15\", FM),\n Node:new_parent(0x1F00, 137, \"Studio Set MIDI (Channel 16)\", \"_FM16\", FM),\n Node:new_parent(0x2000, 138, \"Studio Set Part (Part 1)\", \"_FP1\", FP),\n Node:new_parent(0x2100, 208, \"Studio Set Part (Part 2)\", \"_FP2\", FP),\n Node:new_parent(0x2200, 278, \"Studio Set Part (Part 3)\", \"_FP3\", FP),\n Node:new_parent(0x2300, 348, \"Studio Set Part (Part 4)\", \"_FP4\", FP),\n Node:new_parent(0x2400, 418, \"Studio Set Part (Part 5)\", \"_FP5\", FP),\n Node:new_parent(0x2500, 488, \"Studio Set Part (Part 6)\", \"_FP6\", FP),\n Node:new_parent(0x2600, 558, \"Studio Set Part (Part 7)\", \"_FP7\", FP),\n Node:new_parent(0x2700, 628, \"Studio Set Part (Part 8)\", \"_FP8\", FP),\n Node:new_parent(0x2800, 698, \"Studio Set Part (Part 9)\", \"_FP9\", FP),\n Node:new_parent(0x2900, 768, \"Studio Set Part (Part 10)\", \"_FP10\", FP),\n Node:new_parent(0x2A00, 838, \"Studio Set Part (Part 11)\", \"_FP11\", FP),\n Node:new_parent(0x2B00, 908, \"Studio Set Part (Part 12)\", \"_FP12\", FP),\n Node:new_parent(0x2C00, 978, \"Studio Set Part (Part 13)\", \"_FP13\", FP),\n Node:new_parent(0x2D00, 1048, \"Studio Set Part (Part 14)\", \"_FP14\", FP),\n Node:new_parent(0x2E00, 1118, \"Studio Set Part (Part 15)\", \"_FP15\", FP),\n Node:new_parent(0x2F00, 1188, \"Studio Set Part (Part 16)\", \"_FP16\", FP),\n Node:new_parent(0x5000, 1258, \"Studio Set Part EQ (Part 1)\", \"_FPEQ1\", FPEQ),\n Node:new_parent(0x5100, 1266, \"Studio Set Part EQ (Part 2)\", \"_FPEQ2\", FPEQ),\n Node:new_parent(0x5200, 1274, \"Studio Set Part EQ (Part 3)\", \"_FPEQ3\", FPEQ),\n Node:new_parent(0x5300, 1282, \"Studio Set Part EQ (Part 4)\", \"_FPEQ4\", FPEQ),\n Node:new_parent(0x5400, 1290, \"Studio Set Part EQ (Part 5)\", \"_FPEQ5\", FPEQ),\n Node:new_parent(0x5500, 1298, \"Studio Set Part EQ (Part 6)\", \"_FPEQ6\", FPEQ),\n Node:new_parent(0x5600, 1306, \"Studio Set Part EQ (Part 7)\", \"_FPEQ7\", FPEQ),\n Node:new_parent(0x5700, 1314, \"Studio Set Part EQ (Part 8)\", \"_FPEQ8\", FPEQ),\n Node:new_parent(0x5800, 1322, \"Studio Set Part EQ (Part 9)\", \"_FPEQ9\", FPEQ),\n Node:new_parent(0x5900, 1330, \"Studio Set Part EQ (Part 10)\", \"_FPEQ10\", FPEQ),\n Node:new_parent(0x5A00, 1338, \"Studio Set Part EQ (Part 11)\", \"_FPEQ11\", FPEQ),\n Node:new_parent(0x5B00, 1346, \"Studio Set Part EQ (Part 12)\", \"_FPEQ12\", FPEQ),\n Node:new_parent(0x5C00, 1354, \"Studio Set Part EQ (Part 13)\", \"_FPEQ13\", FPEQ),\n Node:new_parent(0x5D00, 1362, \"Studio Set Part EQ (Part 14)\", \"_FPEQ14\", FPEQ),\n Node:new_parent(0x5E00, 1370, \"Studio Set Part EQ (Part 15)\", \"_FPEQ15\", FPEQ),\n Node:new_parent(0x5F00, 1378, \"Studio Set Part EQ (Part 16)\", \"_FPEQ16\", FPEQ),\n}\n\nlocal FPART = -- Temporary Tone\n{\n Node:new_parent(0x0, 0, \"Temporary PCM Tone\", \"_PAT\", PAT),\n Node:new_parent(0x10000, 743, \"Temporary Synth Tone\", \"_SHPAT\", SHPAT),\n Node:new_parent(0x20000, 1011, \"Temporary SuperNATURAL Tone\", \"_SNTONE\", SNTONE),\n Node:new_parent(0x30000, 1109, \"Temporary Drum Kit\", \"_KIT\", KIT),\n Node:new_parent(0x100000, 2052, \"Temporary Rhythm Set\", \"_RHY\", RHY),\n}\n\nlocal EDITOR_NOP = {}\n\nI7ROOT_NODE =\n{\n Node:new_parent(0x1000000, 0, \"Setup\", \"_SETUP\", SETUP),\n Node:new_parent(0x2000000, 56, \"System\", \"_SYS\", SYS),\n Node:new_parent(0xF000000, 97, \"(for editor nop) \", \"_EDITOR_NOP\", EDITOR_NOP, 0),\n Node:new_parent(0x18000000, 97, \"Temporary Studio Set\", \"_PRF\", PRF),\n Node:new_parent(0x19000000, 1483, \"Temporary Tone (Studio Mode Part 1)\", \"_FPART1\", FPART),\n Node:new_parent(0x19200000, 16463, \"Temporary Tone (Studio Mode Part 2)\", \"_FPART2\", FPART),\n Node:new_parent(0x19400000, 31443, \"Temporary Tone (Studio Mode Part 3)\", \"_FPART3\", FPART),\n Node:new_parent(0x19600000, 46423, \"Temporary Tone (Studio Mode Part 4)\", \"_FPART4\", FPART),\n Node:new_parent(0x1A000000, 61403, \"Temporary Tone (Studio Mode Part 5)\", \"_FPART5\", FPART),\n Node:new_parent(0x1A200000, 76383, \"Temporary Tone (Studio Mode Part 6)\", \"_FPART6\", FPART),\n Node:new_parent(0x1A400000, 91363, \"Temporary Tone (Studio Mode Part 7)\", \"_FPART7\", FPART),\n Node:new_parent(0x1A600000, 106343, \"Temporary Tone (Studio Mode Part 8)\", \"_FPART8\", FPART),\n Node:new_parent(0x1B000000, 121323, \"Temporary Tone (Studio Mode Part 9)\", \"_FPART9\", FPART),\n Node:new_parent(0x1B200000, 136303, \"Temporary Tone (Studio Mode Part 10)\", \"_FPART10\", FPART),\n Node:new_parent(0x1B400000, 151283, \"Temporary Tone (Studio Mode Part 11)\", \"_FPART11\", FPART),\n Node:new_parent(0x1B600000, 166263, \"Temporary Tone (Studio Mode Part 12)\", \"_FPART12\", FPART),\n Node:new_parent(0x1C000000, 181243, \"Temporary Tone (Studio Mode Part 13)\", \"_FPART13\", FPART),\n Node:new_parent(0x1C200000, 196223, \"Temporary Tone (Studio Mode Part 14)\", \"_FPART14\", FPART),\n Node:new_parent(0x1C400000, 211203, \"Temporary Tone (Studio Mode Part 15)\", \"_FPART15\", FPART),\n Node:new_parent(0x1C600000, 226183, \"Temporary Tone (Studio Mode Part 16)\", \"_FPART16\", FPART),\n}\n\nlocal MODEL_ID_MAP =\n{\n [\"_SETUP\"] = 0x01000000,\n [\"_SYS\"] = 0x02000000,\n [\"_EDITOR_NOP\"] = 0x0F000000,\n [\"_PRF\"] = 0x18000000,\n [\"_FPART1\"] = 0x19000000,\n [\"_FPART2\"] = 0x19200000,\n [\"_FPART3\"] = 0x19400000,\n [\"_FPART4\"] = 0x19600000,\n [\"_FPART5\"] = 0x1A000000,\n [\"_FPART6\"] = 0x1A200000,\n [\"_FPART7\"] = 0x1A400000,\n [\"_FPART8\"] = 0x1A600000,\n [\"_FPART9\"] = 0x1B000000,\n [\"_FPART10\"] = 0x1B200000,\n [\"_FPART11\"] = 0x1B400000,\n [\"_FPART12\"] = 0x1B600000,\n [\"_FPART13\"] = 0x1C000000,\n [\"_FPART14\"] = 0x1C200000,\n [\"_FPART15\"] = 0x1C400000,\n [\"_FPART16\"] = 0x1C600000,\n\n [\"_STP\"] = 0x000000,\n\n [\"_SC\"] = 0x000000,\n\n [\"_FC\"] = 0x000000,\n [\"_FH\"] = 0x000400,\n [\"_FV\"] = 0x000600,\n [\"_FRSS\"] = 0x000800,\n [\"_FMEQ\"] = 0x000900,\n [\"_FM1\"] = 0x001000,\n [\"_FM2\"] = 0x001100,\n [\"_FM3\"] = 0x001200,\n [\"_FM4\"] = 0x001300,\n [\"_FM5\"] = 0x001400,\n [\"_FM6\"] = 0x001500,\n [\"_FM7\"] = 0x001600,\n [\"_FM8\"] = 0x001700,\n [\"_FM9\"] = 0x001800,\n [\"_FM10\"] = 0x001900,\n [\"_FM11\"] = 0x001A00,\n [\"_FM12\"] = 0x001B00,\n [\"_FM13\"] = 0x001C00,\n [\"_FM14\"] = 0x001D00,\n [\"_FM15\"] = 0x001E00,\n [\"_FM16\"] = 0x001F00,\n [\"_FP1\"] = 0x002000,\n [\"_FP2\"] = 0x002100,\n [\"_FP3\"] = 0x002200,\n [\"_FP4\"] = 0x002300,\n [\"_FP5\"] = 0x002400,\n [\"_FP6\"] = 0x002500,\n [\"_FP7\"] = 0x002600,\n [\"_FP8\"] = 0x002700,\n [\"_FP9\"] = 0x002800,\n [\"_FP10\"] = 0x002900,\n [\"_FP11\"] = 0x002A00,\n [\"_FP12\"] = 0x002B00,\n [\"_FP13\"] = 0x002C00,\n [\"_FP14\"] = 0x002D00,\n [\"_FP15\"] = 0x002E00,\n [\"_FP16\"] = 0x002F00,\n [\"_FPEQ1\"] = 0x005000,\n [\"_FPEQ2\"] = 0x005100,\n [\"_FPEQ3\"] = 0x005200,\n [\"_FPEQ4\"] = 0x005300,\n [\"_FPEQ5\"] = 0x005400,\n [\"_FPEQ6\"] = 0x005500,\n [\"_FPEQ7\"] = 0x005600,\n [\"_FPEQ8\"] = 0x005700,\n [\"_FPEQ9\"] = 0x005800,\n [\"_FPEQ10\"] = 0x005900,\n [\"_FPEQ11\"] = 0x005A00,\n [\"_FPEQ12\"] = 0x005B00,\n [\"_FPEQ13\"] = 0x005C00,\n [\"_FPEQ14\"] = 0x005D00,\n [\"_FPEQ15\"] = 0x005E00,\n [\"_FPEQ16\"] = 0x005F00,\n\n [\"_PAT\"] = 0x000000,\n [\"_SHPAT\"] = 0x010000,\n [\"_SNTONE\"] = 0x020000,\n [\"_KIT\"] = 0x030000,\n [\"_RHY\"] = 0x100000,\n\n [\"_PC\"] = 0x000000,\n [\"_PF\"] = 0x000200,\n [\"_PX\"] = 0x001000,\n [\"_PT1\"] = 0x002000,\n [\"_PT2\"] = 0x002200,\n [\"_PT3\"] = 0x002400,\n [\"_PT4\"] = 0x002600,\n [\"_PC2\"] = 0x003000,\n\n [\"_RC\"] = 0x000000,\n [\"_RF\"] = 0x000200,\n [\"_RCQ\"] = 0x000800,\n [\"_RT21\"] = 0x001000,\n [\"_RT22\"] = 0x001200,\n [\"_RT23\"] = 0x001400,\n [\"_RT24\"] = 0x001600,\n [\"_RT25\"] = 0x001800,\n [\"_RT26\"] = 0x001A00,\n [\"_RT27\"] = 0x001C00,\n [\"_RT28\"] = 0x001E00,\n [\"_RT29\"] = 0x002000,\n [\"_RT30\"] = 0x002200,\n [\"_RT31\"] = 0x002400,\n [\"_RT32\"] = 0x002600,\n [\"_RT33\"] = 0x002800,\n [\"_RT34\"] = 0x002A00,\n [\"_RT35\"] = 0x002C00,\n [\"_RT36\"] = 0x002E00,\n [\"_RT37\"] = 0x003000,\n [\"_RT38\"] = 0x003200,\n [\"_RT39\"] = 0x003400,\n [\"_RT40\"] = 0x003600,\n [\"_RT41\"] = 0x003800,\n [\"_RT42\"] = 0x003A00,\n [\"_RT43\"] = 0x003C00,\n [\"_RT44\"] = 0x003E00,\n [\"_RT45\"] = 0x004000,\n [\"_RT46\"] = 0x004200,\n [\"_RT47\"] = 0x004400,\n [\"_RT48\"] = 0x004600,\n [\"_RT49\"] = 0x004800,\n [\"_RT50\"] = 0x004A00,\n [\"_RT51\"] = 0x004C00,\n [\"_RT52\"] = 0x004E00,\n [\"_RT53\"] = 0x005000,\n [\"_RT54\"] = 0x005200,\n [\"_RT55\"] = 0x005400,\n [\"_RT56\"] = 0x005600,\n [\"_RT57\"] = 0x005800,\n [\"_RT58\"] = 0x005A00,\n [\"_RT59\"] = 0x005C00,\n [\"_RT60\"] = 0x005E00,\n [\"_RT61\"] = 0x006000,\n [\"_RT62\"] = 0x006200,\n [\"_RT63\"] = 0x006400,\n [\"_RT64\"] = 0x006600,\n [\"_RT65\"] = 0x006800,\n [\"_RT66\"] = 0x006A00,\n [\"_RT67\"] = 0x006C00,\n [\"_RT68\"] = 0x006E00,\n [\"_RT69\"] = 0x007000,\n [\"_RT70\"] = 0x007200,\n [\"_RT71\"] = 0x007400,\n [\"_RT72\"] = 0x007600,\n [\"_RT73\"] = 0x007800,\n [\"_RT74\"] = 0x007A00,\n [\"_RT75\"] = 0x007C00,\n [\"_RT76\"] = 0x007E00,\n [\"_RT77\"] = 0x010000,\n [\"_RT78\"] = 0x010200,\n [\"_RT79\"] = 0x010400,\n [\"_RT80\"] = 0x010600,\n [\"_RT81\"] = 0x010800,\n [\"_RT82\"] = 0x010A00,\n [\"_RT83\"] = 0x010C00,\n [\"_RT84\"] = 0x010E00,\n [\"_RT85\"] = 0x011000,\n [\"_RT86\"] = 0x011200,\n [\"_RT87\"] = 0x011400,\n [\"_RT88\"] = 0x011600,\n [\"_RT89\"] = 0x011800,\n [\"_RT90\"] = 0x011A00,\n [\"_RT91\"] = 0x011C00,\n [\"_RT92\"] = 0x011E00,\n [\"_RT93\"] = 0x012000,\n [\"_RT94\"] = 0x012200,\n [\"_RT95\"] = 0x012400,\n [\"_RT96\"] = 0x012600,\n [\"_RT97\"] = 0x012800,\n [\"_RT98\"] = 0x012A00,\n [\"_RT99\"] = 0x012C00,\n [\"_RT100\"] = 0x012E00,\n [\"_RT101\"] = 0x013000,\n [\"_RT102\"] = 0x013200,\n [\"_RT103\"] = 0x013400,\n [\"_RT104\"] = 0x013600,\n [\"_RT105\"] = 0x013800,\n [\"_RT106\"] = 0x013A00,\n [\"_RT107\"] = 0x013C00,\n [\"_RT108\"] = 0x013E00,\n [\"_RC2\"] = 0x020000,\n\n [\"_SHPC\"] = 0x000000,\n [\"_SHPF\"] = 0x000200,\n [\"_SHPT1\"] = 0x002000,\n [\"_SHPT2\"] = 0x002100,\n [\"_SHPT3\"] = 0x002200,\n [\"_SHPTM\"] = 0x005000,\n\n [\"_SNTC\"] = 0x000000,\n [\"_SNTF\"] = 0x000200,\n\n [\"_KC\"] = 0x000000,\n [\"_KF\"] = 0x000200,\n [\"_KCQ\"] = 0x000800,\n [\"_KN27\"] = 0x001000,\n [\"_KN28\"] = 0x001100,\n [\"_KN29\"] = 0x001200,\n [\"_KN30\"] = 0x001300,\n [\"_KN31\"] = 0x001400,\n [\"_KN32\"] = 0x001500,\n [\"_KN33\"] = 0x001600,\n [\"_KN34\"] = 0x001700,\n [\"_KN35\"] = 0x001800,\n [\"_KN36\"] = 0x001900,\n [\"_KN37\"] = 0x001A00,\n [\"_KN38\"] = 0x001B00,\n [\"_KN39\"] = 0x001C00,\n [\"_KN40\"] = 0x001D00,\n [\"_KN41\"] = 0x001E00,\n [\"_KN42\"] = 0x001F00,\n [\"_KN43\"] = 0x002000,\n [\"_KN44\"] = 0x002100,\n [\"_KN45\"] = 0x002200,\n [\"_KN46\"] = 0x002300,\n [\"_KN47\"] = 0x002400,\n [\"_KN48\"] = 0x002500,\n [\"_KN49\"] = 0x002600,\n [\"_KN50\"] = 0x002700,\n [\"_KN51\"] = 0x002800,\n [\"_KN52\"] = 0x002900,\n [\"_KN53\"] = 0x002A00,\n [\"_KN54\"] = 0x002B00,\n [\"_KN55\"] = 0x002C00,\n [\"_KN56\"] = 0x002D00,\n [\"_KN57\"] = 0x002E00,\n [\"_KN58\"] = 0x002F00,\n [\"_KN59\"] = 0x003000,\n [\"_KN60\"] = 0x003100,\n [\"_KN61\"] = 0x003200,\n [\"_KN62\"] = 0x003300,\n [\"_KN63\"] = 0x003400,\n [\"_KN64\"] = 0x003500,\n [\"_KN65\"] = 0x003600,\n [\"_KN66\"] = 0x003700,\n [\"_KN67\"] = 0x003800,\n [\"_KN68\"] = 0x003900,\n [\"_KN69\"] = 0x003A00,\n [\"_KN70\"] = 0x003B00,\n [\"_KN71\"] = 0x003C00,\n [\"_KN72\"] = 0x003D00,\n [\"_KN73\"] = 0x003E00,\n [\"_KN74\"] = 0x003F00,\n [\"_KN75\"] = 0x004000,\n [\"_KN76\"] = 0x004100,\n [\"_KN77\"] = 0x004200,\n [\"_KN78\"] = 0x004300,\n [\"_KN79\"] = 0x004400,\n [\"_KN80\"] = 0x004500,\n [\"_KN81\"] = 0x004600,\n [\"_KN82\"] = 0x004700,\n [\"_KN83\"] = 0x004800,\n [\"_KN84\"] = 0x004900,\n [\"_KN85\"] = 0x004A00,\n [\"_KN86\"] = 0x004B00,\n [\"_KN87\"] = 0x004C00,\n [\"_KN88\"] = 0x004D00,\n\n [\"NESTP_SND_MODE_SD1\"] = 0x0000,\n [\"NESTP_LIV_BS_MSB_SD1\"] = 0x0001,\n [\"NESTP_LIV_BS_LSB_SD1\"] = 0x0002,\n [\"NESTP_LIV_PC_SD1\"] = 0x0003,\n [\"NESTP_PRF_BS_MSB_SD1\"] = 0x0004,\n [\"NESTP_PRF_BS_LSB_SD1\"] = 0x0005,\n [\"NESTP_PRF_PC_SD1\"] = 0x0006,\n [\"NESTP_LIV_LEVEL_SD1\"] = 0x0007,\n [\"NESTP_LIV_PAN_SD1\"] = 0x0008,\n [\"NESTP_LIV_OCT_SD1\"] = 0x0009,\n [\"NESTP_LIV_KRNG_L_SD1\"] = 0x000A,\n [\"NESTP_LIV_KRNG_U_SD1\"] = 0x000B,\n [\"NESTP_SND_MODE_SD2\"] = 0x000C,\n [\"NESTP_LIV_BS_MSB_SD2\"] = 0x000D,\n [\"NESTP_LIV_BS_LSB_SD2\"] = 0x000E,\n [\"NESTP_LIV_PC_SD2\"] = 0x000F,\n [\"NESTP_PRF_BS_MSB_SD2\"] = 0x0010,\n [\"NESTP_PRF_BS_LSB_SD2\"] = 0x0011,\n [\"NESTP_PRF_PC_SD2\"] = 0x0012,\n [\"NESTP_LIV_LEVEL_SD2\"] = 0x0013,\n [\"NESTP_LIV_PAN_SD2\"] = 0x0014,\n [\"NESTP_LIV_OCT_SD2\"] = 0x0015,\n [\"NESTP_LIV_KRNG_L_SD2\"] = 0x0016,\n [\"NESTP_LIV_KRNG_U_SD2\"] = 0x0017,\n [\"NESTP_SND_MODE_SD3\"] = 0x0018,\n [\"NESTP_LIV_BS_MSB_SD3\"] = 0x0019,\n [\"NESTP_LIV_BS_LSB_SD3\"] = 0x001A,\n [\"NESTP_LIV_PC_SD3\"] = 0x001B,\n [\"NESTP_PRF_BS_MSB_SD3\"] = 0x001C,\n [\"NESTP_PRF_BS_LSB_SD3\"] = 0x001D,\n [\"NESTP_PRF_PC_SD3\"] = 0x001E,\n [\"NESTP_LIV_LEVEL_SD3\"] = 0x001F,\n [\"NESTP_LIV_PAN_SD3\"] = 0x0020,\n [\"NESTP_LIV_OCT_SD3\"] = 0x0021,\n [\"NESTP_LIV_KRNG_L_SD3\"] = 0x0022,\n [\"NESTP_LIV_KRNG_U_SD3\"] = 0x0023,\n [\"NESTP_SND_MODE_SD4\"] = 0x0024,\n [\"NESTP_LIV_BS_MSB_SD4\"] = 0x0025,\n [\"NESTP_LIV_BS_LSB_SD4\"] = 0x0026,\n [\"NESTP_LIV_PC_SD4\"] = 0x0027,\n [\"NESTP_PRF_BS_MSB_SD4\"] = 0x0028,\n [\"NESTP_PRF_BS_LSB_SD4\"] = 0x0029,\n [\"NESTP_PRF_PC_SD4\"] = 0x002A,\n [\"NESTP_LIV_LEVEL_SD4\"] = 0x002B,\n [\"NESTP_LIV_PAN_SD4\"] = 0x002C,\n [\"NESTP_LIV_OCT_SD4\"] = 0x002D,\n [\"NESTP_LIV_KRNG_L_SD4\"] = 0x002E,\n [\"NESTP_LIV_KRNG_U_SD4\"] = 0x002F,\n [\"NESTP_MFX1_SW\"] = 0x0030,\n [\"NESTP_MFX2_SW\"] = 0x0031,\n [\"NESTP_MFX3_SW\"] = 0x0032,\n [\"NESTP_MFX4_SW\"] = 0x0033,\n [\"NESTP_CHO_SW\"] = 0x0034,\n [\"NESTP_REV_SW\"] = 0x0035,\n [\"NESTP_IFX_SW\"] = 0x0036,\n [\"NESTP_GM_MAP\"] = 0x0037,\n\n [\"NESC_TUNE\"] = 0x0000,\n [\"NESC_KEY_SHIFT\"] = 0x0004,\n [\"NESC_LEVEL\"] = 0x0005,\n [\"NESC_SCALE_SW\"] = 0x0006,\n [\"NESC_LIV_MAIN_CH\"] = 0x0009,\n [\"NESC_LIV_SUB1_CH\"] = 0x000A,\n [\"NESC_LIV_SUB2_CH\"] = 0x000B,\n [\"NESC_LIV_SUB3_CH\"] = 0x000C,\n [\"NESC_LIV_SUB4_CH\"] = 0x000D,\n [\"NESC_LIV_SUB5_CH\"] = 0x000E,\n [\"NESC_LIV_SUB6_CH\"] = 0x000F,\n [\"NESC_LIV_SUB7_CH\"] = 0x0010,\n [\"NESC_PRF_CTRL_CH\"] = 0x0011,\n [\"NESC_SCALE_TYPE\"] = 0x0012,\n [\"NESC_SCALE_KEY\"] = 0x0013,\n [\"NESC_TUNE_C\"] = 0x0014,\n [\"NESC_TUNE_CS\"] = 0x0015,\n [\"NESC_TUNE_D\"] = 0x0016,\n [\"NESC_TUNE_DS\"] = 0x0017,\n [\"NESC_TUNE_E\"] = 0x0018,\n [\"NESC_TUNE_F\"] = 0x0019,\n [\"NESC_TUNE_FS\"] = 0x001A,\n [\"NESC_TUNE_G\"] = 0x001B,\n [\"NESC_TUNE_GS\"] = 0x001C,\n [\"NESC_TUNE_A\"] = 0x001D,\n [\"NESC_TUNE_AS\"] = 0x001E,\n [\"NESC_TUNE_B\"] = 0x001F,\n [\"NESC_CTRL1_SRC\"] = 0x0020,\n [\"NESC_CTRL2_SRC\"] = 0x0021,\n [\"NESC_CTRL3_SRC\"] = 0x0022,\n [\"NESC_CTRL4_SRC\"] = 0x0023,\n [\"NESC_CTRL_SRC\"] = 0x0024,\n [\"NESC_CLK_SRC\"] = 0x0025,\n [\"NESC_TEMPO\"] = 0x0026,\n [\"NESC_OR_TEMPO\"] = 0x0028,\n [\"NESC_RX_PC\"] = 0x0029,\n [\"NESC_RX_BS\"] = 0x002A,\n [\"NESC_RSS_CENTERSP_SW\"] = 0x002B,\n [\"NESC_RSS_WOOFER_SW\"] = 0x002C,\n [\"NESC_RSS_OUTMODE\"] = 0x002D,\n [\"NESC_USB_SAMP_RATE\"] = 0x002E,\n\n [\"NEVF_MFX_TYPE\"] = 0x0000,\n [\"NEVF_MFX_DRY_SEND\"] = 0x0001,\n [\"NEVF_MFX_CHO_SEND\"] = 0x0002,\n [\"NEVF_MFX_REV_SEND\"] = 0x0003,\n [\"NEVF_MFX_CTRL1_SRC\"] = 0x0005,\n [\"NEVF_MFX_CTRL1_SENS\"] = 0x0006,\n [\"NEVF_MFX_CTRL2_SRC\"] = 0x0007,\n [\"NEVF_MFX_CTRL2_SENS\"] = 0x0008,\n [\"NEVF_MFX_CTRL3_SRC\"] = 0x0009,\n [\"NEVF_MFX_CTRL3_SENS\"] = 0x000A,\n [\"NEVF_MFX_CTRL4_SRC\"] = 0x000B,\n [\"NEVF_MFX_CTRL4_SENS\"] = 0x000C,\n [\"NEVF_MFX_CTRL_ASGN1\"] = 0x000D,\n [\"NEVF_MFX_CTRL_ASGN2\"] = 0x000E,\n [\"NEVF_MFX_CTRL_ASGN3\"] = 0x000F,\n [\"NEVF_MFX_CTRL_ASGN4\"] = 0x0010,\n [\"NEVF_MFX_PRM1\"] = 0x0011,\n [\"NEVF_MFX_PRM2\"] = 0x0015,\n [\"NEVF_MFX_PRM3\"] = 0x0019,\n [\"NEVF_MFX_PRM4\"] = 0x001D,\n [\"NEVF_MFX_PRM5\"] = 0x0021,\n [\"NEVF_MFX_PRM6\"] = 0x0025,\n [\"NEVF_MFX_PRM7\"] = 0x0029,\n [\"NEVF_MFX_PRM8\"] = 0x002D,\n [\"NEVF_MFX_PRM9\"] = 0x0031,\n [\"NEVF_MFX_PRM10\"] = 0x0035,\n [\"NEVF_MFX_PRM11\"] = 0x0039,\n [\"NEVF_MFX_PRM12\"] = 0x003D,\n [\"NEVF_MFX_PRM13\"] = 0x0041,\n [\"NEVF_MFX_PRM14\"] = 0x0045,\n [\"NEVF_MFX_PRM15\"] = 0x0049,\n [\"NEVF_MFX_PRM16\"] = 0x004D,\n [\"NEVF_MFX_PRM17\"] = 0x0051,\n [\"NEVF_MFX_PRM18\"] = 0x0055,\n [\"NEVF_MFX_PRM19\"] = 0x0059,\n [\"NEVF_MFX_PRM20\"] = 0x005D,\n [\"NEVF_MFX_PRM21\"] = 0x0061,\n [\"NEVF_MFX_PRM22\"] = 0x0065,\n [\"NEVF_MFX_PRM23\"] = 0x0069,\n [\"NEVF_MFX_PRM24\"] = 0x006D,\n [\"NEVF_MFX_PRM25\"] = 0x0071,\n [\"NEVF_MFX_PRM26\"] = 0x0075,\n [\"NEVF_MFX_PRM27\"] = 0x0079,\n [\"NEVF_MFX_PRM28\"] = 0x007D,\n [\"NEVF_MFX_PRM29\"] = 0x0101,\n [\"NEVF_MFX_PRM30\"] = 0x0105,\n [\"NEVF_MFX_PRM31\"] = 0x0109,\n [\"NEVF_MFX_PRM32\"] = 0x010D,\n\n [\"NEVP_LEVEL\"] = 0x0000,\n [\"NEVP_PAN\"] = 0x0001,\n [\"NEVP_TFX_SW\"] = 0x0002,\n\n [\"NEFC_NAME\"] = 0x0000,\n [\"NEFC_MFX1_CTRL_CH\"] = 0x0011,\n [\"NEFC_MFX2_CTRL_CH\"] = 0x0012,\n [\"NEFC_MFX3_CTRL_CH\"] = 0x0013,\n [\"NEFC_MFX_CTRL_SRC1\"] = 0x0014,\n [\"NEFC_MFX_CTRL_SRC2\"] = 0x0015,\n [\"NEFC_MFX_CTRL_SRC3\"] = 0x0016,\n [\"NEFC_MFX_CTRL_SRC4\"] = 0x0017,\n [\"NEFC_VOICE_RESERV1\"] = 0x0018,\n [\"NEFC_VOICE_RESERV2\"] = 0x0019,\n [\"NEFC_VOICE_RESERV3\"] = 0x001A,\n [\"NEFC_VOICE_RESERV4\"] = 0x001B,\n [\"NEFC_VOICE_RESERV5\"] = 0x001C,\n [\"NEFC_VOICE_RESERV6\"] = 0x001D,\n [\"NEFC_VOICE_RESERV7\"] = 0x001E,\n [\"NEFC_VOICE_RESERV8\"] = 0x001F,\n [\"NEFC_VOICE_RESERV9\"] = 0x0020,\n [\"NEFC_VOICE_RESERV10\"] = 0x0021,\n [\"NEFC_VOICE_RESERV11\"] = 0x0022,\n [\"NEFC_VOICE_RESERV12\"] = 0x0023,\n [\"NEFC_VOICE_RESERV13\"] = 0x0024,\n [\"NEFC_VOICE_RESERV14\"] = 0x0025,\n [\"NEFC_VOICE_RESERV15\"] = 0x0026,\n [\"NEFC_VOICE_RESERV16\"] = 0x0027,\n [\"NEFC_MFX_STRUCT\"] = 0x0038,\n [\"NEFC_CTRL1_SRC\"] = 0x0039,\n [\"NEFC_CTRL2_SRC\"] = 0x003A,\n [\"NEFC_CTRL3_SRC\"] = 0x003B,\n [\"NEFC_CTRL4_SRC\"] = 0x003C,\n [\"NEFC_OR_TEMPO\"] = 0x003D,\n [\"NEFC_SOLO_PART\"] = 0x003F,\n [\"NEFC_REVERB_SW\"] = 0x0040,\n [\"NEFC_CHORUS_SW\"] = 0x0041,\n [\"NEFC_MASTER_EQ_SW\"] = 0x0042,\n [\"NEFC_COMPEQ_SW\"] = 0x0043,\n [\"NEFC_COMPEQ_PART\"] = 0x0044,\n [\"NEFC_COMPEQ1_ASSIGN\"] = 0x0045,\n [\"NEFC_COMPEQ2_ASSIGN\"] = 0x0046,\n [\"NEFC_COMPEQ3_ASSIGN\"] = 0x0047,\n [\"NEFC_COMPEQ4_ASSIGN\"] = 0x0048,\n [\"NEFC_COMPEQ5_ASSIGN\"] = 0x0049,\n [\"NEFC_COMPEQ6_ASSIGN\"] = 0x004A,\n [\"NEFC_IN_SRC_SELECT\"] = 0x004B,\n [\"NEFC_IN_LEVEL\"] = 0x004C,\n [\"NEFC_IN_CHO_SEND_LEVEL\"] = 0x004D,\n [\"NEFC_IN_REV_SEND_LEVEL\"] = 0x004E,\n [\"NEFC_IN_MUTE_SW\"] = 0x004F,\n [\"NEFC_EXP_SLOT1_ROMID\"] = 0x0050,\n [\"NEFC_EXP_SLOT2_ROMID\"] = 0x0051,\n [\"NEFC_EXP_SLOT3_ROMID\"] = 0x0052,\n [\"NEFC_EXP_SLOT4_ROMID\"] = 0x0053,\n\n [\"NEFH_CHO_TYPE\"] = 0x0000,\n [\"NEFH_CHO_LEVEL\"] = 0x0001,\n [\"NEFH_CHO_OUT_ASGN\"] = 0x0002,\n [\"NEFH_CHO_OUT_SELECT\"] = 0x0003,\n [\"NEFH_CHO_PRM1\"] = 0x0004,\n [\"NEFH_CHO_PRM2\"] = 0x0008,\n [\"NEFH_CHO_PRM3\"] = 0x000C,\n [\"NEFH_CHO_PRM4\"] = 0x0010,\n [\"NEFH_CHO_PRM5\"] = 0x0014,\n [\"NEFH_CHO_PRM6\"] = 0x0018,\n [\"NEFH_CHO_PRM7\"] = 0x001C,\n [\"NEFH_CHO_PRM8\"] = 0x0020,\n [\"NEFH_CHO_PRM9\"] = 0x0024,\n [\"NEFH_CHO_PRM10\"] = 0x0028,\n [\"NEFH_CHO_PRM11\"] = 0x002C,\n [\"NEFH_CHO_PRM12\"] = 0x0030,\n [\"NEFH_CHO_PRM13\"] = 0x0034,\n [\"NEFH_CHO_PRM14\"] = 0x0038,\n [\"NEFH_CHO_PRM15\"] = 0x003C,\n [\"NEFH_CHO_PRM16\"] = 0x0040,\n [\"NEFH_CHO_PRM17\"] = 0x0044,\n [\"NEFH_CHO_PRM18\"] = 0x0048,\n [\"NEFH_CHO_PRM19\"] = 0x004C,\n [\"NEFH_CHO_PRM20\"] = 0x0050,\n\n [\"NEFV_REV_TYPE\"] = 0x0000,\n [\"NEFV_REV_LEVEL\"] = 0x0001,\n [\"NEFV_REV_OUT_ASGN\"] = 0x0002,\n [\"NEFV_REV_PRM1\"] = 0x0003,\n [\"NEFV_REV_PRM2\"] = 0x0007,\n [\"NEFV_REV_PRM3\"] = 0x000B,\n [\"NEFV_REV_PRM4\"] = 0x000F,\n [\"NEFV_REV_PRM5\"] = 0x0013,\n [\"NEFV_REV_PRM6\"] = 0x0017,\n [\"NEFV_REV_PRM7\"] = 0x001B,\n [\"NEFV_REV_PRM8\"] = 0x001F,\n [\"NEFV_REV_PRM9\"] = 0x0023,\n [\"NEFV_REV_PRM10\"] = 0x0027,\n [\"NEFV_REV_PRM11\"] = 0x002B,\n [\"NEFV_REV_PRM12\"] = 0x002F,\n [\"NEFV_REV_PRM13\"] = 0x0033,\n [\"NEFV_REV_PRM14\"] = 0x0037,\n [\"NEFV_REV_PRM15\"] = 0x003B,\n [\"NEFV_REV_PRM16\"] = 0x003F,\n [\"NEFV_REV_PRM17\"] = 0x0043,\n [\"NEFV_REV_PRM18\"] = 0x0047,\n [\"NEFV_REV_PRM19\"] = 0x004B,\n [\"NEFV_REV_PRM20\"] = 0x004F,\n [\"NEFV_REV_PRM21\"] = 0x0053,\n [\"NEFV_REV_PRM22\"] = 0x0057,\n [\"NEFV_REV_PRM23\"] = 0x005B,\n [\"NEFV_REV_PRM24\"] = 0x005F,\n\n [\"NEFRSS_RSS_SW\"] = 0x0000,\n [\"NEFRSS_RSS_ROOM_TYPE\"] = 0x0001,\n [\"NEFRSS_REV_LEVEL\"] = 0x0002,\n [\"NEFRSS_REV_ROOMSIZE\"] = 0x0003,\n [\"NEFRSS_REV_TIME\"] = 0x0004,\n [\"NEFRSS_REV_DENSITY\"] = 0x0005,\n [\"NEFRSS_REV_HFDUMP\"] = 0x0006,\n [\"NEFRSS_AUX_IN_XPOS\"] = 0x0007,\n [\"NEFRSS_AUX_IN_YPOS\"] = 0x0008,\n [\"NEFRSS_AUX_IN_WIDTH\"] = 0x0009,\n [\"NEFRSS_AUX_IN_RVSEND\"] = 0x000A,\n [\"NEFRSS_AUX_IN_CTRL_CH\"] = 0x000B,\n [\"NEFRSS_SP4XTALKC\"] = 0x000C,\n\n [\"NEFMEQ_EQ_LOWFREQ\"] = 0x0000,\n [\"NEFMEQ_EQ_LOWGAIN\"] = 0x0001,\n [\"NEFMEQ_EQ_MIDFREQ\"] = 0x0002,\n [\"NEFMEQ_EQ_MIDGAIN\"] = 0x0003,\n [\"NEFMEQ_EQ_MIDQ\"] = 0x0004,\n [\"NEFMEQ_EQ_HIGHFREQ\"] = 0x0005,\n [\"NEFMEQ_EQ_HIGHGAIN\"] = 0x0006,\n\n [\"NEFM_PHASE_LOCK\"] = 0x0000,\n\n [\"NEFP_RX_CH\"] = 0x0000,\n [\"NEFP_RX_SW\"] = 0x0001,\n [\"NEFP_RX_SRC1\"] = 0x0002,\n [\"NEFP_RX_SRC2\"] = 0x0003,\n [\"NEFP_RX_SRC3\"] = 0x0004,\n [\"NEFP_RX_SRC4\"] = 0x0005,\n [\"NEFP_PAT_BS_MSB\"] = 0x0006,\n [\"NEFP_PAT_BS_LSB\"] = 0x0007,\n [\"NEFP_PAT_PC\"] = 0x0008,\n [\"NEFP_LEVEL\"] = 0x0009,\n [\"NEFP_PAN\"] = 0x000A,\n [\"NEFP_PIT_CRS\"] = 0x000B,\n [\"NEFP_PIT_FINE\"] = 0x000C,\n [\"NEFP_MONO_POLY\"] = 0x000D,\n [\"NEFP_LEGATO_SW\"] = 0x000E,\n [\"NEFP_BEND_RANGE\"] = 0x000F,\n [\"NEFP_PORT_SW\"] = 0x0010,\n [\"NEFP_PORT_TIME\"] = 0x0011,\n [\"NEFP_CUTOFF_OFST\"] = 0x0013,\n [\"NEFP_RESO_OFST\"] = 0x0014,\n [\"NEFP_ATK_OFST\"] = 0x0015,\n [\"NEFP_DCY_OFST\"] = 0x0016,\n [\"NEFP_REL_OFST\"] = 0x0017,\n [\"NEFP_VIB_RATE\"] = 0x0018,\n [\"NEFP_VIB_DEPTH\"] = 0x0019,\n [\"NEFP_VIB_DELAY\"] = 0x001A,\n [\"NEFP_OCTAVE\"] = 0x001B,\n [\"NEFP_VSENS_OFST\"] = 0x001C,\n [\"NEFP_KRANGE_LO\"] = 0x001D,\n [\"NEFP_KRANGE_UP\"] = 0x001E,\n [\"NEFP_KFADE_LO\"] = 0x001F,\n [\"NEFP_KFADE_UP\"] = 0x0020,\n [\"NEFP_VRANGE_LO\"] = 0x0021,\n [\"NEFP_VRANGE_UP\"] = 0x0022,\n [\"NEFP_VFADE_LO\"] = 0x0023,\n [\"NEFP_VFADE_UP\"] = 0x0024,\n [\"NEFP_MUTE_SW\"] = 0x0025,\n [\"NEFP_DRY_SEND\"] = 0x0026,\n [\"NEFP_CHO_SEND\"] = 0x0027,\n [\"NEFP_REV_SEND\"] = 0x0028,\n [\"NEFP_OUT_ASGN\"] = 0x0029,\n [\"NEFP_SCALE_TYPE\"] = 0x002B,\n [\"NEFP_SCALE_KEY\"] = 0x002C,\n [\"NEFP_TUNE_C\"] = 0x002D,\n [\"NEFP_TUNE_CS\"] = 0x002E,\n [\"NEFP_TUNE_D\"] = 0x002F,\n [\"NEFP_TUNE_DS\"] = 0x0030,\n [\"NEFP_TUNE_E\"] = 0x0031,\n [\"NEFP_TUNE_F\"] = 0x0032,\n [\"NEFP_TUNE_FS\"] = 0x0033,\n [\"NEFP_TUNE_G\"] = 0x0034,\n [\"NEFP_TUNE_GS\"] = 0x0035,\n [\"NEFP_TUNE_A\"] = 0x0036,\n [\"NEFP_TUNE_AS\"] = 0x0037,\n [\"NEFP_TUNE_B\"] = 0x0038,\n [\"NEFP_RX_PC\"] = 0x0039,\n [\"NEFP_RX_BS\"] = 0x003A,\n [\"NEFP_RX_BEND\"] = 0x003B,\n [\"NEFP_RX_PAFT\"] = 0x003C,\n [\"NEFP_RX_CAFT\"] = 0x003D,\n [\"NEFP_RX_MOD\"] = 0x003E,\n [\"NEFP_RX_VOL\"] = 0x003F,\n [\"NEFP_RX_PAN\"] = 0x0040,\n [\"NEFP_RX_EXPR\"] = 0x0041,\n [\"NEFP_RX_HOLD\"] = 0x0042,\n [\"NEFP_VELO_CRV_TYPE\"] = 0x0043,\n [\"NEFP_RSS_X1POS\"] = 0x0044,\n [\"NEFP_RSS_Y1POS\"] = 0x0046,\n [\"NEFP_RSS_WIDTH\"] = 0x0048,\n [\"NEFP_RSS_RVSEND\"] = 0x0049,\n\n [\"NEFPEQ_EQ_SW\"] = 0x0000,\n [\"NEFPEQ_EQ_LOWFREQ\"] = 0x0001,\n [\"NEFPEQ_EQ_LOWGAIN\"] = 0x0002,\n [\"NEFPEQ_EQ_MIDFREQ\"] = 0x0003,\n [\"NEFPEQ_EQ_MIDGAIN\"] = 0x0004,\n [\"NEFPEQ_EQ_MIDQ\"] = 0x0005,\n [\"NEFPEQ_EQ_HIGHFREQ\"] = 0x0006,\n [\"NEFPEQ_EQ_HIGHGAIN\"] = 0x0007,\n\n [\"RFPC_NAME\"] = 0x0000,\n [\"RFPC_LEVEL\"] = 0x000E,\n [\"RFPC_PAN\"] = 0x000F,\n [\"RFPC_PRIORITY\"] = 0x0010,\n [\"RFPC_PIT_CRS\"] = 0x0011,\n [\"RFPC_PIT_FINE\"] = 0x0012,\n [\"RFPC_OCTAVE\"] = 0x0013,\n [\"RFPC_STRETCH\"] = 0x0014,\n [\"RFPC_ANALOG_FEEL\"] = 0x0015,\n [\"RFPC_MONO_POLY\"] = 0x0016,\n [\"RFPC_LEGATO_SW\"] = 0x0017,\n [\"RFPC_LEGATO_RETRIG\"] = 0x0018,\n [\"RFPC_PORT_SW\"] = 0x0019,\n [\"RFPC_PORT_MODE\"] = 0x001A,\n [\"RFPC_PORT_TYPE\"] = 0x001B,\n [\"RFPC_PORT_START\"] = 0x001C,\n [\"RFPC_PORT_TIME\"] = 0x001D,\n [\"RFPC_CUTOFF_OFST\"] = 0x0022,\n [\"RFPC_RESO_OFST\"] = 0x0023,\n [\"RFPC_ATK_OFST\"] = 0x0024,\n [\"RFPC_REL_OFST\"] = 0x0025,\n [\"RFPC_VSENS_OFST\"] = 0x0026,\n [\"RFPC_TMT_CTRL_SW\"] = 0x0028,\n [\"RFPC_BEND_RANGE_UP\"] = 0x0029,\n [\"RFPC_BEND_RANGE_DW\"] = 0x002A,\n [\"RFPC_CTRL1_SRC\"] = 0x002B,\n [\"RFPC_CTRL1_DST1\"] = 0x002C,\n [\"RFPC_CTRL1_SENS1\"] = 0x002D,\n [\"RFPC_CTRL1_DST2\"] = 0x002E,\n [\"RFPC_CTRL1_SENS2\"] = 0x002F,\n [\"RFPC_CTRL1_DST3\"] = 0x0030,\n [\"RFPC_CTRL1_SENS3\"] = 0x0031,\n [\"RFPC_CTRL1_DST4\"] = 0x0032,\n [\"RFPC_CTRL1_SENS4\"] = 0x0033,\n [\"RFPC_CTRL2_SRC\"] = 0x0034,\n [\"RFPC_CTRL2_DST1\"] = 0x0035,\n [\"RFPC_CTRL2_SENS1\"] = 0x0036,\n [\"RFPC_CTRL2_DST2\"] = 0x0037,\n [\"RFPC_CTRL2_SENS2\"] = 0x0038,\n [\"RFPC_CTRL2_DST3\"] = 0x0039,\n [\"RFPC_CTRL2_SENS3\"] = 0x003A,\n [\"RFPC_CTRL2_DST4\"] = 0x003B,\n [\"RFPC_CTRL2_SENS4\"] = 0x003C,\n [\"RFPC_CTRL3_SRC\"] = 0x003D,\n [\"RFPC_CTRL3_DST1\"] = 0x003E,\n [\"RFPC_CTRL3_SENS1\"] = 0x003F,\n [\"RFPC_CTRL3_DST2\"] = 0x0040,\n [\"RFPC_CTRL3_SENS2\"] = 0x0041,\n [\"RFPC_CTRL3_DST3\"] = 0x0042,\n [\"RFPC_CTRL3_SENS3\"] = 0x0043,\n [\"RFPC_CTRL3_DST4\"] = 0x0044,\n [\"RFPC_CTRL3_SENS4\"] = 0x0045,\n [\"RFPC_CTRL4_SRC\"] = 0x0046,\n [\"RFPC_CTRL4_DST1\"] = 0x0047,\n [\"RFPC_CTRL4_SENS1\"] = 0x0048,\n [\"RFPC_CTRL4_DST2\"] = 0x0049,\n [\"RFPC_CTRL4_SENS2\"] = 0x004A,\n [\"RFPC_CTRL4_DST3\"] = 0x004B,\n [\"RFPC_CTRL4_SENS3\"] = 0x004C,\n [\"RFPC_CTRL4_DST4\"] = 0x004D,\n [\"RFPC_CTRL4_SENS4\"] = 0x004E,\n [\"RFPC_PART_MOD_SW\"] = 0x004F,\n\n [\"RFPF_MFX_TYPE\"] = 0x0000,\n [\"RFPF_MFX_DRY_SEND\"] = 0x0001,\n [\"RFPF_MFX_CHO_SEND\"] = 0x0002,\n [\"RFPF_MFX_REV_SEND\"] = 0x0003,\n [\"RFPF_MFX_CTRL1_SRC\"] = 0x0005,\n [\"RFPF_MFX_CTRL1_SENS\"] = 0x0006,\n [\"RFPF_MFX_CTRL2_SRC\"] = 0x0007,\n [\"RFPF_MFX_CTRL2_SENS\"] = 0x0008,\n [\"RFPF_MFX_CTRL3_SRC\"] = 0x0009,\n [\"RFPF_MFX_CTRL3_SENS\"] = 0x000A,\n [\"RFPF_MFX_CTRL4_SRC\"] = 0x000B,\n [\"RFPF_MFX_CTRL4_SENS\"] = 0x000C,\n [\"RFPF_MFX_CTRL_ASGN1\"] = 0x000D,\n [\"RFPF_MFX_CTRL_ASGN2\"] = 0x000E,\n [\"RFPF_MFX_CTRL_ASGN3\"] = 0x000F,\n [\"RFPF_MFX_CTRL_ASGN4\"] = 0x0010,\n [\"RFPF_MFX_PRM1\"] = 0x0011,\n [\"RFPF_MFX_PRM2\"] = 0x0015,\n [\"RFPF_MFX_PRM3\"] = 0x0019,\n [\"RFPF_MFX_PRM4\"] = 0x001D,\n [\"RFPF_MFX_PRM5\"] = 0x0021,\n [\"RFPF_MFX_PRM6\"] = 0x0025,\n [\"RFPF_MFX_PRM7\"] = 0x0029,\n [\"RFPF_MFX_PRM8\"] = 0x002D,\n [\"RFPF_MFX_PRM9\"] = 0x0031,\n [\"RFPF_MFX_PRM10\"] = 0x0035,\n [\"RFPF_MFX_PRM11\"] = 0x0039,\n [\"RFPF_MFX_PRM12\"] = 0x003D,\n [\"RFPF_MFX_PRM13\"] = 0x0041,\n [\"RFPF_MFX_PRM14\"] = 0x0045,\n [\"RFPF_MFX_PRM15\"] = 0x0049,\n [\"RFPF_MFX_PRM16\"] = 0x004D,\n [\"RFPF_MFX_PRM17\"] = 0x0051,\n [\"RFPF_MFX_PRM18\"] = 0x0055,\n [\"RFPF_MFX_PRM19\"] = 0x0059,\n [\"RFPF_MFX_PRM20\"] = 0x005D,\n [\"RFPF_MFX_PRM21\"] = 0x0061,\n [\"RFPF_MFX_PRM22\"] = 0x0065,\n [\"RFPF_MFX_PRM23\"] = 0x0069,\n [\"RFPF_MFX_PRM24\"] = 0x006D,\n [\"RFPF_MFX_PRM25\"] = 0x0071,\n [\"RFPF_MFX_PRM26\"] = 0x0075,\n [\"RFPF_MFX_PRM27\"] = 0x0079,\n [\"RFPF_MFX_PRM28\"] = 0x007D,\n [\"RFPF_MFX_PRM29\"] = 0x0101,\n [\"RFPF_MFX_PRM30\"] = 0x0105,\n [\"RFPF_MFX_PRM31\"] = 0x0109,\n [\"RFPF_MFX_PRM32\"] = 0x010D,\n\n [\"RFPX_STRUCT1\"] = 0x0000,\n [\"RFPX_BOOST1\"] = 0x0001,\n [\"RFPX_STRUCT3\"] = 0x0002,\n [\"RFPX_BOOST3\"] = 0x0003,\n [\"RFPX_TMT_VELO_CTRL\"] = 0x0004,\n [\"RFPX_TMT1_SW\"] = 0x0005,\n [\"RFPX_TMT1_KRANGE_LO\"] = 0x0006,\n [\"RFPX_TMT1_KRANGE_UP\"] = 0x0007,\n [\"RFPX_TMT1_KFADE_LO\"] = 0x0008,\n [\"RFPX_TMT1_KFADE_UP\"] = 0x0009,\n [\"RFPX_TMT1_VRANGE_LO\"] = 0x000A,\n [\"RFPX_TMT1_VRANGE_UP\"] = 0x000B,\n [\"RFPX_TMT1_VFADE_LO\"] = 0x000C,\n [\"RFPX_TMT1_VFADE_UP\"] = 0x000D,\n [\"RFPX_TMT2_SW\"] = 0x000E,\n [\"RFPX_TMT2_KRANGE_LO\"] = 0x000F,\n [\"RFPX_TMT2_KRANGE_UP\"] = 0x0010,\n [\"RFPX_TMT2_KFADE_LO\"] = 0x0011,\n [\"RFPX_TMT2_KFADE_UP\"] = 0x0012,\n [\"RFPX_TMT2_VRANGE_LO\"] = 0x0013,\n [\"RFPX_TMT2_VRANGE_UP\"] = 0x0014,\n [\"RFPX_TMT2_VFADE_LO\"] = 0x0015,\n [\"RFPX_TMT2_VFADE_UP\"] = 0x0016,\n [\"RFPX_TMT3_SW\"] = 0x0017,\n [\"RFPX_TMT3_KRANGE_LO\"] = 0x0018,\n [\"RFPX_TMT3_KRANGE_UP\"] = 0x0019,\n [\"RFPX_TMT3_KFADE_LO\"] = 0x001A,\n [\"RFPX_TMT3_KFADE_UP\"] = 0x001B,\n [\"RFPX_TMT3_VRANGE_LO\"] = 0x001C,\n [\"RFPX_TMT3_VRANGE_UP\"] = 0x001D,\n [\"RFPX_TMT3_VFADE_LO\"] = 0x001E,\n [\"RFPX_TMT3_VFADE_UP\"] = 0x001F,\n [\"RFPX_TMT4_SW\"] = 0x0020,\n [\"RFPX_TMT4_KRANGE_LO\"] = 0x0021,\n [\"RFPX_TMT4_KRANGE_UP\"] = 0x0022,\n [\"RFPX_TMT4_KFADE_LO\"] = 0x0023,\n [\"RFPX_TMT4_KFADE_UP\"] = 0x0024,\n [\"RFPX_TMT4_VRANGE_LO\"] = 0x0025,\n [\"RFPX_TMT4_VRANGE_UP\"] = 0x0026,\n [\"RFPX_TMT4_VFADE_LO\"] = 0x0027,\n [\"RFPX_TMT4_VFADE_UP\"] = 0x0028,\n\n [\"RFPT_LEVEL\"] = 0x0000,\n [\"RFPT_PIT_CRS\"] = 0x0001,\n [\"RFPT_PIT_FINE\"] = 0x0002,\n [\"RFPT_PIT_RND\"] = 0x0003,\n [\"RFPT_PAN\"] = 0x0004,\n [\"RFPT_PAN_KF\"] = 0x0005,\n [\"RFPT_PAN_RND\"] = 0x0006,\n [\"RFPT_PAN_ALT\"] = 0x0007,\n [\"RFPT_ENV_MODE\"] = 0x0008,\n [\"RFPT_DELAY_MODE\"] = 0x0009,\n [\"RFPT_DELAY_TIME\"] = 0x000A,\n [\"RFPT_DRY_SEND\"] = 0x000C,\n [\"RFPT_CHO_SEND_A\"] = 0x000F,\n [\"RFPT_REV_SEND_A\"] = 0x0010,\n [\"RFPT_RX_BEND\"] = 0x0012,\n [\"RFPT_RX_EXPR\"] = 0x0013,\n [\"RFPT_RX_HOLD\"] = 0x0014,\n [\"RFPT_REDAMP_SW\"] = 0x0016,\n [\"RFPT_CTRL1_SW1\"] = 0x0017,\n [\"RFPT_CTRL1_SW2\"] = 0x0018,\n [\"RFPT_CTRL1_SW3\"] = 0x0019,\n [\"RFPT_CTRL1_SW4\"] = 0x001A,\n [\"RFPT_CTRL2_SW1\"] = 0x001B,\n [\"RFPT_CTRL2_SW2\"] = 0x001C,\n [\"RFPT_CTRL2_SW3\"] = 0x001D,\n [\"RFPT_CTRL2_SW4\"] = 0x001E,\n [\"RFPT_CTRL3_SW1\"] = 0x001F,\n [\"RFPT_CTRL3_SW2\"] = 0x0020,\n [\"RFPT_CTRL3_SW3\"] = 0x0021,\n [\"RFPT_CTRL3_SW4\"] = 0x0022,\n [\"RFPT_CTRL4_SW1\"] = 0x0023,\n [\"RFPT_CTRL4_SW2\"] = 0x0024,\n [\"RFPT_CTRL4_SW3\"] = 0x0025,\n [\"RFPT_CTRL4_SW4\"] = 0x0026,\n [\"RFPT_WAV_GTYPE\"] = 0x0027,\n [\"RFPT_WAV_GID\"] = 0x0028,\n [\"RFPT_WAV_NUML\"] = 0x002C,\n [\"RFPT_WAV_NUMR\"] = 0x0030,\n [\"RFPT_WAV_GAIN\"] = 0x0034,\n [\"RFPT_FXM_SW\"] = 0x0035,\n [\"RFPT_FXM_COLOR\"] = 0x0036,\n [\"RFPT_FXM_DEPTH\"] = 0x0037,\n [\"RFPT_TEMPO_SYNC\"] = 0x0038,\n [\"RFPT_PIT_KF\"] = 0x0039,\n [\"RFPT_PENV_DEPTH\"] = 0x003A,\n [\"RFPT_PENV_VSENS\"] = 0x003B,\n [\"RFPT_PENV_T1_VSENS\"] = 0x003C,\n [\"RFPT_PENV_T4_VSENS\"] = 0x003D,\n [\"RFPT_PENV_TKF\"] = 0x003E,\n [\"RFPT_PENV_T1\"] = 0x003F,\n [\"RFPT_PENV_T2\"] = 0x0040,\n [\"RFPT_PENV_T3\"] = 0x0041,\n [\"RFPT_PENV_T4\"] = 0x0042,\n [\"RFPT_PENV_L0\"] = 0x0043,\n [\"RFPT_PENV_L1\"] = 0x0044,\n [\"RFPT_PENV_L2\"] = 0x0045,\n [\"RFPT_PENV_L3\"] = 0x0046,\n [\"RFPT_PENV_L4\"] = 0x0047,\n [\"RFPT_FILTER_TYPE\"] = 0x0048,\n [\"RFPT_CUTOFF\"] = 0x0049,\n [\"RFPT_CUTOFF_KF\"] = 0x004A,\n [\"RFPT_CUTOFF_VCRV\"] = 0x004B,\n [\"RFPT_CUTOFF_VSENS\"] = 0x004C,\n [\"RFPT_RESO\"] = 0x004D,\n [\"RFPT_RESO_VSENS\"] = 0x004E,\n [\"RFPT_FENV_DEPTH\"] = 0x004F,\n [\"RFPT_FENV_VCRV\"] = 0x0050,\n [\"RFPT_FENV_VSENS\"] = 0x0051,\n [\"RFPT_FENV_T1_VSENS\"] = 0x0052,\n [\"RFPT_FENV_T4_VSENS\"] = 0x0053,\n [\"RFPT_FENV_TKF\"] = 0x0054,\n [\"RFPT_FENV_T1\"] = 0x0055,\n [\"RFPT_FENV_T2\"] = 0x0056,\n [\"RFPT_FENV_T3\"] = 0x0057,\n [\"RFPT_FENV_T4\"] = 0x0058,\n [\"RFPT_FENV_L0\"] = 0x0059,\n [\"RFPT_FENV_L1\"] = 0x005A,\n [\"RFPT_FENV_L2\"] = 0x005B,\n [\"RFPT_FENV_L3\"] = 0x005C,\n [\"RFPT_FENV_L4\"] = 0x005D,\n [\"RFPT_BIAS_LEVEL\"] = 0x005E,\n [\"RFPT_BIAS_POS\"] = 0x005F,\n [\"RFPT_BIAS_DIR\"] = 0x0060,\n [\"RFPT_LEVEL_VCRV\"] = 0x0061,\n [\"RFPT_LEVEL_VSENS\"] = 0x0062,\n [\"RFPT_AENV_T1_VSENS\"] = 0x0063,\n [\"RFPT_AENV_T4_VSENS\"] = 0x0064,\n [\"RFPT_AENV_TKF\"] = 0x0065,\n [\"RFPT_AENV_T1\"] = 0x0066,\n [\"RFPT_AENV_T2\"] = 0x0067,\n [\"RFPT_AENV_T3\"] = 0x0068,\n [\"RFPT_AENV_T4\"] = 0x0069,\n [\"RFPT_AENV_L1\"] = 0x006A,\n [\"RFPT_AENV_L2\"] = 0x006B,\n [\"RFPT_AENV_L3\"] = 0x006C,\n [\"RFPT_LFO1_FORM\"] = 0x006D,\n [\"RFPT_LFO1_RATE\"] = 0x006E,\n [\"RFPT_LFO1_OFST\"] = 0x0070,\n [\"RFPT_LFO1_RATE_DETN\"] = 0x0071,\n [\"RFPT_LFO1_DELAY\"] = 0x0072,\n [\"RFPT_LFO1_DELAY_KF\"] = 0x0073,\n [\"RFPT_LFO1_FADE_MODE\"] = 0x0074,\n [\"RFPT_LFO1_FADE\"] = 0x0075,\n [\"RFPT_LFO1_KEY_TRIG\"] = 0x0076,\n [\"RFPT_LFO1_PIT_DEPTH\"] = 0x0077,\n [\"RFPT_LFO1_TVF_DEPTH\"] = 0x0078,\n [\"RFPT_LFO1_TVA_DEPTH\"] = 0x0079,\n [\"RFPT_LFO1_PAN_DEPTH\"] = 0x007A,\n [\"RFPT_LFO2_FORM\"] = 0x007B,\n [\"RFPT_LFO2_RATE\"] = 0x007C,\n [\"RFPT_LFO2_OFST\"] = 0x007E,\n [\"RFPT_LFO2_RATE_DETN\"] = 0x007F,\n [\"RFPT_LFO2_DELAY\"] = 0x0100,\n [\"RFPT_LFO2_DELAY_KF\"] = 0x0101,\n [\"RFPT_LFO2_FADE_MODE\"] = 0x0102,\n [\"RFPT_LFO2_FADE\"] = 0x0103,\n [\"RFPT_LFO2_KEY_TRIG\"] = 0x0104,\n [\"RFPT_LFO2_PIT_DEPTH\"] = 0x0105,\n [\"RFPT_LFO2_TVF_DEPTH\"] = 0x0106,\n [\"RFPT_LFO2_TVA_DEPTH\"] = 0x0107,\n [\"RFPT_LFO2_PAN_DEPTH\"] = 0x0108,\n [\"RFPT_LFO_STEP_TYPE\"] = 0x0109,\n [\"RFPT_LFO_STEP1\"] = 0x010A,\n [\"RFPT_LFO_STEP2\"] = 0x010B,\n [\"RFPT_LFO_STEP3\"] = 0x010C,\n [\"RFPT_LFO_STEP4\"] = 0x010D,\n [\"RFPT_LFO_STEP5\"] = 0x010E,\n [\"RFPT_LFO_STEP6\"] = 0x010F,\n [\"RFPT_LFO_STEP7\"] = 0x0110,\n [\"RFPT_LFO_STEP8\"] = 0x0111,\n [\"RFPT_LFO_STEP9\"] = 0x0112,\n [\"RFPT_LFO_STEP10\"] = 0x0113,\n [\"RFPT_LFO_STEP11\"] = 0x0114,\n [\"RFPT_LFO_STEP12\"] = 0x0115,\n [\"RFPT_LFO_STEP13\"] = 0x0116,\n [\"RFPT_LFO_STEP14\"] = 0x0117,\n [\"RFPT_LFO_STEP15\"] = 0x0118,\n [\"RFPT_LFO_STEP16\"] = 0x0119,\n\n [\"RFPLGT4_BEAM_SW\"] = 0x0000,\n [\"RFPLGT4_BEAM_ASGN\"] = 0x0001,\n [\"RFPLGT4_BEAM_POL\"] = 0x0002,\n [\"RFPLGT4_BEAM_RANGE_LO\"] = 0x0003,\n [\"RFPLGT4_BEAM_RANGE_UP\"] = 0x0004,\n [\"RFPLGT4_KNOB1_ASGN\"] = 0x0005,\n [\"RFPLGT4_KNOB2_ASGN\"] = 0x0006,\n [\"RFPLGT4_KNOB3_ASGN\"] = 0x0007,\n [\"RFPLGT4_KNOB4_ASGN\"] = 0x0008,\n [\"RFPLGT4_SW1_ASGN\"] = 0x0009,\n [\"RFPLGT4_SW1_MODE\"] = 0x000A,\n [\"RFPLGT4_SW2_ASGN\"] = 0x000B,\n [\"RFPLGT4_SW2_MODE\"] = 0x000C,\n [\"RFPLGT4_SW3_ASGN\"] = 0x000D,\n [\"RFPLGT4_SW3_MODE\"] = 0x000E,\n [\"RFPLGT4_SW4_ASGN\"] = 0x000F,\n [\"RFPLGT4_SW4_MODE\"] = 0x0010,\n [\"RFPLGT4_ARP_SW\"] = 0x0011,\n [\"RFPLGT4_ARP_HOLD\"] = 0x0012,\n [\"RFPLGT4_ARP_STYLE\"] = 0x0013,\n [\"RFPLGT4_ARP_VARIAT\"] = 0x0014,\n [\"RFPLGT4_ARP_MOTIF\"] = 0x0015,\n [\"RFPLGT4_ARP_ACCT_RATE\"] = 0x0016,\n [\"RFPLGT4_ARP_SHFL_RATE\"] = 0x0017,\n [\"RFPLGT4_ARP_SHFL_RESO\"] = 0x0018,\n [\"RFPLGT4_ARP_VELO\"] = 0x0019,\n [\"RFPLGT4_ARP_RANGE\"] = 0x001A,\n [\"RFPLGT4_ARP_KEY_TRIG\"] = 0x001B,\n\n [\"RFPC2_CATE\"] = 0x0010,\n [\"RFPC2_PHRASE_OCT\"] = 0x0013,\n [\"RFPC2_KEYWORD1\"] = 0x0014,\n [\"RFPC2_KEYWORD2\"] = 0x0015,\n [\"RFPC2_KEYWORD3\"] = 0x0016,\n [\"RFPC2_KEYWORD4\"] = 0x0017,\n [\"RFPC2_KEYWORD5\"] = 0x0018,\n [\"RFPC2_KEYWORD6\"] = 0x0019,\n [\"RFPC2_KEYWORD7\"] = 0x001A,\n [\"RFPC2_KEYWORD8\"] = 0x001B,\n [\"RFPC2_KEYWORD9\"] = 0x001C,\n [\"RFPC2_KEYWORD10\"] = 0x001D,\n [\"RFPC2_KEYWORD11\"] = 0x001E,\n [\"RFPC2_KEYWORD12\"] = 0x001F,\n [\"RFPC2_KEYWORD13\"] = 0x0020,\n [\"RFPC2_KEYWORD14\"] = 0x0021,\n [\"RFPC2_KEYWORD15\"] = 0x0022,\n [\"RFPC2_KEYWORD16\"] = 0x0023,\n [\"RFPC2_KEYWORD17\"] = 0x0024,\n [\"RFPC2_KEYWORD18\"] = 0x0025,\n [\"RFPC2_KEYWORD19\"] = 0x0026,\n [\"RFPC2_KEYWORD20\"] = 0x0027,\n [\"RFPC2_KEYWORD21\"] = 0x0028,\n [\"RFPC2_KEYWORD22\"] = 0x0029,\n [\"RFPC2_KEYWORD23\"] = 0x002A,\n [\"RFPC2_KEYWORD24\"] = 0x002B,\n [\"RFPC2_KEYWORD25\"] = 0x002C,\n [\"RFPC2_KEYWORD26\"] = 0x002D,\n [\"RFPC2_KEYWORD27\"] = 0x002E,\n [\"RFPC2_KEYWORD28\"] = 0x002F,\n [\"RFPC2_KEYWORD29\"] = 0x0030,\n [\"RFPC2_KEYWORD30\"] = 0x0031,\n [\"RFPC2_KEYWORD31\"] = 0x0032,\n [\"RFPC2_TFX_SW\"] = 0x0033,\n [\"RFPC2_META1\"] = 0x0034,\n [\"RFPC2_META2\"] = 0x0035,\n [\"RFPC2_META3\"] = 0x0036,\n [\"RFPC2_META4\"] = 0x0037,\n [\"RFPC2_PHRASE\"] = 0x0038,\n\n [\"RFPTM_MOD_PRM1\"] = 0x0001,\n [\"RFPTM_MOD_PRM2\"] = 0x0002,\n [\"RFPTM_MOD_PRM3\"] = 0x0003,\n [\"RFPTM_MOD_PRM4\"] = 0x0004,\n [\"RFPTM_MOD_PRM5\"] = 0x0005,\n [\"RFPTM_MOD_PRM6\"] = 0x0006,\n [\"RFPTM_MOD_PRM7\"] = 0x0007,\n [\"RFPTM_MOD_PRM8\"] = 0x0008,\n [\"RFPTM_MOD_PRM9\"] = 0x0009,\n [\"RFPTM_MOD_PRM10\"] = 0x000A,\n [\"RFPTM_MOD_PRM11\"] = 0x000B,\n [\"RFPTM_MOD_PRM12\"] = 0x000C,\n [\"RFPTM_MOD_PRM13\"] = 0x000D,\n [\"RFPTM_MOD_PRM14\"] = 0x000E,\n [\"RFPTM_MOD_PRM15\"] = 0x000F,\n [\"RFPTM_MOD_PRM16\"] = 0x0010,\n [\"RFPTM_MOD_PRM17\"] = 0x0011,\n [\"RFPTM_MOD_PRM18\"] = 0x0012,\n [\"RFPTM_MOD_PRM19\"] = 0x0013,\n [\"RFPTM_MOD_PRM20\"] = 0x0014,\n [\"RFPTM_MOD_PRM21\"] = 0x0015,\n [\"RFPTM_MOD_PRM22\"] = 0x0016,\n [\"RFPTM_MOD_PRM23\"] = 0x0017,\n [\"RFPTM_MOD_PRM24\"] = 0x0018,\n [\"RFPTM_MOD_PRM25\"] = 0x0019,\n [\"RFPTM_MOD_PRM26\"] = 0x001A,\n [\"RFPTM_MOD_PRM27\"] = 0x001B,\n [\"RFPTM_MOD_PRM28\"] = 0x001C,\n [\"RFPTM_MOD_PRM29\"] = 0x001D,\n [\"RFPTM_MOD_PRM30\"] = 0x001E,\n [\"RFPTM_MOD_PRM31\"] = 0x001F,\n [\"RFPTM_MOD_PRM32\"] = 0x0020,\n\n [\"RFRC_NAME\"] = 0x0000,\n [\"RFRC_LEVEL\"] = 0x000C,\n\n [\"RFRF_MFX_TYPE\"] = 0x0000,\n [\"RFRF_MFX_DRY_SEND\"] = 0x0001,\n [\"RFRF_MFX_CHO_SEND\"] = 0x0002,\n [\"RFRF_MFX_REV_SEND\"] = 0x0003,\n [\"RFRF_MFX_CTRL1_SRC\"] = 0x0005,\n [\"RFRF_MFX_CTRL1_SENS\"] = 0x0006,\n [\"RFRF_MFX_CTRL2_SRC\"] = 0x0007,\n [\"RFRF_MFX_CTRL2_SENS\"] = 0x0008,\n [\"RFRF_MFX_CTRL3_SRC\"] = 0x0009,\n [\"RFRF_MFX_CTRL3_SENS\"] = 0x000A,\n [\"RFRF_MFX_CTRL4_SRC\"] = 0x000B,\n [\"RFRF_MFX_CTRL4_SENS\"] = 0x000C,\n [\"RFRF_MFX_CTRL_ASGN1\"] = 0x000D,\n [\"RFRF_MFX_CTRL_ASGN2\"] = 0x000E,\n [\"RFRF_MFX_CTRL_ASGN3\"] = 0x000F,\n [\"RFRF_MFX_CTRL_ASGN4\"] = 0x0010,\n [\"RFRF_MFX_PRM1\"] = 0x0011,\n [\"RFRF_MFX_PRM2\"] = 0x0015,\n [\"RFRF_MFX_PRM3\"] = 0x0019,\n [\"RFRF_MFX_PRM4\"] = 0x001D,\n [\"RFRF_MFX_PRM5\"] = 0x0021,\n [\"RFRF_MFX_PRM6\"] = 0x0025,\n [\"RFRF_MFX_PRM7\"] = 0x0029,\n [\"RFRF_MFX_PRM8\"] = 0x002D,\n [\"RFRF_MFX_PRM9\"] = 0x0031,\n [\"RFRF_MFX_PRM10\"] = 0x0035,\n [\"RFRF_MFX_PRM11\"] = 0x0039,\n [\"RFRF_MFX_PRM12\"] = 0x003D,\n [\"RFRF_MFX_PRM13\"] = 0x0041,\n [\"RFRF_MFX_PRM14\"] = 0x0045,\n [\"RFRF_MFX_PRM15\"] = 0x0049,\n [\"RFRF_MFX_PRM16\"] = 0x004D,\n [\"RFRF_MFX_PRM17\"] = 0x0051,\n [\"RFRF_MFX_PRM18\"] = 0x0055,\n [\"RFRF_MFX_PRM19\"] = 0x0059,\n [\"RFRF_MFX_PRM20\"] = 0x005D,\n [\"RFRF_MFX_PRM21\"] = 0x0061,\n [\"RFRF_MFX_PRM22\"] = 0x0065,\n [\"RFRF_MFX_PRM23\"] = 0x0069,\n [\"RFRF_MFX_PRM24\"] = 0x006D,\n [\"RFRF_MFX_PRM25\"] = 0x0071,\n [\"RFRF_MFX_PRM26\"] = 0x0075,\n [\"RFRF_MFX_PRM27\"] = 0x0079,\n [\"RFRF_MFX_PRM28\"] = 0x007D,\n [\"RFRF_MFX_PRM29\"] = 0x0101,\n [\"RFRF_MFX_PRM30\"] = 0x0105,\n [\"RFRF_MFX_PRM31\"] = 0x0109,\n [\"RFRF_MFX_PRM32\"] = 0x010D,\n\n [\"RFRCQ_COMP1_SW\"] = 0x0000,\n [\"RFRCQ_COMP1_ATTACK\"] = 0x0001,\n [\"RFRCQ_COMP1_RELEASE\"] = 0x0002,\n [\"RFRCQ_COMP1_THRESHOLD\"] = 0x0003,\n [\"RFRCQ_COMP1_RATIO\"] = 0x0004,\n [\"RFRCQ_COMP1_POSTGAIN\"] = 0x0005,\n [\"RFRCQ_EQ1_SW\"] = 0x0006,\n [\"RFRCQ_EQ1_LOWFREQ\"] = 0x0007,\n [\"RFRCQ_EQ1_LOWGAIN\"] = 0x0008,\n [\"RFRCQ_EQ1_MIDFREQ\"] = 0x0009,\n [\"RFRCQ_EQ1_MIDGAIN\"] = 0x000A,\n [\"RFRCQ_EQ1_MIDQ\"] = 0x000B,\n [\"RFRCQ_EQ1_HIGHFREQ\"] = 0x000C,\n [\"RFRCQ_EQ1_HIGHGAIN\"] = 0x000D,\n [\"RFRCQ_COMP2_SW\"] = 0x000E,\n [\"RFRCQ_COMP2_ATTACK\"] = 0x000F,\n [\"RFRCQ_COMP2_RELEASE\"] = 0x0010,\n [\"RFRCQ_COMP2_THRESHOLD\"] = 0x0011,\n [\"RFRCQ_COMP2_RATIO\"] = 0x0012,\n [\"RFRCQ_COMP2_POSTGAIN\"] = 0x0013,\n [\"RFRCQ_EQ2_SW\"] = 0x0014,\n [\"RFRCQ_EQ2_LOWFREQ\"] = 0x0015,\n [\"RFRCQ_EQ2_LOWGAIN\"] = 0x0016,\n [\"RFRCQ_EQ2_MIDFREQ\"] = 0x0017,\n [\"RFRCQ_EQ2_MIDGAIN\"] = 0x0018,\n [\"RFRCQ_EQ2_MIDQ\"] = 0x0019,\n [\"RFRCQ_EQ2_HIGHFREQ\"] = 0x001A,\n [\"RFRCQ_EQ2_HIGHGAIN\"] = 0x001B,\n [\"RFRCQ_COMP3_SW\"] = 0x001C,\n [\"RFRCQ_COMP3_ATTACK\"] = 0x001D,\n [\"RFRCQ_COMP3_RELEASE\"] = 0x001E,\n [\"RFRCQ_COMP3_THRESHOLD\"] = 0x001F,\n [\"RFRCQ_COMP3_RATIO\"] = 0x0020,\n [\"RFRCQ_COMP3_POSTGAIN\"] = 0x0021,\n [\"RFRCQ_EQ3_SW\"] = 0x0022,\n [\"RFRCQ_EQ3_LOWFREQ\"] = 0x0023,\n [\"RFRCQ_EQ3_LOWGAIN\"] = 0x0024,\n [\"RFRCQ_EQ3_MIDFREQ\"] = 0x0025,\n [\"RFRCQ_EQ3_MIDGAIN\"] = 0x0026,\n [\"RFRCQ_EQ3_MIDQ\"] = 0x0027,\n [\"RFRCQ_EQ3_HIGHFREQ\"] = 0x0028,\n [\"RFRCQ_EQ3_HIGHGAIN\"] = 0x0029,\n [\"RFRCQ_COMP4_SW\"] = 0x002A,\n [\"RFRCQ_COMP4_ATTACK\"] = 0x002B,\n [\"RFRCQ_COMP4_RELEASE\"] = 0x002C,\n [\"RFRCQ_COMP4_THRESHOLD\"] = 0x002D,\n [\"RFRCQ_COMP4_RATIO\"] = 0x002E,\n [\"RFRCQ_COMP4_POSTGAIN\"] = 0x002F,\n [\"RFRCQ_EQ4_SW\"] = 0x0030,\n [\"RFRCQ_EQ4_LOWFREQ\"] = 0x0031,\n [\"RFRCQ_EQ4_LOWGAIN\"] = 0x0032,\n [\"RFRCQ_EQ4_MIDFREQ\"] = 0x0033,\n [\"RFRCQ_EQ4_MIDGAIN\"] = 0x0034,\n [\"RFRCQ_EQ4_MIDQ\"] = 0x0035,\n [\"RFRCQ_EQ4_HIGHFREQ\"] = 0x0036,\n [\"RFRCQ_EQ4_HIGHGAIN\"] = 0x0037,\n [\"RFRCQ_COMP5_SW\"] = 0x0038,\n [\"RFRCQ_COMP5_ATTACK\"] = 0x0039,\n [\"RFRCQ_COMP5_RELEASE\"] = 0x003A,\n [\"RFRCQ_COMP5_THRESHOLD\"] = 0x003B,\n [\"RFRCQ_COMP5_RATIO\"] = 0x003C,\n [\"RFRCQ_COMP5_POSTGAIN\"] = 0x003D,\n [\"RFRCQ_EQ5_SW\"] = 0x003E,\n [\"RFRCQ_EQ5_LOWFREQ\"] = 0x003F,\n [\"RFRCQ_EQ5_LOWGAIN\"] = 0x0040,\n [\"RFRCQ_EQ5_MIDFREQ\"] = 0x0041,\n [\"RFRCQ_EQ5_MIDGAIN\"] = 0x0042,\n [\"RFRCQ_EQ5_MIDQ\"] = 0x0043,\n [\"RFRCQ_EQ5_HIGHFREQ\"] = 0x0044,\n [\"RFRCQ_EQ5_HIGHGAIN\"] = 0x0045,\n [\"RFRCQ_COMP6_SW\"] = 0x0046,\n [\"RFRCQ_COMP6_ATTACK\"] = 0x0047,\n [\"RFRCQ_COMP6_RELEASE\"] = 0x0048,\n [\"RFRCQ_COMP6_THRESHOLD\"] = 0x0049,\n [\"RFRCQ_COMP6_RATIO\"] = 0x004A,\n [\"RFRCQ_COMP6_POSTGAIN\"] = 0x004B,\n [\"RFRCQ_EQ6_SW\"] = 0x004C,\n [\"RFRCQ_EQ6_LOWFREQ\"] = 0x004D,\n [\"RFRCQ_EQ6_LOWGAIN\"] = 0x004E,\n [\"RFRCQ_EQ6_MIDFREQ\"] = 0x004F,\n [\"RFRCQ_EQ6_MIDGAIN\"] = 0x0050,\n [\"RFRCQ_EQ6_MIDQ\"] = 0x0051,\n [\"RFRCQ_EQ6_HIGHFREQ\"] = 0x0052,\n [\"RFRCQ_EQ6_HIGHGAIN\"] = 0x0053,\n\n [\"RFRT_NAME\"] = 0x0000,\n [\"RFRT_ASGN_TYPE\"] = 0x000C,\n [\"RFRT_MUTE_GRP\"] = 0x000D,\n [\"RFRT_LEVEL\"] = 0x000E,\n [\"RFRT_SRC_KEY\"] = 0x000F,\n [\"RFRT_PIT_FINE\"] = 0x0010,\n [\"RFRT_PIT_RND\"] = 0x0011,\n [\"RFRT_PAN\"] = 0x0012,\n [\"RFRT_PAN_RND\"] = 0x0013,\n [\"RFRT_PAN_ALT\"] = 0x0014,\n [\"RFRT_ENV_MODE\"] = 0x0015,\n [\"RFRT_DRY_SEND\"] = 0x0016,\n [\"RFRT_CHO_SEND_A\"] = 0x0019,\n [\"RFRT_REV_SEND_A\"] = 0x001A,\n [\"RFRT_OUT_ASGN\"] = 0x001B,\n [\"RFRT_BEND_RANGE\"] = 0x001C,\n [\"RFRT_RX_EXPR\"] = 0x001D,\n [\"RFRT_RX_HOLD\"] = 0x001E,\n [\"RFRT_WMT_VELO_CTRL\"] = 0x0020,\n [\"RFRT_WMT1_SW\"] = 0x0021,\n [\"RFRT_WMT1_WAV_GTYPE\"] = 0x0022,\n [\"RFRT_WMT1_WAV_GID\"] = 0x0023,\n [\"RFRT_WMT1_WAV_NUML\"] = 0x0027,\n [\"RFRT_WMT1_WAV_NUMR\"] = 0x002B,\n [\"RFRT_WMT1_WAV_GAIN\"] = 0x002F,\n [\"RFRT_WMT1_FXM_SW\"] = 0x0030,\n [\"RFRT_WMT1_FXM_COLOR\"] = 0x0031,\n [\"RFRT_WMT1_FXM_DEPTH\"] = 0x0032,\n [\"RFRT_WMT1_TEMPO_SYNC\"] = 0x0033,\n [\"RFRT_WMT1_PIT_CRS\"] = 0x0034,\n [\"RFRT_WMT1_PIT_FINE\"] = 0x0035,\n [\"RFRT_WMT1_PAN\"] = 0x0036,\n [\"RFRT_WMT1_PAN_RND\"] = 0x0037,\n [\"RFRT_WMT1_PAN_ALT\"] = 0x0038,\n [\"RFRT_WMT1_LEVEL\"] = 0x0039,\n [\"RFRT_WMT1_VRANGE_LO\"] = 0x003A,\n [\"RFRT_WMT1_VRANGE_UP\"] = 0x003B,\n [\"RFRT_WMT1_VFADE_LO\"] = 0x003C,\n [\"RFRT_WMT1_VFADE_UP\"] = 0x003D,\n [\"RFRT_WMT2_SW\"] = 0x003E,\n [\"RFRT_WMT2_WAV_GTYPE\"] = 0x003F,\n [\"RFRT_WMT2_WAV_GID\"] = 0x0040,\n [\"RFRT_WMT2_WAV_NUML\"] = 0x0044,\n [\"RFRT_WMT2_WAV_NUMR\"] = 0x0048,\n [\"RFRT_WMT2_WAV_GAIN\"] = 0x004C,\n [\"RFRT_WMT2_FXM_SW\"] = 0x004D,\n [\"RFRT_WMT2_FXM_COLOR\"] = 0x004E,\n [\"RFRT_WMT2_FXM_DEPTH\"] = 0x004F,\n [\"RFRT_WMT2_TEMPO_SYNC\"] = 0x0050,\n [\"RFRT_WMT2_PIT_CRS\"] = 0x0051,\n [\"RFRT_WMT2_PIT_FINE\"] = 0x0052,\n [\"RFRT_WMT2_PAN\"] = 0x0053,\n [\"RFRT_WMT2_PAN_RND\"] = 0x0054,\n [\"RFRT_WMT2_PAN_ALT\"] = 0x0055,\n [\"RFRT_WMT2_LEVEL\"] = 0x0056,\n [\"RFRT_WMT2_VRANGE_LO\"] = 0x0057,\n [\"RFRT_WMT2_VRANGE_UP\"] = 0x0058,\n [\"RFRT_WMT2_VFADE_LO\"] = 0x0059,\n [\"RFRT_WMT2_VFADE_UP\"] = 0x005A,\n [\"RFRT_WMT3_SW\"] = 0x005B,\n [\"RFRT_WMT3_WAV_GTYPE\"] = 0x005C,\n [\"RFRT_WMT3_WAV_GID\"] = 0x005D,\n [\"RFRT_WMT3_WAV_NUML\"] = 0x0061,\n [\"RFRT_WMT3_WAV_NUMR\"] = 0x0065,\n [\"RFRT_WMT3_WAV_GAIN\"] = 0x0069,\n [\"RFRT_WMT3_FXM_SW\"] = 0x006A,\n [\"RFRT_WMT3_FXM_COLOR\"] = 0x006B,\n [\"RFRT_WMT3_FXM_DEPTH\"] = 0x006C,\n [\"RFRT_WMT3_TEMPO_SYNC\"] = 0x006D,\n [\"RFRT_WMT3_PIT_CRS\"] = 0x006E,\n [\"RFRT_WMT3_PIT_FINE\"] = 0x006F,\n [\"RFRT_WMT3_PAN\"] = 0x0070,\n [\"RFRT_WMT3_PAN_RND\"] = 0x0071,\n [\"RFRT_WMT3_PAN_ALT\"] = 0x0072,\n [\"RFRT_WMT3_LEVEL\"] = 0x0073,\n [\"RFRT_WMT3_VRANGE_LO\"] = 0x0074,\n [\"RFRT_WMT3_VRANGE_UP\"] = 0x0075,\n [\"RFRT_WMT3_VFADE_LO\"] = 0x0076,\n [\"RFRT_WMT3_VFADE_UP\"] = 0x0077,\n [\"RFRT_WMT4_SW\"] = 0x0078,\n [\"RFRT_WMT4_WAV_GTYPE\"] = 0x0079,\n [\"RFRT_WMT4_WAV_GID\"] = 0x007A,\n [\"RFRT_WMT4_WAV_NUML\"] = 0x007E,\n [\"RFRT_WMT4_WAV_NUMR\"] = 0x0102,\n [\"RFRT_WMT4_WAV_GAIN\"] = 0x0106,\n [\"RFRT_WMT4_FXM_SW\"] = 0x0107,\n [\"RFRT_WMT4_FXM_COLOR\"] = 0x0108,\n [\"RFRT_WMT4_FXM_DEPTH\"] = 0x0109,\n [\"RFRT_WMT4_TEMPO_SYNC\"] = 0x010A,\n [\"RFRT_WMT4_PIT_CRS\"] = 0x010B,\n [\"RFRT_WMT4_PIT_FINE\"] = 0x010C,\n [\"RFRT_WMT4_PAN\"] = 0x010D,\n [\"RFRT_WMT4_PAN_RND\"] = 0x010E,\n [\"RFRT_WMT4_PAN_ALT\"] = 0x010F,\n [\"RFRT_WMT4_LEVEL\"] = 0x0110,\n [\"RFRT_WMT4_VRANGE_LO\"] = 0x0111,\n [\"RFRT_WMT4_VRANGE_UP\"] = 0x0112,\n [\"RFRT_WMT4_VFADE_LO\"] = 0x0113,\n [\"RFRT_WMT4_VFADE_UP\"] = 0x0114,\n [\"RFRT_PENV_DEPTH\"] = 0x0115,\n [\"RFRT_PENV_VSENS\"] = 0x0116,\n [\"RFRT_PENV_T1_VSENS\"] = 0x0117,\n [\"RFRT_PENV_T4_VSENS\"] = 0x0118,\n [\"RFRT_PENV_T1\"] = 0x0119,\n [\"RFRT_PENV_T2\"] = 0x011A,\n [\"RFRT_PENV_T3\"] = 0x011B,\n [\"RFRT_PENV_T4\"] = 0x011C,\n [\"RFRT_PENV_L0\"] = 0x011D,\n [\"RFRT_PENV_L1\"] = 0x011E,\n [\"RFRT_PENV_L2\"] = 0x011F,\n [\"RFRT_PENV_L3\"] = 0x0120,\n [\"RFRT_PENV_L4\"] = 0x0121,\n [\"RFRT_FILTER_TYPE\"] = 0x0122,\n [\"RFRT_CUTOFF\"] = 0x0123,\n [\"RFRT_CUTOFF_VCRV\"] = 0x0124,\n [\"RFRT_CUTOFF_VSENS\"] = 0x0125,\n [\"RFRT_RESO\"] = 0x0126,\n [\"RFRT_RESO_VSENS\"] = 0x0127,\n [\"RFRT_FENV_DEPTH\"] = 0x0128,\n [\"RFRT_FENV_VCRV\"] = 0x0129,\n [\"RFRT_FENV_VSENS\"] = 0x012A,\n [\"RFRT_FENV_T1_VSENS\"] = 0x012B,\n [\"RFRT_FENV_T4_VSENS\"] = 0x012C,\n [\"RFRT_FENV_T1\"] = 0x012D,\n [\"RFRT_FENV_T2\"] = 0x012E,\n [\"RFRT_FENV_T3\"] = 0x012F,\n [\"RFRT_FENV_T4\"] = 0x0130,\n [\"RFRT_FENV_L0\"] = 0x0131,\n [\"RFRT_FENV_L1\"] = 0x0132,\n [\"RFRT_FENV_L2\"] = 0x0133,\n [\"RFRT_FENV_L3\"] = 0x0134,\n [\"RFRT_FENV_L4\"] = 0x0135,\n [\"RFRT_LEVEL_VCRV\"] = 0x0136,\n [\"RFRT_LEVEL_VSENS\"] = 0x0137,\n [\"RFRT_AENV_T1_VSENS\"] = 0x0138,\n [\"RFRT_AENV_T4_VSENS\"] = 0x0139,\n [\"RFRT_AENV_T1\"] = 0x013A,\n [\"RFRT_AENV_T2\"] = 0x013B,\n [\"RFRT_AENV_T3\"] = 0x013C,\n [\"RFRT_AENV_T4\"] = 0x013D,\n [\"RFRT_AENV_L1\"] = 0x013E,\n [\"RFRT_AENV_L2\"] = 0x013F,\n [\"RFRT_AENV_L3\"] = 0x0140,\n [\"RFRT_ONE_SHOT\"] = 0x0141,\n [\"RFRT_LEVEL_MOD\"] = 0x0142,\n\n [\"RFRLGT4_BEAM_SW\"] = 0x0000,\n [\"RFRLGT4_BEAM_ASGN\"] = 0x0001,\n [\"RFRLGT4_BEAM_POL\"] = 0x0002,\n [\"RFRLGT4_BEAM_RANGE_LO\"] = 0x0003,\n [\"RFRLGT4_BEAM_RANGE_UP\"] = 0x0004,\n [\"RFRLGT4_KNOB1_ASGN\"] = 0x0005,\n [\"RFRLGT4_KNOB2_ASGN\"] = 0x0006,\n [\"RFRLGT4_KNOB3_ASGN\"] = 0x0007,\n [\"RFRLGT4_KNOB4_ASGN\"] = 0x0008,\n [\"RFRLGT4_SW1_ASGN\"] = 0x0009,\n [\"RFRLGT4_SW1_MODE\"] = 0x000A,\n [\"RFRLGT4_SW2_ASGN\"] = 0x000B,\n [\"RFRLGT4_SW2_MODE\"] = 0x000C,\n [\"RFRLGT4_SW3_ASGN\"] = 0x000D,\n [\"RFRLGT4_SW3_MODE\"] = 0x000E,\n [\"RFRLGT4_SW4_ASGN\"] = 0x000F,\n [\"RFRLGT4_SW4_MODE\"] = 0x0010,\n [\"RFRLGT4_PTN_SW\"] = 0x0011,\n [\"RFRLGT4_PTN_HOLD\"] = 0x0012,\n [\"RFRLGT4_PTN_STYLE\"] = 0x0013,\n [\"RFRLGT4_PTN_ACCT_RATE\"] = 0x0014,\n [\"RFRLGT4_PTN_SHFL_RATE\"] = 0x0015,\n [\"RFRLGT4_PTN_SHFL_RESO\"] = 0x0016,\n [\"RFRLGT4_PTN_VELO\"] = 0x0017,\n [\"RFRLGT4_PTN_NOTE_ASGN\"] = 0x0018,\n [\"RFRLGT4_PTN_KEY_TRIG\"] = 0x0019,\n\n [\"RFRC2_PHRASE\"] = 0x0010,\n [\"RFRC2_KEYWORD1\"] = 0x0012,\n [\"RFRC2_KEYWORD2\"] = 0x0013,\n [\"RFRC2_KEYWORD3\"] = 0x0014,\n [\"RFRC2_KEYWORD4\"] = 0x0015,\n [\"RFRC2_KEYWORD5\"] = 0x0016,\n [\"RFRC2_KEYWORD6\"] = 0x0017,\n [\"RFRC2_KEYWORD7\"] = 0x0018,\n [\"RFRC2_KEYWORD8\"] = 0x0019,\n [\"RFRC2_KEYWORD9\"] = 0x001A,\n [\"RFRC2_KEYWORD10\"] = 0x001B,\n [\"RFRC2_KEYWORD11\"] = 0x001C,\n [\"RFRC2_KEYWORD12\"] = 0x001D,\n [\"RFRC2_KEYWORD13\"] = 0x001E,\n [\"RFRC2_KEYWORD14\"] = 0x001F,\n [\"RFRC2_KEYWORD15\"] = 0x0020,\n [\"RFRC2_KEYWORD16\"] = 0x0021,\n [\"RFRC2_KEYWORD17\"] = 0x0022,\n [\"RFRC2_KEYWORD18\"] = 0x0023,\n [\"RFRC2_KEYWORD19\"] = 0x0024,\n [\"RFRC2_KEYWORD20\"] = 0x0025,\n [\"RFRC2_KEYWORD21\"] = 0x0026,\n [\"RFRC2_KEYWORD22\"] = 0x0027,\n [\"RFRC2_KEYWORD23\"] = 0x0028,\n [\"RFRC2_KEYWORD24\"] = 0x0029,\n [\"RFRC2_KEYWORD25\"] = 0x002A,\n [\"RFRC2_KEYWORD26\"] = 0x002B,\n [\"RFRC2_KEYWORD27\"] = 0x002C,\n [\"RFRC2_KEYWORD28\"] = 0x002D,\n [\"RFRC2_KEYWORD29\"] = 0x002E,\n [\"RFRC2_KEYWORD30\"] = 0x002F,\n [\"RFRC2_KEYWORD31\"] = 0x0030,\n [\"RFRC2_TFX_SW\"] = 0x0031,\n\n [\"RFRTM_MOD_PRM1\"] = 0x0001,\n [\"RFRTM_MOD_PRM2\"] = 0x0002,\n [\"RFRTM_MOD_PRM3\"] = 0x0003,\n [\"RFRTM_MOD_PRM4\"] = 0x0004,\n [\"RFRTM_MOD_PRM5\"] = 0x0005,\n [\"RFRTM_MOD_PRM6\"] = 0x0006,\n [\"RFRTM_MOD_PRM7\"] = 0x0007,\n [\"RFRTM_MOD_PRM8\"] = 0x0008,\n [\"RFRTM_MOD_PRM9\"] = 0x0009,\n [\"RFRTM_MOD_PRM10\"] = 0x000A,\n [\"RFRTM_MOD_PRM11\"] = 0x000B,\n [\"RFRTM_MOD_PRM12\"] = 0x000C,\n [\"RFRTM_MOD_PRM13\"] = 0x000D,\n [\"RFRTM_MOD_PRM14\"] = 0x000E,\n [\"RFRTM_MOD_PRM15\"] = 0x000F,\n [\"RFRTM_MOD_PRM16\"] = 0x0010,\n [\"RFRTM_MOD_PRM17\"] = 0x0011,\n [\"RFRTM_MOD_PRM18\"] = 0x0012,\n [\"RFRTM_MOD_PRM19\"] = 0x0013,\n [\"RFRTM_MOD_PRM20\"] = 0x0014,\n [\"RFRTM_MOD_PRM21\"] = 0x0015,\n [\"RFRTM_MOD_PRM22\"] = 0x0016,\n [\"RFRTM_MOD_PRM23\"] = 0x0017,\n [\"RFRTM_MOD_PRM24\"] = 0x0018,\n [\"RFRTM_MOD_PRM25\"] = 0x0019,\n [\"RFRTM_MOD_PRM26\"] = 0x001A,\n [\"RFRTM_MOD_PRM27\"] = 0x001B,\n [\"RFRTM_MOD_PRM28\"] = 0x001C,\n [\"RFRTM_MOD_PRM29\"] = 0x001D,\n [\"RFRTM_MOD_PRM30\"] = 0x001E,\n [\"RFRTM_MOD_PRM31\"] = 0x001F,\n [\"RFRTM_MOD_PRM32\"] = 0x0020,\n\n [\"SHPC_NAME\"] = 0x0000,\n [\"SHPC_LEVEL\"] = 0x000C,\n [\"SHPC_PORT_SW\"] = 0x0012,\n [\"SHPC_PORT_TIME\"] = 0x0013,\n [\"SHPC_MONO_SW\"] = 0x0014,\n [\"SHPC_OCTAVE\"] = 0x0015,\n [\"SHPC_BEND_RANGE_UP\"] = 0x0016,\n [\"SHPC_BEND_RANGE_DW\"] = 0x0017,\n [\"SHPC_TONE1_SW\"] = 0x0019,\n [\"SHPC_TONE1_SEL\"] = 0x001A,\n [\"SHPC_TONE2_SW\"] = 0x001B,\n [\"SHPC_TONE2_SEL\"] = 0x001C,\n [\"SHPC_TONE3_SW\"] = 0x001D,\n [\"SHPC_TONE3_SEL\"] = 0x001E,\n [\"SHPC_SYNC_RING_SEL\"] = 0x001F,\n [\"SHPC_TFX_SW\"] = 0x0020,\n [\"SHPC_UNISON\"] = 0x002E,\n [\"SHPC_PORT_MODE\"] = 0x0031,\n [\"SHPC_LEGATO_SW\"] = 0x0032,\n [\"SHPC_ANALOG_FEEL\"] = 0x0034,\n [\"SHPC_CROSS_MOD\"] = 0x0035,\n [\"SHPC_CATE\"] = 0x0036,\n [\"SHPC_PHRASE\"] = 0x0037,\n [\"SHPC_PHRASE_OCT\"] = 0x003B,\n [\"SHPC_UNISON_SIZE\"] = 0x003C,\n\n [\"SHPF_MFX_TYPE\"] = 0x0000,\n [\"SHPF_MFX_DRY_SEND\"] = 0x0001,\n [\"SHPF_MFX_CHO_SEND\"] = 0x0002,\n [\"SHPF_MFX_REV_SEND\"] = 0x0003,\n [\"SHPF_MFX_CTRL1_SRC\"] = 0x0005,\n [\"SHPF_MFX_CTRL1_SENS\"] = 0x0006,\n [\"SHPF_MFX_CTRL2_SRC\"] = 0x0007,\n [\"SHPF_MFX_CTRL2_SENS\"] = 0x0008,\n [\"SHPF_MFX_CTRL3_SRC\"] = 0x0009,\n [\"SHPF_MFX_CTRL3_SENS\"] = 0x000A,\n [\"SHPF_MFX_CTRL4_SRC\"] = 0x000B,\n [\"SHPF_MFX_CTRL4_SENS\"] = 0x000C,\n [\"SHPF_MFX_CTRL_ASGN1\"] = 0x000D,\n [\"SHPF_MFX_CTRL_ASGN2\"] = 0x000E,\n [\"SHPF_MFX_CTRL_ASGN3\"] = 0x000F,\n [\"SHPF_MFX_CTRL_ASGN4\"] = 0x0010,\n [\"SHPF_MFX_PRM1\"] = 0x0011,\n [\"SHPF_MFX_PRM2\"] = 0x0015,\n [\"SHPF_MFX_PRM3\"] = 0x0019,\n [\"SHPF_MFX_PRM4\"] = 0x001D,\n [\"SHPF_MFX_PRM5\"] = 0x0021,\n [\"SHPF_MFX_PRM6\"] = 0x0025,\n [\"SHPF_MFX_PRM7\"] = 0x0029,\n [\"SHPF_MFX_PRM8\"] = 0x002D,\n [\"SHPF_MFX_PRM9\"] = 0x0031,\n [\"SHPF_MFX_PRM10\"] = 0x0035,\n [\"SHPF_MFX_PRM11\"] = 0x0039,\n [\"SHPF_MFX_PRM12\"] = 0x003D,\n [\"SHPF_MFX_PRM13\"] = 0x0041,\n [\"SHPF_MFX_PRM14\"] = 0x0045,\n [\"SHPF_MFX_PRM15\"] = 0x0049,\n [\"SHPF_MFX_PRM16\"] = 0x004D,\n [\"SHPF_MFX_PRM17\"] = 0x0051,\n [\"SHPF_MFX_PRM18\"] = 0x0055,\n [\"SHPF_MFX_PRM19\"] = 0x0059,\n [\"SHPF_MFX_PRM20\"] = 0x005D,\n [\"SHPF_MFX_PRM21\"] = 0x0061,\n [\"SHPF_MFX_PRM22\"] = 0x0065,\n [\"SHPF_MFX_PRM23\"] = 0x0069,\n [\"SHPF_MFX_PRM24\"] = 0x006D,\n [\"SHPF_MFX_PRM25\"] = 0x0071,\n [\"SHPF_MFX_PRM26\"] = 0x0075,\n [\"SHPF_MFX_PRM27\"] = 0x0079,\n [\"SHPF_MFX_PRM28\"] = 0x007D,\n [\"SHPF_MFX_PRM29\"] = 0x0101,\n [\"SHPF_MFX_PRM30\"] = 0x0105,\n [\"SHPF_MFX_PRM31\"] = 0x0109,\n [\"SHPF_MFX_PRM32\"] = 0x010D,\n\n [\"SHPTM_MOD_PRM1\"] = 0x0001,\n [\"SHPTM_MOD_PRM2\"] = 0x0002,\n [\"SHPTM_MOD_PRM3\"] = 0x0003,\n [\"SHPTM_MOD_PRM4\"] = 0x0004,\n [\"SHPTM_MOD_PRM5\"] = 0x0005,\n [\"SHPTM_MOD_PRM6\"] = 0x0006,\n [\"SHPTM_MOD_PRM7\"] = 0x0007,\n [\"SHPTM_MOD_PRM8\"] = 0x0008,\n [\"SHPTM_MOD_PRM9\"] = 0x0009,\n [\"SHPTM_MOD_PRM10\"] = 0x000A,\n [\"SHPTM_MOD_PRM11\"] = 0x000B,\n [\"SHPTM_MOD_PRM12\"] = 0x000C,\n [\"SHPTM_MOD_PRM13\"] = 0x000D,\n [\"SHPTM_MOD_PRM14\"] = 0x000E,\n [\"SHPTM_MOD_PRM15\"] = 0x000F,\n [\"SHPTM_MOD_PRM16\"] = 0x0010,\n [\"SHPTM_MOD_PRM17\"] = 0x0011,\n [\"SHPTM_MOD_PRM18\"] = 0x0012,\n [\"SHPTM_MOD_PRM19\"] = 0x0013,\n [\"SHPTM_MOD_PRM20\"] = 0x0014,\n [\"SHPTM_MOD_PRM21\"] = 0x0015,\n [\"SHPTM_MOD_PRM22\"] = 0x0016,\n [\"SHPTM_MOD_PRM23\"] = 0x0017,\n [\"SHPTM_MOD_PRM24\"] = 0x0018,\n [\"SHPTM_MOD_PRM25\"] = 0x0019,\n [\"SHPTM_MOD_PRM26\"] = 0x001A,\n [\"SHPTM_MOD_PRM27\"] = 0x001B,\n [\"SHPTM_MOD_PRM28\"] = 0x001C,\n [\"SHPTM_MOD_PRM29\"] = 0x001D,\n [\"SHPTM_MOD_PRM30\"] = 0x001E,\n [\"SHPTM_MOD_PRM31\"] = 0x001F,\n [\"SHPTM_MOD_PRM32\"] = 0x0020,\n\n [\"SHPT_OSC_WAVE\"] = 0x0000,\n [\"SHPT_OSC_WAVE_VAR\"] = 0x0001,\n [\"SHPT_OSC_PIT_CRS\"] = 0x0003,\n [\"SHPT_OSC_PIT_DETUNE\"] = 0x0004,\n [\"SHPT_OSC_PWM\"] = 0x0005,\n [\"SHPT_OSC_PW\"] = 0x0006,\n [\"SHPT_OSC_PENV_ATK\"] = 0x0007,\n [\"SHPT_OSC_PENV_DCY\"] = 0x0008,\n [\"SHPT_OSC_PENV_DEPTH\"] = 0x0009,\n [\"SHPT_FILT_MODE\"] = 0x000A,\n [\"SHPT_FILT_SLOPE\"] = 0x000B,\n [\"SHPT_FILT_FREQ\"] = 0x000C,\n [\"SHPT_FILT_FREQ_KF\"] = 0x000D,\n [\"SHPT_FILT_ENV_VSENS\"] = 0x000E,\n [\"SHPT_FILT_RESO\"] = 0x000F,\n [\"SHPT_FILT_ENV_ATK\"] = 0x0010,\n [\"SHPT_FILT_ENV_DCY\"] = 0x0011,\n [\"SHPT_FILT_ENV_SUS\"] = 0x0012,\n [\"SHPT_FILT_ENV_REL\"] = 0x0013,\n [\"SHPT_FILT_ENV_DEPTH\"] = 0x0014,\n [\"SHPT_AMP_LEVEL\"] = 0x0015,\n [\"SHPT_AMP_LEVEL_VSENS\"] = 0x0016,\n [\"SHPT_AMP_ENV_ATK\"] = 0x0017,\n [\"SHPT_AMP_ENV_DCY\"] = 0x0018,\n [\"SHPT_AMP_ENV_SUS\"] = 0x0019,\n [\"SHPT_AMP_ENV_REL\"] = 0x001A,\n [\"SHPT_AMP_PAN\"] = 0x001B,\n [\"SHPT_LFO_SHAPE\"] = 0x001C,\n [\"SHPT_LFO_RATE\"] = 0x001D,\n [\"SHPT_LFO_SYNC_SW\"] = 0x001E,\n [\"SHPT_LFO_SYNC_NOTE\"] = 0x001F,\n [\"SHPT_LFO_FADE\"] = 0x0020,\n [\"SHPT_LFO_KEY_TRIG\"] = 0x0021,\n [\"SHPT_LFO_PITCH_MOD\"] = 0x0022,\n [\"SHPT_LFO_FILTER_MOD\"] = 0x0023,\n [\"SHPT_LFO_AMP_MOD\"] = 0x0024,\n [\"SHPT_LFO_PAN_MOD\"] = 0x0025,\n [\"SHPT_MLFO_SHAPE\"] = 0x0026,\n [\"SHPT_MLFO_RATE\"] = 0x0027,\n [\"SHPT_MLFO_SYNC_SW\"] = 0x0028,\n [\"SHPT_MLFO_SYNC_NOTE\"] = 0x0029,\n [\"SHPT_OSC_PW_SHIFT\"] = 0x002A,\n [\"SHPT_MLFO_PITCH_MOD\"] = 0x002C,\n [\"SHPT_MLFO_FILTER_MOD\"] = 0x002D,\n [\"SHPT_MLFO_AMP_MOD\"] = 0x002E,\n [\"SHPT_MLFO_PAN_MOD\"] = 0x002F,\n [\"SHPT_AFT_CUTOFF_SENS\"] = 0x0030,\n [\"SHPT_AFT_LEVEL_SENS\"] = 0x0031,\n [\"SHPT_WAV_GAIN\"] = 0x0034,\n [\"SHPT_WAV_NUML\"] = 0x0035,\n [\"SHPT_HPF_CUTOFF\"] = 0x0039,\n [\"SHPT_SSAW_DETUNE\"] = 0x003A,\n [\"SHPT_MLFO_RATE_MOD\"] = 0x003B,\n [\"SHPT_BIAS_LEVEL\"] = 0x003C,\n\n [\"SNTC_NAME\"] = 0x0000,\n [\"SNTC_TONE_LEVEL\"] = 0x0010,\n [\"SNTC_MONO_POLY\"] = 0x0011,\n [\"SNTC_PORT_TIME\"] = 0x0012,\n [\"SNTC_CUTOFF_OFST\"] = 0x0013,\n [\"SNTC_RESO_OFST\"] = 0x0014,\n [\"SNTC_ATK_OFST\"] = 0x0015,\n [\"SNTC_REL_OFST\"] = 0x0016,\n [\"SNTC_VIB_RATE\"] = 0x0017,\n [\"SNTC_VIB_DEPTH\"] = 0x0018,\n [\"SNTC_VIB_DELAY\"] = 0x0019,\n [\"SNTC_OCTAVE\"] = 0x001A,\n [\"SNTC_CATE\"] = 0x001B,\n [\"SNTC_PHRASE\"] = 0x001C,\n [\"SNTC_PHRASE_OCT\"] = 0x001E,\n [\"SNTC_TFX_SW\"] = 0x001F,\n [\"SNTC_INST_BS_LSB\"] = 0x0020,\n [\"SNTC_INST_BS_PC\"] = 0x0021,\n [\"SNTC_MOD_PRM1\"] = 0x0022,\n [\"SNTC_MOD_PRM2\"] = 0x0023,\n [\"SNTC_MOD_PRM3\"] = 0x0024,\n [\"SNTC_MOD_PRM4\"] = 0x0025,\n [\"SNTC_MOD_PRM5\"] = 0x0026,\n [\"SNTC_MOD_PRM6\"] = 0x0027,\n [\"SNTC_MOD_PRM7\"] = 0x0028,\n [\"SNTC_MOD_PRM8\"] = 0x0029,\n [\"SNTC_MOD_PRM9\"] = 0x002A,\n [\"SNTC_MOD_PRM10\"] = 0x002B,\n [\"SNTC_MOD_PRM11\"] = 0x002C,\n [\"SNTC_MOD_PRM12\"] = 0x002D,\n [\"SNTC_MOD_PRM13\"] = 0x002E,\n [\"SNTC_MOD_PRM14\"] = 0x002F,\n [\"SNTC_MOD_PRM15\"] = 0x0030,\n [\"SNTC_MOD_PRM16\"] = 0x0031,\n [\"SNTC_MOD_PRM17\"] = 0x0032,\n [\"SNTC_MOD_PRM18\"] = 0x0033,\n [\"SNTC_MOD_PRM19\"] = 0x0034,\n [\"SNTC_MOD_PRM20\"] = 0x0035,\n [\"SNTC_MOD_PRM21\"] = 0x0036,\n [\"SNTC_MOD_PRM22\"] = 0x0037,\n [\"SNTC_MOD_PRM23\"] = 0x0038,\n [\"SNTC_MOD_PRM24\"] = 0x0039,\n [\"SNTC_MOD_PRM25\"] = 0x003A,\n [\"SNTC_MOD_PRM26\"] = 0x003B,\n [\"SNTC_MOD_PRM27\"] = 0x003C,\n [\"SNTC_MOD_PRM28\"] = 0x003D,\n [\"SNTC_MOD_PRM29\"] = 0x003E,\n [\"SNTC_MOD_PRM30\"] = 0x003F,\n [\"SNTC_MOD_PRM31\"] = 0x0040,\n [\"SNTC_MOD_PRM32\"] = 0x0041,\n\n [\"SNTF_MFX_TYPE\"] = 0x0000,\n [\"SNTF_MFX_DRY_SEND\"] = 0x0001,\n [\"SNTF_MFX_CHO_SEND\"] = 0x0002,\n [\"SNTF_MFX_REV_SEND\"] = 0x0003,\n [\"SNTF_MFX_CTRL1_SRC\"] = 0x0005,\n [\"SNTF_MFX_CTRL1_SENS\"] = 0x0006,\n [\"SNTF_MFX_CTRL2_SRC\"] = 0x0007,\n [\"SNTF_MFX_CTRL2_SENS\"] = 0x0008,\n [\"SNTF_MFX_CTRL3_SRC\"] = 0x0009,\n [\"SNTF_MFX_CTRL3_SENS\"] = 0x000A,\n [\"SNTF_MFX_CTRL4_SRC\"] = 0x000B,\n [\"SNTF_MFX_CTRL4_SENS\"] = 0x000C,\n [\"SNTF_MFX_CTRL_ASGN1\"] = 0x000D,\n [\"SNTF_MFX_CTRL_ASGN2\"] = 0x000E,\n [\"SNTF_MFX_CTRL_ASGN3\"] = 0x000F,\n [\"SNTF_MFX_CTRL_ASGN4\"] = 0x0010,\n [\"SNTF_MFX_PRM1\"] = 0x0011,\n [\"SNTF_MFX_PRM2\"] = 0x0015,\n [\"SNTF_MFX_PRM3\"] = 0x0019,\n [\"SNTF_MFX_PRM4\"] = 0x001D,\n [\"SNTF_MFX_PRM5\"] = 0x0021,\n [\"SNTF_MFX_PRM6\"] = 0x0025,\n [\"SNTF_MFX_PRM7\"] = 0x0029,\n [\"SNTF_MFX_PRM8\"] = 0x002D,\n [\"SNTF_MFX_PRM9\"] = 0x0031,\n [\"SNTF_MFX_PRM10\"] = 0x0035,\n [\"SNTF_MFX_PRM11\"] = 0x0039,\n [\"SNTF_MFX_PRM12\"] = 0x003D,\n [\"SNTF_MFX_PRM13\"] = 0x0041,\n [\"SNTF_MFX_PRM14\"] = 0x0045,\n [\"SNTF_MFX_PRM15\"] = 0x0049,\n [\"SNTF_MFX_PRM16\"] = 0x004D,\n [\"SNTF_MFX_PRM17\"] = 0x0051,\n [\"SNTF_MFX_PRM18\"] = 0x0055,\n [\"SNTF_MFX_PRM19\"] = 0x0059,\n [\"SNTF_MFX_PRM20\"] = 0x005D,\n [\"SNTF_MFX_PRM21\"] = 0x0061,\n [\"SNTF_MFX_PRM22\"] = 0x0065,\n [\"SNTF_MFX_PRM23\"] = 0x0069,\n [\"SNTF_MFX_PRM24\"] = 0x006D,\n [\"SNTF_MFX_PRM25\"] = 0x0071,\n [\"SNTF_MFX_PRM26\"] = 0x0075,\n [\"SNTF_MFX_PRM27\"] = 0x0079,\n [\"SNTF_MFX_PRM28\"] = 0x007D,\n [\"SNTF_MFX_PRM29\"] = 0x0101,\n [\"SNTF_MFX_PRM30\"] = 0x0105,\n [\"SNTF_MFX_PRM31\"] = 0x0109,\n [\"SNTF_MFX_PRM32\"] = 0x010D,\n\n [\"SDKC_NAME\"] = 0x0000,\n [\"SDKC_LEVEL\"] = 0x0010,\n [\"SDKC_AMBIENCE_LEVEL\"] = 0x0011,\n [\"SDKC_PHRASE\"] = 0x0012,\n [\"SDKC_TFX_SW\"] = 0x0013,\n\n [\"SDKF_MFX_TYPE\"] = 0x0000,\n [\"SDKF_MFX_DRY_SEND\"] = 0x0001,\n [\"SDKF_MFX_CHO_SEND\"] = 0x0002,\n [\"SDKF_MFX_REV_SEND\"] = 0x0003,\n [\"SDKF_MFX_CTRL1_SRC\"] = 0x0005,\n [\"SDKF_MFX_CTRL1_SENS\"] = 0x0006,\n [\"SDKF_MFX_CTRL2_SRC\"] = 0x0007,\n [\"SDKF_MFX_CTRL2_SENS\"] = 0x0008,\n [\"SDKF_MFX_CTRL3_SRC\"] = 0x0009,\n [\"SDKF_MFX_CTRL3_SENS\"] = 0x000A,\n [\"SDKF_MFX_CTRL4_SRC\"] = 0x000B,\n [\"SDKF_MFX_CTRL4_SENS\"] = 0x000C,\n [\"SDKF_MFX_CTRL_ASGN1\"] = 0x000D,\n [\"SDKF_MFX_CTRL_ASGN2\"] = 0x000E,\n [\"SDKF_MFX_CTRL_ASGN3\"] = 0x000F,\n [\"SDKF_MFX_CTRL_ASGN4\"] = 0x0010,\n [\"SDKF_MFX_PRM1\"] = 0x0011,\n [\"SDKF_MFX_PRM2\"] = 0x0015,\n [\"SDKF_MFX_PRM3\"] = 0x0019,\n [\"SDKF_MFX_PRM4\"] = 0x001D,\n [\"SDKF_MFX_PRM5\"] = 0x0021,\n [\"SDKF_MFX_PRM6\"] = 0x0025,\n [\"SDKF_MFX_PRM7\"] = 0x0029,\n [\"SDKF_MFX_PRM8\"] = 0x002D,\n [\"SDKF_MFX_PRM9\"] = 0x0031,\n [\"SDKF_MFX_PRM10\"] = 0x0035,\n [\"SDKF_MFX_PRM11\"] = 0x0039,\n [\"SDKF_MFX_PRM12\"] = 0x003D,\n [\"SDKF_MFX_PRM13\"] = 0x0041,\n [\"SDKF_MFX_PRM14\"] = 0x0045,\n [\"SDKF_MFX_PRM15\"] = 0x0049,\n [\"SDKF_MFX_PRM16\"] = 0x004D,\n [\"SDKF_MFX_PRM17\"] = 0x0051,\n [\"SDKF_MFX_PRM18\"] = 0x0055,\n [\"SDKF_MFX_PRM19\"] = 0x0059,\n [\"SDKF_MFX_PRM20\"] = 0x005D,\n [\"SDKF_MFX_PRM21\"] = 0x0061,\n [\"SDKF_MFX_PRM22\"] = 0x0065,\n [\"SDKF_MFX_PRM23\"] = 0x0069,\n [\"SDKF_MFX_PRM24\"] = 0x006D,\n [\"SDKF_MFX_PRM25\"] = 0x0071,\n [\"SDKF_MFX_PRM26\"] = 0x0075,\n [\"SDKF_MFX_PRM27\"] = 0x0079,\n [\"SDKF_MFX_PRM28\"] = 0x007D,\n [\"SDKF_MFX_PRM29\"] = 0x0101,\n [\"SDKF_MFX_PRM30\"] = 0x0105,\n [\"SDKF_MFX_PRM31\"] = 0x0109,\n [\"SDKF_MFX_PRM32\"] = 0x010D,\n\n [\"SDKCQ_COMP1_SW\"] = 0x0000,\n [\"SDKCQ_COMP1_ATTACK\"] = 0x0001,\n [\"SDKCQ_COMP1_RELEASE\"] = 0x0002,\n [\"SDKCQ_COMP1_THRESHOLD\"] = 0x0003,\n [\"SDKCQ_COMP1_RATIO\"] = 0x0004,\n [\"SDKCQ_COMP1_POSTGAIN\"] = 0x0005,\n [\"SDKCQ_EQ1_SW\"] = 0x0006,\n [\"SDKCQ_EQ1_LOWFREQ\"] = 0x0007,\n [\"SDKCQ_EQ1_LOWGAIN\"] = 0x0008,\n [\"SDKCQ_EQ1_MIDFREQ\"] = 0x0009,\n [\"SDKCQ_EQ1_MIDGAIN\"] = 0x000A,\n [\"SDKCQ_EQ1_MIDQ\"] = 0x000B,\n [\"SDKCQ_EQ1_HIGHFREQ\"] = 0x000C,\n [\"SDKCQ_EQ1_HIGHGAIN\"] = 0x000D,\n [\"SDKCQ_COMP2_SW\"] = 0x000E,\n [\"SDKCQ_COMP2_ATTACK\"] = 0x000F,\n [\"SDKCQ_COMP2_RELEASE\"] = 0x0010,\n [\"SDKCQ_COMP2_THRESHOLD\"] = 0x0011,\n [\"SDKCQ_COMP2_RATIO\"] = 0x0012,\n [\"SDKCQ_COMP2_POSTGAIN\"] = 0x0013,\n [\"SDKCQ_EQ2_SW\"] = 0x0014,\n [\"SDKCQ_EQ2_LOWFREQ\"] = 0x0015,\n [\"SDKCQ_EQ2_LOWGAIN\"] = 0x0016,\n [\"SDKCQ_EQ2_MIDFREQ\"] = 0x0017,\n [\"SDKCQ_EQ2_MIDGAIN\"] = 0x0018,\n [\"SDKCQ_EQ2_MIDQ\"] = 0x0019,\n [\"SDKCQ_EQ2_HIGHFREQ\"] = 0x001A,\n [\"SDKCQ_EQ2_HIGHGAIN\"] = 0x001B,\n [\"SDKCQ_COMP3_SW\"] = 0x001C,\n [\"SDKCQ_COMP3_ATTACK\"] = 0x001D,\n [\"SDKCQ_COMP3_RELEASE\"] = 0x001E,\n [\"SDKCQ_COMP3_THRESHOLD\"] = 0x001F,\n [\"SDKCQ_COMP3_RATIO\"] = 0x0020,\n [\"SDKCQ_COMP3_POSTGAIN\"] = 0x0021,\n [\"SDKCQ_EQ3_SW\"] = 0x0022,\n [\"SDKCQ_EQ3_LOWFREQ\"] = 0x0023,\n [\"SDKCQ_EQ3_LOWGAIN\"] = 0x0024,\n [\"SDKCQ_EQ3_MIDFREQ\"] = 0x0025,\n [\"SDKCQ_EQ3_MIDGAIN\"] = 0x0026,\n [\"SDKCQ_EQ3_MIDQ\"] = 0x0027,\n [\"SDKCQ_EQ3_HIGHFREQ\"] = 0x0028,\n [\"SDKCQ_EQ3_HIGHGAIN\"] = 0x0029,\n [\"SDKCQ_COMP4_SW\"] = 0x002A,\n [\"SDKCQ_COMP4_ATTACK\"] = 0x002B,\n [\"SDKCQ_COMP4_RELEASE\"] = 0x002C,\n [\"SDKCQ_COMP4_THRESHOLD\"] = 0x002D,\n [\"SDKCQ_COMP4_RATIO\"] = 0x002E,\n [\"SDKCQ_COMP4_POSTGAIN\"] = 0x002F,\n [\"SDKCQ_EQ4_SW\"] = 0x0030,\n [\"SDKCQ_EQ4_LOWFREQ\"] = 0x0031,\n [\"SDKCQ_EQ4_LOWGAIN\"] = 0x0032,\n [\"SDKCQ_EQ4_MIDFREQ\"] = 0x0033,\n [\"SDKCQ_EQ4_MIDGAIN\"] = 0x0034,\n [\"SDKCQ_EQ4_MIDQ\"] = 0x0035,\n [\"SDKCQ_EQ4_HIGHFREQ\"] = 0x0036,\n [\"SDKCQ_EQ4_HIGHGAIN\"] = 0x0037,\n [\"SDKCQ_COMP5_SW\"] = 0x0038,\n [\"SDKCQ_COMP5_ATTACK\"] = 0x0039,\n [\"SDKCQ_COMP5_RELEASE\"] = 0x003A,\n [\"SDKCQ_COMP5_THRESHOLD\"] = 0x003B,\n [\"SDKCQ_COMP5_RATIO\"] = 0x003C,\n [\"SDKCQ_COMP5_POSTGAIN\"] = 0x003D,\n [\"SDKCQ_EQ5_SW\"] = 0x003E,\n [\"SDKCQ_EQ5_LOWFREQ\"] = 0x003F,\n [\"SDKCQ_EQ5_LOWGAIN\"] = 0x0040,\n [\"SDKCQ_EQ5_MIDFREQ\"] = 0x0041,\n [\"SDKCQ_EQ5_MIDGAIN\"] = 0x0042,\n [\"SDKCQ_EQ5_MIDQ\"] = 0x0043,\n [\"SDKCQ_EQ5_HIGHFREQ\"] = 0x0044,\n [\"SDKCQ_EQ5_HIGHGAIN\"] = 0x0045,\n [\"SDKCQ_COMP6_SW\"] = 0x0046,\n [\"SDKCQ_COMP6_ATTACK\"] = 0x0047,\n [\"SDKCQ_COMP6_RELEASE\"] = 0x0048,\n [\"SDKCQ_COMP6_THRESHOLD\"] = 0x0049,\n [\"SDKCQ_COMP6_RATIO\"] = 0x004A,\n [\"SDKCQ_COMP6_POSTGAIN\"] = 0x004B,\n [\"SDKCQ_EQ6_SW\"] = 0x004C,\n [\"SDKCQ_EQ6_LOWFREQ\"] = 0x004D,\n [\"SDKCQ_EQ6_LOWGAIN\"] = 0x004E,\n [\"SDKCQ_EQ6_MIDFREQ\"] = 0x004F,\n [\"SDKCQ_EQ6_MIDGAIN\"] = 0x0050,\n [\"SDKCQ_EQ6_MIDQ\"] = 0x0051,\n [\"SDKCQ_EQ6_HIGHFREQ\"] = 0x0052,\n [\"SDKCQ_EQ6_HIGHGAIN\"] = 0x0053,\n\n [\"SDKN_INST_NUM\"] = 0x0000,\n [\"SDKN_INST_LEVEL\"] = 0x0004,\n [\"SDKN_INST_PAN\"] = 0x0005,\n [\"SDKN_INST_CHO_SEND\"] = 0x0006,\n [\"SDKN_INST_REV_SEND\"] = 0x0007,\n [\"SDKN_PIT_FINE\"] = 0x0008,\n [\"SDKN_ATTACK\"] = 0x000C,\n [\"SDKN_DECAY\"] = 0x000D,\n [\"SDKN_BRIGHTNESS\"] = 0x000E,\n [\"SDKN_FLAM_CTRL\"] = 0x000F,\n [\"SDKN_DYN_RANG\"] = 0x0010,\n [\"SDKN_STEREO_WIDTH\"] = 0x0011,\n [\"SDKN_OUTPUT_ASSIGN\"] = 0x0012,\n [\"PRM\"] = 0,\n [\"RESERVE_DUMMY\"] = 0x0000\n}\n\n\nMfx_Types = {\n SNA = \"SNA\",\n SNS = \"SNS\",\n SND = \"SND\",\n PCMS = \"PCMS\",\n PCMD = \"PCMD\"\n}\n\nMfx_Ids = {\n SNA = \"PRM-_FPARTxxx-_SNTONE-_SNTF\",\n SNS = \"PRM-_FPARTxxx-_SHPAT-_SHPF\",\n SND = \"PRM-_FPARTxxx-_KIT-_KF\",\n PCMS = \"PRM-_FPARTxxx-_PAT-_PF\",\n PCMD = \"PRM-_FPARTxxx-_RHY-_RF\"\n}\n\nMfx_Type_Ids = {\n SNA = Mfx_Ids[Mfx_Types.SNA] .. \"-_SNTF-SNTF_MFX_TYPE\",\n SNS = Mfx_Ids[Mfx_Types.SNS] .. \"-_SHPF-SHPF_MFX_TYPE\",\n SND = Mfx_Ids[Mfx_Types.SND] .. \"-_KF-SDKF_MFX_TYPE\",\n PCMS = Mfx_Ids[Mfx_Types.PCMS] .. \"-RFPF_MFX_TYPE\",\n PCMD = Mfx_Ids[Mfx_Types.PCMD] .. \"-RFRF_MFX_TYPE\"\n}\n\nMfx_Nodes = {\n SNA = SNTF,\n SNS = SHPF,\n SND = KF,\n PCMS = PF,\n PCMD = RF\n}\n\nfunction Get_Adress(id)\n local addr = 0\n for splitted_id_part in string.gmatch(id, \"([^-]+)\") do\n if splitted_id_part == \"PRM\" then\n -- prm has no data representation\n goto continue\n end\n addr = addr + MODEL_ID_MAP[splitted_id_part];\n ::continue::\n end\n return addr\nend\n\nfunction Get_Node(id)\n local result = {\n addr = 0,\n node = nil\n }\n local nodes = I7ROOT_NODE\n local node = nil\n for splitted_id_part in string.gmatch(id, \"([^-]+)\") do\n node = nil\n if splitted_id_part == \"PRM\" then\n -- prm has no data representation\n goto continue\n end\n for _, n in pairs(nodes) do\n if splitted_id_part == n.id then\n result.addr = result.addr + MODEL_ID_MAP[splitted_id_part];\n node = n\n nodes = node.children;\n break\n end\n end\n ::continue::\n end\n if node == nil then\n return nil\n end\n result.node = node\n return result\nend\n\nfunction Get_Byte_Size(valueByteSizeType)\n if valueByteSizeType == ZeroByteSize then return 0 end\n if valueByteSizeType == INTEGER1x1\n or valueByteSizeType == INTEGER1x2\n or valueByteSizeType == INTEGER1x3\n or valueByteSizeType == INTEGER1x4\n or valueByteSizeType == INTEGER1x5\n or valueByteSizeType == INTEGER1x6\n or valueByteSizeType == INTEGER1x7 then return 1 end\n if valueByteSizeType == INTEGER2x4 then return 2 end\n if valueByteSizeType == INTEGER4x4 then return 4 end\n if valueByteSizeType == ByteSize12 then return 12 end\n if valueByteSizeType == ByteSize16 then return 16 end\n return 0\n\nend\n\nfunction Value_To_Bytes(v, bytesize)\n local result = {}\n local is_string = type(v) == \"string\"\n if not is_string and bytesize == 1 then\n return {v & 0x7f}\n end\n for i = 1, bytesize, 1 do\n if is_string then\n if i <= #v then\n result[i] = string.byte(v, i)\n else\n result[i] = string.byte(\" \")\n end\n goto continue\n end\n local shift = 4*(bytesize - i)\n result[i] = v >> shift & 0xf\n ::continue::\n end\n return result\nend\n\nfunction ConcatTable(a, b)\n local res = {table.unpack(a)}\n for _, val in pairs(b) do\n table.insert(res, val)\n end\n return res\nend\n\nlocal function Checksum(values, begin_index, end_index)\n local result = 0\n for i = begin_index, end_index, 1 do\n local value = values[i]\n result = result + value\n end\n return -result & 0x7F\nend\n\nfunction Create_Sysex_Message_For_Payload(addr, payload, device_id)\n local result = {table.unpack(ROLAND_DT1)}\n table.insert(result, (addr >> 24) & 0xff)\n table.insert(result, (addr >> 16) & 0xff)\n table.insert(result, (addr >> 8) & 0xff)\n table.insert(result, (addr & 0xff))\n result = ConcatTable(result, payload)\n local checksum = Checksum(result, #ROLAND_DT1+1, #result)\n table.insert(result, checksum)\n table.insert(result, 0xF7)\n if device_id ~= nil then\n result[DEVICE_ID_INDEX] = device_id;\n end\n return result\nend\n\nfunction Create_SysexMessage(nodeinfo, device_id)\n local addr = nodeinfo.addr\n local bytesize = Get_Byte_Size(nodeinfo.node.valueByteSizeType)\n local value_bytes = Value_To_Bytes(nodeinfo.node.value, bytesize)\n return Create_Sysex_Message_For_Payload(addr, value_bytes, device_id)\nend\n\nfunction Bytes_To_String(bytes)\n local chars = {}\n for _, value in pairs(bytes) do\n table.insert(chars, string.format(\"%02x\", value))\n end\n return table.concat(chars, \" \")\nend"}, {"path": "lua/devices/integra7/_tests.lua", "data": "require \"_model\"\nrequire \"_integra7\"\n\nlocal nodeinfo = Get_Node(\"xxx\")\nassert(nodeinfo == nil)\n\nassert(Denormalize100(50, 210, 0) == 50)\nassert(Denormalize100(50, 210, 100) == 210)\n\nlocal nodeinfo = Get_Node(\"PRM-_FPART1\")\nassert(nodeinfo ~= nil)\nassert(Nibble(0x19000000) == 52428800)\nassert(nodeinfo.node.desc == \"Temporary Tone (Studio Mode Part 1)\");\nassert(nodeinfo.node.addr == Nibble(0x19000000));\n\nnodeinfo = Get_Node(\"PRM-_FPART1-_SNTONE-_SNTC-SNTC_MOD_PRM14\");\nassert(nodeinfo ~= nil)\nassert(nodeinfo.node.addr == Nibble(0x002F));\nassert(nodeinfo.node.desc == \"Modify Parameter 14\");\n\nnodeinfo = Get_Node(\"PRM-_SETUP-_STP-_RC2-NESTP_SND_MODE_SD1\");\nassert(nodeinfo ~= nil)\nassert(nodeinfo.node.desc == \"Side 1 Sound Mode\");\n\nnodeinfo = Get_Node(\"PRM-_FPART1-_SNTONE-_SNTC-SNTC_TONE_LEVEL\");\nassert(nodeinfo ~= nil)\nassert(nodeinfo.node.desc == \"Tone Level\");\nnodeinfo.node:setvalue(127)\nlocal sysex = Create_SysexMessage(nodeinfo)\nlocal sysexStr = Bytes_To_String(sysex)\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 02 00 10 7f 56 f7\")\n\nnodeinfo = Get_Node(\"PRM-_FPART1-_SNTONE-_SNTC-SNTC_TONE_LEVEL\");\nassert(nodeinfo ~= nil)\nassert(nodeinfo.node.desc == \"Tone Level\");\nnodeinfo.node:setvalue100(100)\nlocal sysex = Create_SysexMessage(nodeinfo)\nlocal sysexStr = Bytes_To_String(sysex)\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 02 00 10 7f 56 f7\")\n\nnodeinfo.node:setvalue(121)\nsysex = Create_SysexMessage(nodeinfo, 23)\nsysexStr = Bytes_To_String(sysex)\nassert(sysexStr == \"f0 41 17 00 00 64 12 19 02 00 10 79 5c f7\")\n\nnodeinfo = Get_Node(\"PRM-_SYS-_SC-NESC_TUNE\");\nassert(nodeinfo ~= nil)\nassert(nodeinfo.node.desc == \"Master Tune\");\nnodeinfo.node:setvalue(2024)\nsysex = Create_SysexMessage(nodeinfo)\nsysexStr = Bytes_To_String(sysex)\nassert(sysexStr == \"f0 41 10 00 00 64 12 02 00 00 00 00 07 0e 08 61 f7\")\n\nnodeinfo = Get_Node(\"PRM-_SYS-_SC-NESC_TEMPO\");\nassert(nodeinfo ~= nil)\nassert(nodeinfo.node.desc == \"System Tempo\");\nnodeinfo.node:setvalue(250)\nsysex = Create_SysexMessage(nodeinfo)\nsysexStr = Bytes_To_String(sysex)\nassert(sysexStr == \"f0 41 10 00 00 64 12 02 00 00 26 0f 0a 3f f7\")\n\nnodeinfo = Get_Node(\"PRM-_FPART1-_PAT-_PC-RFPC_NAME\");\nassert(nodeinfo ~= nil)\nassert(nodeinfo.node.desc == \"PCM Tone Name\");\nnodeinfo.node:setvalue(\"012345\")\nsysex = Create_SysexMessage(nodeinfo)\nsysexStr = Bytes_To_String(sysex)\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 00 00 00 30 31 32 33 34 35 20 20 20 20 20 20 78 f7\")\n\n\nlocal sysexMessages = Get_Set_Mfx_Type_Messages(Mfx_Types.SNA, 1, 14)\n-- set mfx type\nsysexStr = Bytes_To_String(sysexMessages[1])\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 02 02 00 0e 55 f7\")\n-- set default values\nsysexStr = Bytes_To_String(sysexMessages[2])\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 02 02 0d 00 00 00 00 08 00 00 03 08 00 08 0c 08 00 05 00 08 00 07 0f 08 00 04 00 08 00 00 0f 08 00 00 0f 08 00 07 0f 2c f7\")\n\nsysexMessages = Get_Set_Mfx_Type_Messages(Mfx_Types.SNS, 2, 0)\n-- set mfx type\nsysexStr = Bytes_To_String(sysexMessages[1])\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 21 02 00 00 44 f7\")\n-- set default values\nsysexStr = Bytes_To_String(sysexMessages[2])\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 21 02 0d 00 00 00 00 08 00 00 00 2f f7\")\n\nsysexMessages = Get_Set_Mfx_Type_Messages(Mfx_Types.SND, 3, 67)\n-- set mfx type\nsysexStr = Bytes_To_String(sysexMessages[1])\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 43 02 00 43 5f f7\")\n-- set default values\nsysexStr = Bytes_To_String(sysexMessages[2])\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 43 02 0d 00 00 00 00 08 00 01 04 08 00 00 00 08 00 00 0a 08 00 01 02 08 00 01 0e 08 00 03 02 08 00 01 04 08 00 00 01 08 00 00 0a 08 00 01 02 08 00 02 08 08 00 04 0f 08 00 03 02 08 00 07 0f 34 f7\")\n\nsysexMessages = Get_Set_Mfx_Type_Messages(Mfx_Types.PCMS, 4, 16)\n-- set mfx type\nsysexStr = Bytes_To_String(sysexMessages[1])\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 60 02 00 10 75 f7\")\n-- set default values\nsysexStr = Bytes_To_String(sysexMessages[2])\nassert(sysexStr == \"f0 41 10 00 00 64 12 19 60 02 0d 00 00 00 00 08 00 00 00 08 00 00 01 08 00 05 00 08 00 00 09 08 00 06 00 08 00 00 0f 08 00 00 0f 08 00 07 0f 6f f7\")\n\n\nsysexMessages = Get_Set_Mfx_Type_Messages(Mfx_Types.PCMD, 5, 18)\n-- set mfx type\nsysexStr = Bytes_To_String(sysexMessages[1])\nassert(sysexStr == \"f0 41 10 00 00 64 12 1a 10 02 00 12 42 f7\")\n-- set default values\nsysexStr = Bytes_To_String(sysexMessages[2])\nassert(sysexStr == \"f0 41 10 00 00 64 12 1a 10 02 0d 00 00 00 00 08 00 07 0f 08 00 00 00 08 00 01 0e 08 00 07 0f 08 00 07 0f 08 00 00 00 08 00 01 0e 08 00 00 00 08 00 07 0f 08 00 00 00 08 00 01 0e 08 00 07 0f 08 00 00 00 08 00 00 00 08 00 01 0e 08 00 00 00 08 00 00 01 08 00 00 0a 08 00 01 02 08 00 03 02 08 00 00 00 08 00 03 0c 08 00 00 00 08 00 00 00 08 00 07 0f 1d f7\")\n"}, {"path": "lua/devices/integra7/i7mfxparam.lua", "data": "-- <command name=\"i7mfxtype\" where=\"voicingStrategy\" using=\"lua/voicings/inversion.lua\">\n-- set the value for a mfx parameter.\n-- </command>\n-- <param name=\"partId\" optional=\"-1\" type=\"1..16\" type=\"number\">the part number, will be detected via instrument channel if not set.</param>\n-- <param name=\"paramNr\" type=\"1..32\" type=\"number\">the mfx parameter number</param>\n-- <param name=\"toneType\" type=\"[sna, sns, snd, pcms, pcmd]\">the type of the tone on the target part</param>\n-- <param name=\"value\" type=\"number\">the value</param>\n-- <param name=\"deviceId\" optional=\"1\" type=\"16..31\">an alternative device id</param>\n\nrequire \"lua/com/com\"\nrequire \"_model\"\nrequire \"_integra7\"\nlocal i7p = require \"i7parameter\"\n\nparameters = {\n { name=\"partId\", default=-1 },\n { name=\"paramNr\" },\n { name=\"toneType\" },\n { name=\"value\" },\n { name=\"deviceId\", default=16 },\n}\n\nlocal toneTypeMap = {\n sna = Mfx_Types.SNA,\n sns = Mfx_Types.SNS,\n snd = Mfx_Types.SND,\n pcms = Mfx_Types.PCMS,\n pcmd = Mfx_Types.PCMD\n}\n\nlocal mfx_param_templates = {\n SNA = Mfx_Ids[Mfx_Types.SNA] .. \"-_SNTF-SNTF_MFX_PRM%i\",\n SNS = Mfx_Ids[Mfx_Types.SNS] .. \"-_SHPF-SHPF_MFX_PRM%i\",\n SND = Mfx_Ids[Mfx_Types.SND] .. \"-_KF-SDKF_MFX_PRM%i\",\n PCMS = Mfx_Ids[Mfx_Types.PCMS] .. \"-RFPF_MFX_PRM%i\",\n PCMD = Mfx_Ids[Mfx_Types.PCMD] .. \"-RFRF_MFX_PRM%i\"\n}\n\n\nfunction execute(params, timeinfo, context)\n local mfxType = toneTypeMap[params.toneType]\n if mfxType == nil then\n error(\"invalid tone type \" .. params.toneType)\n end\n local parameterNr = tonumber(params.paramNr)\n if parameterNr == nil or parameterNr < 1 or parameterNr > 32 then\n error(\"invalid parameterNr \" .. params.paramNr)\n end\n params.parameterId = string.format(mfx_param_templates[mfxType], parameterNr)\n local events = i7p.execute(params, timeinfo, context)\n return events\nend\n\nfunction perform(events, params, timeinfo, context)\n local messages = execute(params, timeinfo, context)\n for _, message in pairs(messages) do\n table.insert(events, message)\n end\n return events\nend\n\nreturn {execute = execute}"}, {"path": "lua/devices/integra7/i7mfxtype.lua", "data": "-- <command name=\"i7mfxtype\" where=\"voicingStrategy\" using=\"lua/voicings/inversion.lua\">\n-- set the mfx type for a part.\n-- </command>\n-- <param name=\"partId\" optional=\"-1\" type=\"1..16\" type=\"number\">the part number, will be detected via instrument channel if not set.</param>\n-- <param name=\"typeNr\" type=\"0..67\" type=\"number\">the mfx type</param>\n-- <param name=\"toneType\" type=\"[sna, sns, snd, pcms, pcmd]\">the type of the tone on the target part</param>\n-- <param name=\"deviceId\" optional=\"1\" type=\"16..31\">an alternative device id</param>\n\nrequire \"lua/com/com\"\nrequire \"_model\"\nrequire \"_integra7\"\nlocal i7p = require \"i7parameter\"\n\nparameters = {\n { name=\"partId\", default=-1 },\n { name=\"typeNr\" },\n { name=\"toneType\" },\n { name=\"deviceId\", default=16 },\n}\n\nlocal toneTypeMap = {\n sna = Mfx_Types.SNA,\n sns = Mfx_Types.SNS,\n snd = Mfx_Types.SND,\n pcms = Mfx_Types.PCMS,\n pcmd = Mfx_Types.PCMD\n}\n\n\nfunction execute(params, timeinfo, context)\n local part_ids = i7p.get_partids(params, context)\n local mfxType = toneTypeMap[params.toneType]\n if mfxType == nil then\n error(\"invalid tone type \" .. params.toneType)\n end\n local typeNr = tonumber(params.typeNr)\n if typeNr == nil or typeNr < 0 or typeNr > 67 then\n error(\"typeNr out of bounds \" .. typeNr)\n end\n local device_id = tonumber(params.deviceId)\n if device_id == nil or device_id < 16 or device_id > 31 then\n error(\"invalid device id: \" .. device_id)\n end\n local messages = {}\n for _, part_id in pairs(part_ids) do\n local sysex = Get_Set_Mfx_Type_Messages(mfxType, part_id, typeNr, device_id)\n table.insert(messages, { -- set type\n [\"type\"] = \"sysex\",\n [\"sysexData\"] = sysex[1],\n [\"prio\"] = SYSEX_PRIO_INIT\n })\n table.insert(messages, { -- set default values\n [\"type\"] = \"sysex\",\n [\"sysexData\"] = sysex[2],\n [\"prio\"] = SYSEX_PRIO_SET_DEFAULT\n })\n end\n return messages\nend\n\nfunction perform(events, params, timeinfo, context)\n local messages = execute(params, timeinfo, context)\n for _, message in pairs(messages) do\n table.insert(events, message)\n end\n return events\nend\n\nreturn {execute = execute}"}, {"path": "lua/devices/integra7/i7parameter.lua", "data": "-- <command name=\"integra7\" where=\"mod\" using=\"lua/devices/integra7/integra7.lua\">\n-- A generic way to create integra7 parameter sysex messages\n-- </command>\n-- <param name=\"parameterId\" optional=\"0\" type=\"string\">the parameter (node) id. As placeholder for the partId can `xxx` be used. For exampe `PRM-_PRF-_FPxxx-NEFP_OUT_ASGN`</param>\n-- <param name=\"value\" optional=\"0\" type=\"number|string\">the value</param>\n-- <param name=\"partId\" optional=\"1\" type=\"0..15\">specifies the part id. If not set, will be determined using its related instrument channel(s), assuming that the channel never changes.</param>\n-- <param name=\"deviceId\" optional=\"1\" type=\"16..31\">an alternative device id</param>\n\nrequire \"lua/com/com\"\nrequire \"_integra7\"\n\nparameters = {\n { name=\"parameterId\"},\n { name=\"value\"},\n { name=\"partId\", default=-1 },\n { name=\"deviceId\", default=16 },\n}\n\nlocal function get_partids(params, context)\n if isnumber(params.partId) then\n return { tonumber(params.partId) }\n end\n local part_ids = {}\n local function get_id_from_instrument(instrument)\n if instrument.children ~= nil then\n for _, child in pairs(instrument.children) do\n get_id_from_instrument(child)\n end\n return\n end\n table.insert(part_ids, instrument.midiChannel + 1)\n end\n local instrument = context:getCurrentInstrument()\n get_id_from_instrument(instrument)\n return part_ids\nend\n\n\nfunction execute(params, timeinfo, context)\n local part_ids = get_partids(params, context)\n local messages = {}\n local value = tonumber(params.value)\n local node_id_template = params.parameterId\n local device_id = tonumber(params.deviceId)\n if device_id == nil or device_id < 16 or device_id > 32 then\n error(\"invalid device id: \" .. device_id)\n end\n for _, part_id in pairs(part_ids) do\n local sysex = Create_Sysex_Message_For_Node(part_id, node_id_template, value, device_id)\n table.insert(messages, {\n [\"type\"] = \"sysex\",\n [\"sysexData\"] = sysex,\n [\"prio\"] = SYSEX_PRIO_MOD\n })\n end\n return messages\nend\n\nfunction perform(events, params, timeinfo, context)\n local messages = execute(params, timeinfo, context)\n for _, message in pairs(messages) do\n table.insert(events, message)\n end\n return events\nend\n\nreturn {execute = execute, get_partids = get_partids}"}, {"path": "lua/devices/integra7/i7sntcmod.lua", "data": "-- <command name=\"i7sntcmod\" where=\"voicingStrategy\" using=\"lua/voicings/inversion.lua\">\n-- set a mod value for a sna tone type instrument\n-- </command>\n-- <param name=\"partId\" optional=\"-1\" type=\"1..16\" type=\"number\">the part number, will be detected via instrument channel if not set.</param>\n-- <param name=\"modNr\" type=\"1..32\" type=\"number\">the mod number.</param>\n-- <param name=\"value\" type=\"number\">the value</param>\n-- <param name=\"deviceId\" optional=\"1\" type=\"16..31\">an alternative device id</param>\n\nrequire \"lua/com/com\"\nlocal i7p = require \"i7parameter\"\n\nparameters = {\n { name=\"partId\", default=-1 },\n { name=\"modNr\"},\n { name=\"value\"},\n { name=\"deviceId\", default=16 },\n}\n\nlocal node_id_template = \"PRM-_FPARTxxx-_SNTONE-_SNTC-SNTC_MOD_PRM%i\"\n\nfunction execute(params, timeinfo, context)\n local modNr = tonumber(params.modNr)\n if modNr < 1 or modNr > 32 then\n error(\"modNr out of bounds \" .. modNr)\n end\n params.parameterId = string.format(node_id_template, modNr)\n return i7p.execute(params, timeinfo, context)\nend\n\nfunction perform(events, params, timeinfo, context)\n local messages = execute(params, timeinfo, context)\n for _, message in pairs(messages) do\n table.insert(events, message)\n end\n return events\nend\n\nreturn {execute = execute}"}, {"path": "lua/voicings/com.lua", "data": "require \"lua/com/com\"\n\nPitchRanges = {\n contrabass = { min=28, max=55 },\n bass = { min=40, max=60 },\n baritone = { min=45, max=69 },\n tenor = { min=48, max=72 },\n alto = { min=53, max=77 },\n mezzosoprano = { min=57, max=81 },\n soprano = { min=60, max=84 }\n}\n\nNoRangeSet = \"__noRangeSet\"\nNoImportantDegreesSet = \"_noImportantDegreesSet\"\nNoNumberSet = \"__noNumberSet\"\n\nSolverDefaultParameter = {\n -- can be contrabass, bass, baritone, tenor, alto, mezzosoprano, soprano\n { name=\"range\", default=NoRangeSet },\n { name=\"importantDegrees\", default=NoImportantDegreesSet },\n { name=\"importantDegree\", default=NoImportantDegreesSet },\n}\n\nfunction CheckForLegacyParameters(params)\n checkLegacyNamedParams(params, \"range\", \"importantDegrees\", \"importantDegree\")\nend\n\nfunction Transpose(pitches, numOctaves)\n for i, pitch in pairs(pitches) do\n pitch.octave = pitch.octave + numOctaves\n end\nend\n\nfunction KeepRange(pitches, strRange)\n if strRange == nil or strRange ==NoRangeSet then\n return;\n end\n local destinationRange = PitchRanges[strRange]\n if destinationRange == nil then\n error(\"strRange \" .. strRange .. \" not defined\")\n end\n local nbUnder = 0\n local nbOver = 0\n local mindiff = math.maxinteger\n local maxdiff = math.mininteger\n for i, pitch in pairs(pitches) do\n local midipitch = toMidiPitch(pitch)\n if midipitch > destinationRange.max then\n local diff = midipitch - destinationRange.max\n if diff > maxdiff then\n maxdiff = diff\n end\n nbOver = nbOver + 1\n end\n if midipitch < destinationRange.min then\n local diff = destinationRange.min - midipitch\n if diff < mindiff then\n mindiff = diff\n end\n nbUnder = nbUnder + 1\n end\n end\n if nbUnder > nbOver then\n local octaves = math.ceil(mindiff/12)\n Transpose(pitches, octaves)\n end\n if nbUnder < nbOver then\n local octaves = -math.ceil(maxdiff/12)\n Transpose(pitches, octaves)\n end\nend"}, {"path": "lua/voicings/guitar.lua", "data": "-- <command name=\"guitar\" where=\"voicingStrategy\" using=\"lua/voicings/guitar.lua\">\n-- <![CDATA[\n-- Tries to simulate the chord voicing of an guitar.\n-- ```language=Werckmeister\\n\n--using \"/lua/voicings/guitar.lua\";\\n\n--using \"/chords/default.chords\";\n--tempo: 120;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef:piano MyDevice _ch=0 _pc=0;\\n\n--[\\n\n--type: template;\\n\n--name: myTemplate;\\n\n--instrument: piano;\\n\n--{\\n\n-- /voicingStrategy: guitar/\\n\n-- <I II III IV V VI VII>1\\n\n--}\\n\n--]\\n\n--[\\n\n--type: accomp;\n--{\\n\n-- /template: myTemplate/\n-- C | F | G | C |\\n\n--}\\n\n--]\\n\n-- ```\n-- ]]>\n-- </command>\n-- <param name=\"range\" optional=\"1\" type=\"[contrabass,bass,baritone,tenor,alto,mezzosoprano,soprano]\">If given the strategy tries to keeps the range by shifting the octave of the chord.</param>\n\nrequire \"lua/com/com\"\nrequire \"lua/com/globals\"\nrequire \"com\"\n\nparameters = {\n table.unpack(SolverDefaultParameter)\n}\n\n-- https://www.8notes.com \n-- https://www.oolimo.de/gitarrenakkorde/find\n-- https://www.scales-chords.com/chord/piano/\nVoicingMatrix = {\n -- [\"1234567/bass\"] = {degrees},\n [\"1010100\"] = {I, V, I, III, I}, -- base\n [\"1100100\"] = {I, V, I, II}, -- sus2\n [\"1001100\"] = {I, V, I, IV, V }, -- sus4\n [\"1001101\"] = {I, V, VII, IV, V}, -- 7sus4\n [\"1101101\"] = {I, IV, VII, II, V}, -- 9sus4\n [\"1010110\"] = {I, VI, III, V}, -- 6\n [\"1110110\"] = {I, VI, III, V, II}, -- 6/9\n [\"1010101\"] = {I, V, VII, III, I}, -- 7\n [\"1110101\"] = {I, III, VII, II}, -- 9\n [\"1110100\"] = {I, V, II, III}, -- add9\n [\"1011101\"] = {I, IV, VII, III}, -- 11\n [\"1011001\"] = {I, VII, III, IV}, -- 7#11\n [\"1010111\"] = {I, V, VII, III, VI}, -- 13\n [\"1010101/7\"] = {VII, V, I, III}, -- /7\n [\"1010100/5\"] = {V, I, III, V}, -- /5\n [\"1011100/4\"] = {IV, V, I, III}, -- /4\n [\"1010100/3\"] = {III, V, I, III}, -- /3\n [\"1110100/2\"] = {II, V, I, III}, -- /2\n}\n\n\n-- returns the degrees defined for a chord as a bit string.\n-- e.g.: Xmaj's degrees are defined as I III V\n-- 1234567\n-- as bitstring = 1010100\n-- if chord is a slash chord, the degree value will be appended as number.\n-- e.g.: X/V = 1010100/5\nfunction ChordToHashString(chord)\n local bits = {}\n local slashAppendings = {}\n local degrees = chord.degrees\n for i=1, 7 do\n if degrees[i] == nil or chord:isDegreeAdjunct(i) then\n bits[i] = 0\n else\n bits[i] = 1\n if chord.degrees[i] < 0 then\n table.insert(slashAppendings, i)\n end\n end\n end\n if #slashAppendings == 0 then\n return table.concat(bits)\n end\n return table.concat(bits) .. \"/\" .. table.concat(slashAppendings)\nend\n\nfunction ToDegreeToPitchMap(pitches)\n local deg2pitch = {}\n for _, pitchDef in ipairs(pitches) do\n deg2pitch[pitchDef.degree] = pitchDef.pitch\n end\n return deg2pitch\nend\n\nfunction solve(chord, pitches, parameters, timeinfo)\n CheckForLegacyParameters(parameters)\n if #pitches < 3 then\n return pitches\n end\n local strDegrees = ChordToHashString(chord)\n local voicing = VoicingMatrix[strDegrees]\n local deg2pitch = ToDegreeToPitchMap(pitches)\n local result = {}\n local octave = -1\n local lastDegree = -1\n for _, degree in ipairs(voicing) do\n if degree <= lastDegree then \n octave = octave + 1\n end\n local pitch = deg2pitch[degree]\n if pitch == nil then\n goto continue\n end\n lastDegree = degree\n table.insert(result, {\n degree = degree,\n octave = octave,\n pitch = pitch\n });\n ::continue::\n end\n KeepRange(result, parameters.range)\n return result\nend"}, {"path": "lua/voicings/inversion.lua", "data": "-- <command name=\"inversion\" where=\"voicingStrategy\" using=\"lua/voicings/inversion.lua\">\n-- <![CDATA[\n-- creates an inversion by moving the lowest note an octave hihgher.\n-- ```language=Werckmeister\\n\n--using \"/lua/voicings/inversion.lua\";\\n\n--using \"/chords/default.chords\";\n--tempo: 120;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef:piano MyDevice _ch=0 _pc=0;\\n\n--[\\n\n--type: template;\\n\n--name: myTemplate;\\n\n--instrument: piano;\\n\n--{\\n\n-- /voicingStrategy: inversion/\\n\n-- <I II III IV V VI VII>1\\n\n--}\\n\n--]\\n\n--[\\n\n--type: accomp;\n--{\\n\n-- /template: myTemplate/\n-- C | F | G | C |\\n\n--}\\n\n--]\\n\n-- ```\n-- ]]>\n-- </command>\n-- <param name=\"level\" optional=\"1\" type=\"number\">level of inversion</param>\n-- <param name=\"range\" optional=\"1\" type=\"[contrabass,bass,baritone,tenor,alto,mezzosoprano,soprano]\">If given the strategy tries to keeps the range by shifting the octave of the chord.</param>\n\nrequire \"lua/com/com\"\nrequire \"com\"\n\nparameters = {\n { name=\"level\", default=1 },\n table.unpack(SolverDefaultParameter)\n}\n\nfunction solve(chord, pitches, parameters)\n CheckForLegacyParameters(parameters)\n local inversionLevel = tonumber(parameters.level)\n if inversionLevel == nil then\n inversionLevel = 1\n end\n for _, pitch in pairs(pitches) do\n pitch.octave = pitch.octave + 1\n inversionLevel = inversionLevel - 1\n if inversionLevel == 0 then\n break\n end\n end\n KeepRange(pitches, parameters.range)\n return pitches\nend"}, {"path": "lua/voicings/simple.lua", "data": "-- <command name=\"simple\" where=\"voicingStrategy\" using=\"lua/voicings/simple.lua\">\n-- <![CDATA[\n-- The simple approach with no strategy.\n-- ```language=Werckmeister\\n\n--using \"/lua/voicings/simple.lua\";\\n\n--using \"/chords/default.chords\";\n--tempo: 120;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef:piano MyDevice _ch=0 _pc=0;\\n\n--[\\n\n--type: template;\\n\n--name: myTemplate;\\n\n--instrument: piano;\\n\n--{\\n\n-- /voicingStrategy: simple/\\n\n-- <I II III IV V VI VII>1\\n\n--}\\n\n--]\\n\n--[\\n\n--type: accomp;\n--{\\n\n-- /template: myTemplate/\n-- C | F | G | C |\\n\n--}\\n\n--]\\n\n-- ```\n-- ]]>\n-- </command>\n-- <param name=\"range\" optional=\"1\" type=\"[contrabass,bass,baritone,tenor,alto,mezzosoprano,soprano]\">If given the strategy tries to keeps the range by shifting the octave of the chord.</param>\n\nrequire \"lua/com/com\"\nrequire \"com\"\n\nparameters = {\n table.unpack(SolverDefaultParameter)\n}\n\nfunction solve(chord, pitches, parameters)\n CheckForLegacyParameters(parameters)\n KeepRange(pitches, parameters.range)\n return pitches\nend"}, {"path": "lua/voicings/voicelead.lua", "data": "-- <command name=\"voicelead\" where=\"voicingStrategy\" using=\"lua/voicings/voicelead.lua\">\n-- <![CDATA[\n-- Tries to simulates a voice leading approach:\n-- the octaves of a chord are rearranged, so that the actual pitch distance between the previous chord is kept minimal.\n-- ```language=Werckmeister\\n\n--using \"/lua/voicings/voicelead.lua\";\\n\n--using \"/chords/default.chords\";\n--tempo: 120;\\n\n--device: MyDevice midi 0;\\n\n--instrumentDef:piano MyDevice _ch=0 _pc=0;\\n\n--[\\n\n--type: template;\\n\n--name: myTemplate;\\n\n--instrument: piano;\\n\n--{\\n\n-- /voicingStrategy: voicelead/\\n\n-- <I II III IV V VI VII>1\\n\n--}\\n\n--]\\n\n--[\\n\n--type: accomp;\n--{\\n\n-- /template: myTemplate/\n-- C | F | G | C |\\n\n--}\\n\n--]\\n\n-- ```\n-- ]]>\n-- </command>\n-- <param name=\"range\" optional=\"1\" type=\"[contrabass,bass,baritone,tenor,alto,mezzosoprano,soprano]\">If given the strategy tries to keeps the range by shifting the octave of the chord.</param>\n\nrequire \"lua/com/com\"\nrequire \"lua/com/globals\"\nrequire \"com\"\n\nparameters = {\n table.unpack(SolverDefaultParameter)\n}\n\nlocal previousResult = nil\n\nlocal function GetPitchWithMinDistance(pitch, pitches)\n local min = math.maxinteger\n local minPitch = nil\n local relPitch = pitch.pitch % 12\n for i, refpitch in pairs(pitches) do\n local diff = relpitchdiff(refpitch.pitch, relPitch)\n diff = math.abs(diff)\n if (diff < min) then\n minPitch = refpitch\n min = diff\n end\n end\n return minPitch\nend\n\n-- changes the octave of pitch, so that the interval\n-- between pitch and targetPitch is minimal\nlocal function ChangeOctaveToPitchNextTo(pitch, targetPitch)\n if targetPitch == nil then\n return pitch\n end\n local diff = pitch.pitch - targetPitch.pitch\n pitch.octave = targetPitch.octave\n if (diff > 6) then\n pitch.octave = pitch.octave - 1\n end\n if (diff < -6) then\n pitch.octave = pitch.octave + 1\n end\n return pitch\nend\n\n\n-- compare pitches with a reference and adjust octaves\nlocal function AdjustOctaves(pitches, reference)\n for _, pitch in pairs(pitches) do\n local min = GetPitchWithMinDistance(pitch, reference)\n ChangeOctaveToPitchNextTo(pitch, min)\n end\n return pitches\nend\n\nlocal function SolveImpl(pitches)\n if #pitches < 2\n then\n return pitches\n end\n if previousResult ~= nil\n then\n pitches = AdjustOctaves(pitches, previousResult)\n end\n return pitches\nend\n\nfunction solve(chord, pitches, parameters)\n CheckForLegacyParameters(parameters)\n SolveImpl(pitches)\n KeepRange(pitches, parameters.range)\n previousResult = pitches\n return pitches\nend"}, {"path": "pitchmaps/battery3.tight.pitchmap", "data": "\"bd\": c,,\n\"sn\": d,,\n\"sng\": g# --snare ghost notes\n\"ss\": c#,, -- sidestick\n\"hc\": d#,, -- handclap\n\"ht\": f#,, -- hihat closed\n\"hf\": g#,, -- hihat foot\n\"ho\": bb,, -- hihat open\n\"ho1\": g' -- hihat half open1\n\"ho2\": g#' -- hihat half open2\n\"ho3\": a' -- hihat half open3\n\"cy\": c#,\n\"hto\": c,\n\"hto1\": c,\n\"hto2\": d,\n\"mto\": b,,\n\"mto1\": b,,\n\"mto2\": a,,\n\"lto\": g,,\n\"lto1\": g,,\n\"lto2\": f,,\n\"rdbell\": f#,\n\"mtr\": ab'\n\"otr\": a'\n-- r&l\n\"snl\": d,,\n\"snr\": e,,\n\"riml\": c#,,\n\"rimr\": d#,,\n\"htol\": e,\n\"htor\": f,\n\"mtol\": c,\n\"mtor\": d,\n\"ltol\": b,,\n\"ltor\": a,,\n\"ftol\": g,,\n\"ftor\": f,,\n"}, {"path": "pitchmaps/defaultMIDI.pitchmap", "data": "\"bd\": c,,,,\n\"bd2\": b,,,\n\"o\": b,,,\n\"sn\": d,,\n\"x\": d,,\n\"sn2\": e,,\n\"esn\": e,, -- electric snare\n\"sng\": d,, --snare ghost notes\n\"ss\": c#,, -- sidestick\n\"hc\": d#,, -- handclap\n\"ht\": f#,, -- hihat closed\n\"h\": f#,, -- hihat closed\n\"hf\": g#,, -- hihat foot\n\"h,\": g#,, -- hihat foot\n\"ho\": bb,, -- hihat open\n\"h'\": bb,, -- hihat open\n\"ho1\": bb,, -- hihat half open1\n\"ho2\": bb,, -- hihat half open2\n\"ho3\": bb,, -- hihat half open3\n\"cy\": c#, -- crash cymbal\n\"spl\": g, -- splash cymbal\n\"hto\": c, -- high tom \n\"m'\": c, -- high tom \n\"hto1\": c,\n\"hto2\": d,\n\"mto\": b,, -- middle tom\n\"m\": b,, -- middle tom\n\"mto1\": b,,\n\"mto2\": a,,\n\"lto\": g,, -- low tom\n\"m,\": g,, -- low tom\n\"lto1\": g,,\n\"lto2\": f,,\n\"rcym1\": d#, -- ride cymbal 1\n\"rcym2\": b, -- ride cymbal 2\n\"rbell\": f, -- ride bell\n\"mtr\": ab' -- muted triangle\n\"otr\": a' -- open triangle\n\"bo1\": c --bongo 1\n\"bo2\": c# --bongo 2\n\"tim1\": f --timbale 1\n\"tim2\": f# --timbale 2\n\"ago1\": g --agogo 1\n\"ago2\": g# --agogo 2\n\"cui1\": f#' -- cuica 1\n\"cui2\": g' -- cuica 2\n\"cwb\": g#, -- cowbell\n\"cla\": d#' -- claves\n\"mcon\":d -- mute high conga\n\"ocon\":d# -- open conga\n\"lcon\":e -- low conga\n\"tmb\":f#, -- tambourine \n\n\n\"brsw\": e,, -- brush swirl\n\"brtp\": d,, -- brush tap\n\"brsp\": d#,, -- brush slap"}, {"path": "pitchmaps/defaultMidiDrumMap.pitchmap", "data": "\"bd\": c,,,,\n\"sn\": d,,\n\"sng\": d,, --snare ghost notes\n\"ss\": c#,, -- sidestick\n\"hc\": d#,, -- handclap\n\"ht\": f#,, -- hihat closed\n\"hf\": g#,, -- hihat foot\n\"ho\": bb,, -- hihat open\n\"ho1\": bb,, -- hihat half open1\n\"ho2\": bb,, -- hihat half open2\n\"ho2\": bb,, -- hihat half open3\n\"cy\": c#, -- crash cymal\n\"spl\": g, -- splash cymal\n\"hto\": c, -- high tom \n\"hto1\": c,\n\"hto2\": d,\n\"mto\": b,, -- middle tom\n\"mto1\": b,,\n\"mto2\": a,,\n\"lto\": g,, -- low tom\n\"lto1\": g,,\n\"lto2\": f,,\n\"rdbell\": b,\n\"mtr\": ab' -- muted triangle\n\"otr\": a' -- open triangle\n\"bo1\": c --bongo 1\n\"bo2\": c# --bongo 2\n\"tim1\": f --timbale 1\n\"tim2\": f# --timbale 2\n\"ago1\": g --agogo 1\n\"ago2\": g# --agogo 2\n\"cui1\": f#' -- cuica 1\n\"cui2\": g' -- cuica 2\n\"cwb\": g#, -- cowbell\n\"cla\": d#' -- claves\n\n\"cr\": c#, -- crash cymal\n\"t1\": c, -- high tom \n\"t2\": b,, -- middle tom\n\"t3\": g,, -- low tom\n\"t4\": f,,"}, {"path": "templates/bass.blues.template", "data": "[\ntype: template;\nname: bass.blues.normal; \ninstrument: bass;\n{\n /do: swing _grid=8 _offset =60/\n I,,,8 & I,,& VII,,,& V,,,& |\n}\n]"}, {"path": "templates/bass.bossanova.template", "data": "[\ntype: template;\nname: bass.bossanova.normal;\ninstrument: bass; \n{\n \\fff\n I,,4. V,,8 V,,4. I,,8 |\n I,,4. V,,8 V,,4 I,,4 |\n I,,4. V,,8 V,,4. I,,8 |\n I,,4. V,,8 V,,4 I,,8 V,,8 |\n} \n] \n"}, {"path": "templates/bass.country.template", "data": "[\ntype: template;\nname: bass.country.normal;\ninstrument: bass; \n{\n I,,4. I,,8 V,,,4. V,,,8 |\n} \n] \n\n[\ntype: template;\nname: bass.country.ende;\ninstrument: bass; \n{\n I,,1 |\n} \n] "}, {"path": "templates/bass.disco.template", "data": "[\ntype: template;\nname: bass.disco.normal;\ninstrument: bass;\n{\n \\ffff\n I,,8 I,16 I,16 I,,8 I,16 I,16 I,,8 I,16 I,16 I,,8 I,16 I,16 |\n} \n]\n"}, {"path": "templates/bass.jazzSwing.template", "data": "-- tempo: 155\n-- signature: 4/4\n-- parts: normal\n[\ntype: template;\nname: bass.jazzSwing.normal;\ninstrument: bass; \n{\n I,,2 V,, | \n I,, V,,,4 I,, |\n}\n\n]\n"}, {"path": "templates/bass.reggae.template", "data": "using \"lua/mods/swing.lua\";\n\n[\ntype: template;\nname: bass.reggae.normal;\ninstrument: bass;\n{\n /do: swing _grid=8 _offset =30/\n I,,16 r16 I,,8 r2 V,,,4 |\n I,,16 r16 r8 I,,8 r4. V,,,4 |\n I,,16 r16 I,,8 r2 V,,,4 |\n I,,16 r16 I,,8 r2 V,,,4 |\n}\n]"}, {"path": "templates/bass.soca.template", "data": "[\ntype: template;\nname: bass.soca.normal;\ninstrument: bass;\n{\n r8 r16 I,,32 r32 I,,8 I,,16 r \n r8 r16 I,,32 r32 r16 I,,32 r V,,, r I,, r |\n}\n]"}, {"path": "templates/bossanova.template", "data": "using \"lua/voicings/voicelead.lua\";\nusing \"lua/voicings/simple.lua\";\nusing \"lua/voicings/guitar.lua\";\nusing \"lua/mods/guitarStroke.lua\";\n\n[\ntype: template;\nname: bossanova.normal;\ninstrument: drums;\n{\n \"ht\"8 !f\"ht\" \"ht\" !f\"ht\" \"ht\" \"ht\" \"ht\" !f\"ht\" |\n} \n{\n \\fff\n r4 \"ss\"8 r4 \"ss\"8 r4 | \"ss\"4. \"ss\"8 r4 \"ss\" |\n} \n{\n \"bd\"4. \"bd\"8 \"bd\"4. \"bd\"8 |\n} \n]\n\n[\ntype: template;\nname: bossanova.normal;\ninstrument: guitar; \n{\n /do: guitarStroke _value=32/\n /voicingStrategy: guitar/\n \\f\n <I II III IV V VI VII>4 <I II III IV V VI VII>4 r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>8 |\n r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>8 r4 <I II III IV V VI VII>4 |\n <I II III IV V VI VII>4 <I II III IV V VI VII>4 r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>8 |\n r4 r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>4. |\n} \n] \n\n[\ntype: template;\nname: bossanova.normal;\ninstrument: piano; \n{\n -- /voicingStrategy: simple _range=tenor/\n <VII, VII>4 <III, V,>8 <V, V>8 r8 <III, V,>8 r8 <V, V> | r8 <III, V,>8 r8 <V, V> r8 <III, V,> r8 <VII, VII> |\n} \n] \n\n[\ntype: template;\nname: bossanova.normal;\ninstrument: bass; \n{\n \\fff\n I,,4. V,,8 V,,4. I,,8 |\n I,,4. V,,8 V,,4 I,,4 |\n I,,4. V,,8 V,,4. I,,8 |\n I,,4. V,,8 V,,4 I,,8 V,,8 |\n} \n] \n"}, {"path": "templates/countryschlager1.template", "data": "using \"lua/voicings/guitar.lua\";\nusing \"lua/voicings/voicelead.lua\";\nusing \"lua/mods/guitarStroke.lua\";\n\n[\ntype: template;\nname: countryschlager1.normal;\ninstrument: guitar; \n{\n /do: guitarStroke/\n /voicingStrategy: guitar _range=tenor/\n \\f\n <I II III IV V VI VII>8 <I II III IV V VI VII>8 r8 \n <I II III IV V VI VII>4 <I II III IV V VI VII>8 <I II III IV V VI VII>8 <I II III IV V VI VII>8 |\n} \n]\n\n[\ntype: template;\nname: countryschlager1.normal;\ninstrument: slide; \n{\n \\f\n /modOnce: bend from 0/\n r1 |\n r1 |\n r1 |\n <I' II' III' IV' V' VI' VII'>1 |\n r1 |\n r1 |\n r1 |\n /modOnce: bend to 100/\n <I' II' III' IV' V' VI' VII'>1 |\n} \n] \n\n[\ntype: template;\nname: countryschlager1.normal;\ninstrument: bass; \n{\n I,,4. I,,8 V,,,4. V,,,8 |\n} \n] \n\n[\ntype: template;\nname: countryschlager1.normal;\ninstrument: drums;\n{\n \"ht\"8 !f\"ht\"8 \"ht\"8 !f\"ht\"8 \"ht\"8 !f\"ht\"8 \"ht\"8 !f\"ht\"8 |\n} \n{\n r4 \"sn\" r \"sn\" |\n}\n{\n \"bd\"4. \"bd\"8 \"bd\"4. \"bd\"8 |\n \"bd\"4. \"bd\"8 \"bd\"4. \"bd\"8 |\n \"bd\"4. \"bd\"8 \"bd\"8 !f\"bd\"8 r8 \"bd\"8 |\n} \n] \n\n[\ntype: template;\nname: countryschlager1.ende;\ninstrument: guitar; \n{\n /do: guitarStroke _value=8/\n <I II III IV V VI VII>1 |\n} \n] \n\n[\ntype: template;\nname: countryschlager1.ende;\ninstrument: bass; \n{\n I,,1 |\n} \n] \n\n[\ntype: template;\nname: countryschlager1.ende;\ninstrument: drums;\n{\n \"cy\"1 |\n} \n{\n \"bd\"1|\n} \n]\n\n[\ntype: template;\nname: countryschlager1.ende;\ninstrument: slide; \n{\n \\f\n /modOnce: bend from 1/\n <I' II' III' IV' V' VI' VII'>1 |\n} \n] \n"}, {"path": "templates/drums.bossanova.template", "data": "[\ntype: template;\nname: drums.bossanova.normal;\ninstrument: drums;\n{\n \"ht\"8 !f\"ht\" \"ht\" !f\"ht\" \"ht\" \"ht\" \"ht\" !f\"ht\" |\n} \n{\n \\fff\n r4 \"ss\"8 r4 \"ss\"8 r4 | \"ss\"4. \"ss\"8 r4 \"ss\" |\n} \n{\n \"bd\"4. \"bd\"8 \"bd\"4. \"bd\"8 |\n} \n]"}, {"path": "templates/drums.country.template", "data": "[\ntype: template;\nname: drums.country.normal;\ninstrument: drums;\n{\n \"ht\"8 !f\"ht\"8 \"ht\"8 !f\"ht\"8 \"ht\"8 !f\"ht\"8 \"ht\"8 !f\"ht\"8 |\n} \n{\n r4 \"sn\" r \"sn\" |\n}\n{\n \"bd\"4. \"bd\"8 \"bd\"4. \"bd\"8 |\n \"bd\"4. \"bd\"8 \"bd\"4. \"bd\"8 |\n \"bd\"4. \"bd\"8 \"bd\"8 !f\"bd\"8 r8 \"bd\"8 |\n} \n] \n\n[\ntype: template;\nname: drums.country.cymbal;\ninstrument: drums;\n{\n \"cy\"4 \"ht\"8 !f\"ht\"8 \"ht\"8 !f\"ht\"8 \"ht\"8 !f\"ht\"8 |\n} \n{\n r4 \"sn\" r \"sn\" |\n}\n{\n \"bd\"4. \"bd\"8 \"bd\"4. \"bd\"8 |\n} \n] \n\n[\ntype: template;\nname: drums.country.ende;\ninstrument: drums;\n{\n \"cy\"1 |\n} \n{\n \"bd\"1|\n} \n]"}, {"path": "templates/drums.disco.template", "data": "[\ntype: template;\nname: drums.disco.normal;\ninstrument: drums;\n{\n r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 \"ht\"16 \"ht\"16 r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 \"ht\"16 \"ht\"16 |\n r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 \"ht\"16 \"ht\"16 r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 !ffff<\"sn\" \"ht\">16 !fffff\"sn\"16 |\n \"cy\"8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 \"ht\"16 \"ht\"16 r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 \"ht\"16 \"ht\"16 |\n r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 \"ht\"16 \"ht\"16 r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 <\"sn\" \"ht\">16 !fffff\"sn\"16 |\n} \n{\n \"bd\"4 \"bd\" \"bd\" \"bd\" |\n} \n] \n\n[\ntype: template;\nname: drums.disco.solo;\ninstrument: drums;\n{\n \"bd\"4 \"bd\" \"bd\" \"bd\" |\n} \n] \n\n[\ntype: template;\nname: drums.disco.solo2;\ninstrument: drums;\n{\n \"cy\"8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 \"ht\"16 \"ht\"16 r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 \"ht\"16 \"ht\"16 |\n r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 \"ht\"16 \"ht\"16 r8 \"ht\"16 \"ht\"16 !ffff\"sn\"8 <\"sn\" \"ht\">16 !fffff\"sn\"16 |\n} \n{\n \"bd\"4 \"bd\" \"bd\" \"bd\" |\n} \n] "}, {"path": "templates/drums.jazzSwing.template", "data": "-- tempo: 155\n-- signature: 4/4\n-- parts: normal, bridge\n[\ntype: template;\nname: drums.jazzSwing.bridge;\ninstrument: drumsBrushes; \n{\n (!ff\"rcym1\" r r)4 (\"rcym1\" r !p\"rcym1\") (!ff\"rcym1\" r r) (\"rcym1\" r !p\"rcym1\")\n}\n{\n (r r \"brtp\")4 r4 (r r !p\"brtp\")4 r4 |\n (r r !p\"brtp\")4 r4 (r r !p\"brtp\")4 r4 |\n (r r !p\"brtp\")4 r4 (r r !p\"brtp\")4 r4 |\n (r r !p\"brtp\")4 (r !pp\"brtp\"4 r) (r r !p\"brtp\")4 r4 |\n}\n{\n \\pp\n \"bd2\"4 (r r \"bd2\")4 r2 |\n}\n]\n\n[\ntype: template;\nname: drums.jazzSwing.normal;\ninstrument: drumsBrushes; \n{\n \\pp\n (\"brtp\" !pppp\"brsw\" r)4 (!ppp\"brsp\" r \"brtp\") (\"brtp\" !pppp\"brsw\" r) (!pp\"brsp\" r !p\"brtp\") \n}\n{\n \\p\n r4 \"ht\" r &\n}\n{\n !pp\"bd2\"1 |\n}\n]"}, {"path": "templates/drums.purdie.template", "data": "[\ntype: template;\nname: drums.purdie.normal;\ninstrument: drums; \n{\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n \\p\"ho\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t r8t !pp\"ho\"8t !pp\"ht\"8t |\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n \\p\"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n \\f\"ho\"8t \"ht\"8t \"bd\"8t \\f\"ho\"8t \"ht\"8t r8t \"ht\"8t r8t !pp\"ht\"8t \"ht\"8t r8t !pp\"ht\"8t |\n}\n{\n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t |\n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t | \n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !ppp\"sn\"8t !pp\"sn\"8t |\n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t |\n\n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t |\n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t | \n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r4t r8t | \n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t |\n\n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t |\n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t | \n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !ppp\"sn\"8t !pp\"sn\"8t |\n r8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t \\ff\"sn\"8t !pppp\"sng\"8t r8t r8t !pppp\"sng\"8t r8t | \n}\n{\n \"bd\"4t r8t r4t \"bd\"8t r4t r8t \"bd\"4t r8t |\n}\n]"}, {"path": "templates/drums.reggae.template", "data": "using \"lua/mods/swing.lua\";\n\n\n[\ntype: template;\nname: drums.reggae.normal;\ninstrument: drums; \n{\n\n}\n{\n /do: swing _grid=8 _offset =50/\n !f\"ht\"4 &8 !p& \"ht\"4 &8 !p&|\n !f\"ht\"4 \"ht\"8t & & \"ht\"4 &8 !p&|\n !f\"ht\"4 !pp\"ho1\"4 \"ht\"4 &8 !p&|\n}\n{\n r r \"bd\"4 r |\n r r \"sn\"4 r |\n}\n]\n\n--\n\n[\ntype: template;\nname: drums.reggae.fill1;\ninstrument: drums; \n{\n\n}\n{\n /do: swing _grid=8 _offset =50/\n !f\"ht\"4 !p\"ho2\"4 r2 |\n}\n{\n /do: swing _grid=8 _offset =50/\n r \"hto1\"64->\"hto1\"4. \"mto1\"8 \"mto1\"8t r \"mto1\" |\n}\n]\n\n[\ntype: template;\nname: drums.reggae.fill2;\ninstrument: drums; \n{\n\n}\n{\n /do: swing _grid=8 _offset =50/\n !f\"ht\"4 \"ht\"4 r2 |\n}\n{\n /do: swing _grid=16 _offset =50/\n !f\"tim1\"32->!p\"tim2\"8t & & \"hto1\"4 r2 |\n}\n]\n"}, {"path": "templates/drums.soca.template", "data": "[\ntype: template;\nname: drums.soca.normal;\ninstrument: drums;\n{\n \"ago1\"16 & \"ago2\" & \"ago1\" & \"ago2\" & \"ago1\"16 & \"ago2\" & \"ago1\" & \"ago2\" & |\n}\n{\n \"cwb\"8 & &16 & r \"cwb\" r16 \"cwb\" r \"cwb\" \"cwb\" r & r | \n}\n{\n \\p\n \"ht\"16 & \"ho\"8 \"ht\"16 & \"ho\"8 \"ht\"16 & \"ho\"8 \"ht\"16 & \"ho\"8 |\n}\n{\n \\ffff\n r8. \"sn\"16 r8 \"sn\" r8. \"sn\"16 r8 \"sn\" |\n}\n{\n \"bd\"4 \"bd\" \"bd\" \"bd\" |\n}\n]\n\n[\ntype: template;\nname: drums.soca.bridge;\ninstrument: drums;\n{\n \"ago1\"16 & \"ago2\" & \"ago1\" & \"ago2\" & \"ago1\"16 & \"ago2\" & \"ago1\" & \"ago2\" & |\n}\n{\n \"cwb\"8 & &16 & r \"cwb\" r16 \"cwb\" r \"cwb\" \"cwb\" r & r | \n}\n{\n \\fff\n \"mtr\"16 & \"otr\"8 \"mtr\"16 & \"otr\"8 \"mtr\"16 & \"otr\"8 \"mtr\"16 & \"otr\"8 |\n}\n{\n \\p\n !ff\"spl\"16 \"ht\" \"ho\"8 \"ht\"16 & \"ho\"8 \"ht\"16 & \"ho\"8 \"ht\"16 & \"ho\"8 |\n \"ht\"16 & \"ho\"8 \"ht\"16 & \"ho\"8 \"ht\"16 & \"ho\"8 \"ht\"16 & \"ho\"8 |\n}\n{\n \\f\n r4 r16 \"bo1\" \"bo2\" & r4 r16 \"bo1\" \"bo2\" & |\n}\n{\n \\pp\n r4 r16 \"cla\" r8 \"cla\" r16 \"cla\"16 r4 |\n}\n{\n \\fffff\n r8. \"sn\"16 r8 \"sn\" r8. \"sn\"16 r8 \"sn\" |\n r8. \"sn\"16 r8 \"sn\" r4 r16 !fff\"sn\" !ffff& !fffff& |\n}\n{\n \"bd\"4 \"bd\" \"bd\" \"bd\" |\n}\n]"}, {"path": "templates/ennio.template", "data": "[\ntype: template;\nname: ennio.normal;\ninstrument: piano; \n{\n !ffffI,,4 <II, III, IV, V, VI, VII,> <II, III, IV, V, VI, VII,> !fffV,,, |\n}\n] \n"}, {"path": "templates/guitar.bossanova.template", "data": "[\ntype: template;\nname: guitar.bossanova.normal;\ninstrument: guitar; \n{\n /voicingStrategy: simpleGuitar/\n \\f\n <I II III IV V VI VII>4 <I II III IV V VI VII>4 r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>8 |\n r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>8 r4 <I II III IV V VI VII>4 |\n <I II III IV V VI VII>4 <I II III IV V VI VII>4 r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>8 |\n r4 r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>4. |\n} \n] "}, {"path": "templates/guitar.country.template", "data": "using \"lua/voicings/guitar.lua\";\n\n[\ntype: template;\nname: guitar.country.normal;\ninstrument: guitar; \n{\n /voicingStrategy: guitar _range=mezzosoprano/\n \\f\n <I II III IV V VI VII>8 <I II III IV V VI VII>8 r8 \n <I II III IV V VI VII>4 <I II III IV V VI VII>8 <I II III IV V VI VII>8 <I II III IV V VI VII>8 |\n} \n]\n\n[\ntype: template;\nname: guitar.country.ende;\ninstrument: guitar; \n{\n <I II III IV V VI VII>1 |\n} \n] \n"}, {"path": "templates/rhythm.bossanova.template", "data": "[\ntype: template;\nname: rhythm.bossanova.normal;\ninstrument: rhythm; \n{\n \\f\n <I II III IV V VI VII>4 <I II III IV V VI VII>4 r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>8 |\n r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>8 r4 <I II III IV V VI VII>4 |\n <I II III IV V VI VII>4 <I II III IV V VI VII>4 r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>8 |\n r4 r8 <I II III IV V VI VII>8 r8 <I II III IV V VI VII>4. |\n} \n] "}, {"path": "templates/rhythm.country.template", "data": "using \"lua/voicings/guitar.lua\";\n\n[\ntype: template;\nname: rhythm.country.normal;\ninstrument: rhythm; \n{\n \\f\n <I II III IV V VI VII>8 <I II III IV V VI VII>8 r8 \n <I II III IV V VI VII>4 <I II III IV V VI VII>8 <I II III IV V VI VII>8 <I II III IV V VI VII>8 |\n} \n]\n\n[\ntype: template;\nname: rhythm.country.ende;\ninstrument: rhythm; \n{\n /doOnce: arpeggio/\n <I II III IV V VI VII>4~ <I II III IV V VI VII>2. |\n} \n] \n"}, {"path": "templates/rhythm.jazzSwing.template", "data": "-- tempo: 155\n-- signature: 4/4\n-- parts: normal\n[\ntype: template;\nname: rhythm.jazzSwing.normal;\ninstrument: rhythm2; \n{\n \\f\n <I,, V, VII, I III>1~ | &4 (r r &) r2 |\n\n (<V, VII, I III> r r)4 r <V, VII, I III>4 r |\n \n (<V, VII, I III> r I,,)4 r <V, VII, I III>4 r |\n\n <I,, V, VII, I III>1~ | &4 (r r &) r2 |\n\n (<V, VII, I III> r r)4 r <V, VII, I III>4 r |\n\n <V, VII, I III> r I,,4 (I,, r <V, VII, I III>~) (<V, VII, I III> r I,,) |\n}\n]\n"}, {"path": "templates/rhythm.reggae.template", "data": "using \"lua/mods/swing.lua\";\nusing \"lua/mods/staccato.lua\";\n\n[\ntype: template;\nname: rhythm.reggae.normal;\ninstrument: rhythm;\n{\n \\f\n /do: swing _grid=8 _offset =40/\n r4 /modOnce: staccato _amount=100/ <I II III IV V VI VII>8 /modOnce: staccato _amount=40/ <I II III IV V VI VII>8 \n r4 /modOnce: staccato _amount=100/ <I II III IV V VI VII>8 /modOnce: staccato _amount=40/ <I II III IV V VI VII>8 \n |\n\n}\n]"}]
|