Forum Replies Created
-
AuthorPosts
-
I am getting a error message
Error message: [string “receivedMidi”]:89: attempt to index global ‘programData’ (a nil value)
daimondamps can you break down how the code works so I can utilize it ?
Trying now. Thank you!
December 12, 2015 at 4:58 pm in reply to: Sysex dump with parameters dumping to two bytes "ms" "ls" #65690Thank you. Will try now and get back.
December 12, 2015 at 3:15 pm in reply to: Sysex dump with parameters dumping to two bytes "ms" "ls" #65682After doing some digging around, I found this to possibly work with. Does anyone have any thoughts?
You commented out the name of your script and the “end”.. Those two elements should be like the bun of your sandwich, so to speak, and they shouldn’t be commented out with double dashes. One goes at the top, one goes at the bottom. This concept is important to grasp. When you start a function you must end a function.
it should be something like:
[code:1jfd3aiv]Patch Configure = function(modulator, newValue)
FilterMsb = midiMessage:getLuaData():getByte(54)
FilterLsb = midiMessage:getLuaData():getByte(55)FilterValue = (FilterMsb*16)+(FilterLsb)
panel:getModulatorByName(“VCF Cutoff”):setModulatorValue(FilterValue, false, false, false)
end[/code:1jfd3aiv]
- This reply was modified 8 years, 4 months ago by memorysplice. Reason: add source of post
One more thing, Part of the dump in question as messages that are broken into multiple “ms” “ls” byte messages how do I utilize lua code to update the parameters for my panel?
Fixed it. Some kind of midi loop issue.
I got it to properly dump and thank you! I do have a problem. When I press a note on the synth, it will click output a bunch of sysex paramater changing the synth and the panel to 0. What are your thoughts?
I am going to try this on a much simpler synth to master first I just want to walk over everything over with you first.
Here are 3 of the 4 messages that I am sending
Message 1
F0 41 10 00 00 7B 11 00 20 00 00 00 00 60 F7
Message 2
F0 41 10 00 00 7B 11 00 20 10 00 00 00 50 F7
Message 3
F0 41 10 00 00 7B 11 00 20 20 00 00 00 40 F7
and so onHere are 3 examples of sysex dumps that I am receiving from the synth in question.
address is in [ ] bytes are in " " message 1 [ F0 41 10 00 00 7B 12 00 20 00 00 ] " 01 7F 00 7F 00 7F 00 7F 00 00 00 00 00 00 00 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5C " 73 = checksum F7 = End of Message message 2 00 [ F0 41 10 00 00 7B 12 00 20 10 00 ] " 00 0B 3C 49 49 10 1E 32 " 27 = checksum F7 = End of Message message 3 00 [ F0 41 10 00 00 7B 12 00 20 20 00 ] " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 00 " 40 = Checksum F7 = End of message
- This reply was modified 8 years, 5 months ago by memorysplice.
- This reply was modified 8 years, 5 months ago by memorysplice.
- This reply was modified 8 years, 5 months ago by memorysplice.
I do have a question in regards to the “assignValues script”
function assignValues(midiMessage,var) panel:getModulatorByName("Portamento"):setModulatorValue(programData:getByte(0), false,var,false) -- assign the first byte of programData memoryBlock to it's correspondent modulator panel:getModulatorByName("Osc1 Volme"):setModulatorValue(programData:getByte(1), false,var,false) -- assign the second byte of programData memoryBlock to it's correspondent modulator. . . . -- And so on till the last byte. end
Do I use continue to use this script or am I missing something?
- This reply was modified 8 years, 5 months ago by memorysplice.
I think this is something I can run with! Thank you! I will try right now.
Thank you for your patience. I greatly appreciate you and everyone else trying to help.
Thank you for your guidance. I do understand everything you told me yet, but I will try to figure out where to go from here.
The reason why I asked is because I just figured out how to transmit more than 1 sysex message with a button to trigger specific midi dump responses.
Is there a way to setup a ctrlr script to lets say I request 4 specific sysex dumps and get back 4 messages that reference the synth common and the the 3 parts that make up the synth. “the 3 partials that make up the 1st part of the JD-Xi.” How would I go about doing that?
Thank you for looking around, daimondamps. I know how to read the sysex dump. My problem is writhing out the lua code to accept a dump and update the panel from multiple sysex messages. As for the panel that stephen uploaded, he is building on what I started and he as far as I know does not know anything about coding in lua.
Yes! Here is a link for the JD-Xi sysex. Click to download sysex spec
I figured out how to trigger a smaller dump that only outputs the Digital Synth 1 and 2 and the analog synth with only 14 messages vs 55.
f0 41 10 00 00 00 0e 11 19 01 00 00 00 6e 7f 7f z5 f7`
Here is what I have been using before that works.
—
— Called when a panel receives a midi message (does not need to match any modulator mask)
— @midi CtrlrMidiMessage object
—midiMessageReceived = function(midiMessage)
s = midiMessage:getSize()
if s == 45 then — if size match the expected size of the dump requested
PatchDataLoaded = midiMessage:getData() — create a memoryblock with the data dump
programData = midiMessage:getData():getRange(11,45-11) — create a memory block with the synth engine data, leaving the header
assignValues(midiMessage,false) — call a script to assign each byte to each modulator.
end
endfunction assignValues(midiMessage,var)
panel:getModulatorByName(“Letter 1”):setModulatorValue(programData:getByte(1), false, false, false)
— panel:getModulatorByName(“Letter 2”):setModulatorValue(programData:getByte(2), false, false, false)
— panel:getModulatorByName(“Letter 3”):setModulatorValue(programData:getByte(3), false, false, false)
— panel:getModulatorByName(“Letter 4”):setModulatorValue(programData:getByte(4), false, false, false)
— panel:getModulatorByName(“Letter 5”):setModulatorValue(programData:getByte(5), false, false, false)
— panel:getModulatorByName(“Letter 6”):setModulatorValue(programData:getByte(6), false, false, false)
— panel:getModulatorByName(“Letter 7”):setModulatorValue(programData:getByte(7), false, false, false)
— panel:getModulatorByName(“Letter 8”):setModulatorValue(programData:getByte(8), false, false, false)
end`I am not sure how to implement the code with what I have.
Got to trying to utilize your example dasfaker. I am running into problems and I am not sure what questions to ask to move further. Any thoughts?
Thank you! This is exactly what I needed!
Can you post a code example on how to do that please so I can follow along?
-
AuthorPosts