Forum Replies Created
-
AuthorPosts
-
I have the nybblize code and half the controls working here:
https://github.com/jbeuckm/Ctrlr-Lexicon-MPX100
Video explanation:
- This reply was modified 7 years ago by jbeuckm.
Import modulators from spreadsheet or csv would be cool too.
@goodweather I think packDsiData does something different than what I need for the Quadraverb…
console("i quadraveb packDsiData") for i=0,300,31 do mb = MemoryBlock(string.format('%.2x', i)) packed = utils.packDsiData(mb) dsi = packed:toHexString(2) qv = encodeQuadraverbData(i,2) console(string.format("%.2x %s %s", i, qv, dsi)) end
gives…
LUA>> i quadraveb packDsiData LUA>> 00 00 00 00 0000 LUA>> 1f 0f 40 00 001f LUA>> 3e 1f 00 00 003e LUA>> 5d 2e 40 00 005d LUA>> 7c 3e 00 00 007c LUA>> 9b 4d 40 00 011b LUA>> ba 5d 00 00 013a LUA>> d9 6c 40 00 0159 LUA>> f8 7c 00 00 0178 LUA>> 117 0b 40 20 0011
- This reply was modified 8 years ago by jbeuckm. Reason: added results of test code
That step-by-step guide is mandatory for Ctrlr learners.
Here’s where I ended up for encoding the Quadraverb params. I have not tried to encode an entire patch yet.
encodeQuadraverbData = function(data, numBytes) orig = BigInteger(data) reversed = BigInteger(0) -- reverse bytes so lsB first / msB last for i=0,numBytes-1 do byte = orig:getBitRangeAsInt(i*8, 8) reversed:setBitRangeAsInt((numBytes - 1 - i)*8, 8, byte) end requiredBits = numBytes * 8 encodedParts = math.ceil(requiredBits / 7) encodedBits = encodedParts * 7 zeroPadding = encodedBits - requiredBits reversed:shiftBits(zeroPadding, 0) bytes = {} for i=1,encodedParts do byte = reversed:getBitRangeAsInt(encodedBits-(i*7),7) table.insert(bytes, string.format('%.2x', byte)) end return table.concat(bytes, ' ') end
Thanks again for the help. There is a lot of good stuff in the Power08 example. I am getting things to work now. A newbie has to realize two things:
1. Connect Lua methods to the panel by properties like “Called when…”.
2. When you save your Lua, use “Save and compile all” to test your changes.
Thanks goodweather and possemo! packDsiData looks close to what I need (Alesis data bytes are reversed) and I can see how to build the transform from passemo’s code.
How do I actually get this code to where it’s needed? I see how to implement a new method for “Called to calculate MIDI value to send” but I haven’t seen documentation for what args it receives and should return. Shouldn’t I be able to setup sysex output to always use f0, my vendor & device code, then f7 after?
panel:sendMidiMessageNow(CtrlrMidiMessage(“f0″..”00″..”00″..”2F”..”01″
does not look D.R.Y. 🙁- This reply was modified 8 years ago by jbeuckm.
-
AuthorPosts