Hi there,
I made a preset for the Dreadbox Nymphes a while ago that gets all parameters of a patch via a CC list dump when selecting a new preset on the synth.
So far, so good. The only thing missing in my Electra preset is reading the modulator part which sends the same 20 CC parameters four times in a row for different modulators like this:
CC 30 1 - stands for Modulator 1 (LFO2)
CC 31 64 - stands for Parameter 1 of Modulator 1
CC 32 1
CC 33 127
CC 34 5
…
CC 30 2 - stands for Modulator 2 (Modwheel)
CC 31 1 - stands now for Parameter 1 of Modulator 2
CC 32 0
CC 33 34
CC 34 127
…
So the only way to process the same CCs differently would be programmed conditions that then fill in the electra controls for every modulator status (on different pages), right?
And if I want to turn one of the specific controls of different modulators on the Electra, it should send first the modulator CC and then the parameter CC.
As I am still no good programmer - is this concept possible via LUA or even simpler via via JSON rules? Just need some green lights before I dig deeper…
Thanks for any hint from the more experienced users here ![:slight_smile: :slight_smile:](https://emoji.discourse-cdn.com/facebook_messenger/slight_smile.png?v=12)
1 Like
Hmm, interesting.
AFAIK this is not a json case, but will need LUA.
This is how I would proceed:
- Create all the controllers for those LFO’s, but assign them a parameter number that is outside of the CC range and define them of virtual type
- use the midi callback midi.onControlChange to intercept any incoming CC-message. you quit the callback immediately unless CC = 30 or activeMod > 0.
- when CC=30 you assign its value (1 or 2) to activeMod.
- when CC=31…34 and activeMod > 0 you assign the value to its appropiate controller via the function parameterMap.set
- when CC is outside of the expected range and activeMod > 0 then set activeMod = 0
(this will work fine as long as you do not start tweaking the modwheel or other CC messages on the same channel, while Nymphes is busy transmitting modulator data)
For the inverse direction, you must create a user function sendModCC that you assign to each of the virtual controls. When such a control is changed, the sendModCC should then send out 2 CC messages via midi.sendControlChange. Based on the parameter of the control, the first CC should be CC 30 and the second one CC31…34 depending on parameter.
2 Likes
Thanks for your brain @NewIgnis, that approach helps me a lot!
I will try that when I have time again ![:slightly_smiling_face: :slightly_smiling_face:](https://emoji.discourse-cdn.com/facebook_messenger/slightly_smiling_face.png?v=12)
2 Likes
My Nymphes arrived last week, and I made a preset for it.
In it, your issue is resolved.
Look at the last 4 pages, each contains a set of modulations.These are 4 sets of 36 = 144 virtual parameters, each page they are 0, 100, 200 or 300 apart from the CC they are destined to control.
Setting a parameter:
Each virtual control has the same function “dblCC”.
This one sends 2 CC messages:
- the first sends the right CC30 value (based on dividing the parameterNumber by 100, so you get values 0, 1, 2 or 3)
- the second sends the appropiate CC modulation value (based on the modulo of 100 for the parameterNumber)
Receiving a parameter:
Whenever Nymphes sends a modulation parameter it ensure it is consistent with the last CC30 sent. So I ‘catch’ that one on page 2.
In the lua-code there is a function called “midi.onControlChange”. It checks if the CC received is one of the modulation CC and if it is, it sets its parameter using the offset given by the previously caught CC30.
1 Like
Great work, NewIgnis!
I sold my Nymphes shortly after the post – I realized I could get the sounds in the box / with my Ambika.
2 Likes