I recently stumbled upon Martin’s great tutorial on creating scenes. Although I’m absolutely not a programmer (as probably most people know in the meantime), I’ve gotten pretty far into successfully sending MSB/LSB/PRG change as well as SyxEx commands from just one pad.
I’m now wondering if it would also be possible to send - out of a scene - a value to the instrument and then set a knob to that specific value to start optimizing from there. I looked at the tutorial titled “[LUA] Value Ranges” and tried adjusting things from this example using setDefault or setValue but couldn’t get anything done. As follows one (out of probably 66) version I tried…
function setDefault(valueObject, value)
local control = controls.get(13)
local value = control:getValue()
value:setDefault(66)
end
I would also really appreciate if someone could recommend examples for me to look at on how to create some sort of macro controller. For example, to control i.e. filter and resonance with just one controller at the same time with different predefined ratios. But please just recommend something that is doable for a stupid guy like me without having to study programming for a decade. Thanks!
After having a few months for “try & error” on this topic I tried using “parameterMap.set” to reach my goal but again can’t get the logic behind it.
I have two scenes that are structured pretty much similar. In one scene (No. 4) everything works.
In the next scene (no. 5) it sets another control assigned to the same MIDI channel to the new default value (red arrow) but not the one I like to work with (green arrow).
parameterMap.set() is based on the parameter number. So, any control with the parameter number of 74 at that time will take on that value.
So, not exactly sure what the goal is here. If you want controls to send CC messages based on the parameter number only you might have to take a different approach.
If it behaved like that, I might have understood a little more. I have a number of controls that control CC74 (in my case cutoff). But as shown in the screenshot, only one of them is set to the value.
This refers to my first question from March this year. In the meantime I probably spend some hours (summarized) reading the “Preset Lua extension” manual again and again trying to find a solution for - what I thought - should be easy to achieve.
My goal is to set a dedicated control of my preset to a dedicated default value that is called with a scene. As shown in my first screenshot where it works as expected. The control “SY2 | C32” is set to a value of 32 and the “SY2 | DEC 40” is set to 40 when I change from scene 3 to scene 4.
Not sure how do describe it better. Unfortunately English is not my native language.
The scene changes in row 3 sometimes changes patches, send CC or SysEx values and change pages. The control “SCENE 5=>” on the page “Scenes B” contains the “parameterMap.set()” for CC74 but it just affects the control “SY 2 | C45” and not “SY 1 | C19” even though both have CC74 assigned to them.
But this obviously doesn’t help to reach my initial goal anyway. As mentioned in my first post I already tried the …
… which seemed logical to me based on the given name “setDefault”. But it didn’t work and the whole “logic” of this Lua language is probably way too advanced for me.
also - since you are doing a parameterMap.set of parameter number 74, EVERY control that uses parameter number 74 will get the same value. It does not matter if the control is in the same scene or same page. That is why the SY 1 control in scene 5 and the SY 2 control in scene 6 get the same value of 61.
What synthesizer is this for? Do you have the MIDI document for it?
I think I know what you want to do, but I am not 100% sure.
Thank you very much. Unfortunately I am not sure what might be wrong with this definitions. I am using the same port and different MIDI channels. The Yamaha SEQTRAK I am using is receiving MIDI on 11 different channels.
Thanks also here. It is the Yamaha SEQTRAK. Documents are available for download i.e. here.
This is the direct link to the data list…
But my main problem is about the E1 not the instrument. With my scene changes I already send all necessary data to SEQTRAK to change sounds per channel and set controller or SysEx data to certain values. That works great so far.
What I am trying to achieve is for example sending a CC74 value of 32 with a scene change to SEQTRAK and set the E1 control of my preset to the same value simultaneously. So that I can start tweaking from there without having parameter jumps because the control is maybe at a different value than the setting in the instrument.
Basically I need a lua command that says: Set the E1 control with the ID 15 to the value 32. If I could use such a command in a scene everything would be fine.
Makes sense?
Thanks again, I am back tomorrow. I need to get up early and like to call this a day.
I would look at using valueId:setRange(min, max, default, true) to set the value.
You will need to use the control id of the control to then get the value id.
I was getting the controls set to the default for the scenes except for 1 control.
One quick question - do you have the output of the SEQTRAK connected to the input of the Electra One?
If you do, try unplugging just that cable and see what happens.
I will try to send back a modified version of your preset using the control IDs instead of the parameter numbers.
Unleash your creativity anywhere with SEQTRAK, the ultimate music creation station. Lightning-fast workflow allows you to capture ideas quickly, then create original music using its two versatile sound engines. When you’re ready, connect with fans…
But my main problem is about the E1 not the instrument. With my scene changes I already send all necessary data to SEQTRAK to change sounds per channel and set controller or SysEx data to certain values. That works great so far.
What I am trying to achieve is for example sending a CC74 value of 32 with a scene change to SEQTRAK and set the E1 control of my preset to the same value simultaneously. So that I can start tweaking from there without having parameter jumps because the control is maybe at a different value than the setting in the instrument.
Basically I need a lua command that says: Set the E1 control with the ID 15 to the value 32. If I could use such a command in a scene everything would be fine.
Makes sense?
Thanks again, I am back tomorrow. I need to get up early and like to call this a day.
Thank you. I wonder why it is necessary to use the range with all associated parameters instead of just the default value as I tried - which of course failed. And from my beginner perspective, I wonder why this has to be so complicated. Wouldn’t it be sufficiently and logically simple to reproduce it with a command like…
value:setDefault(15 , PT_CC7, 11, 33)
… where the “15” stands for the control ID, followed by the kind of message (PT_CC7), the Parameter itself (11) and the value (33)? Since each controller has its unique ID and is already assigned to a port it is not even necessary to include that information. But I see, my thinking is obviously way too simple.
No, I just have a one-way connection from E1 to SEQTRAK. But could you pleas let me know the reason you are asking? Since I obviously used the wrong approach for my goal there is nothing to improve regarding the setup. Or did I misunderstand something entirely? Sorry…
Yes, the setDefault() should work.
However - notice that you need to use the control ID to get the value ID to set the default at that level but that may not cause a message to go to the Yamaha.
If you set the range, you can specify “true” as the last parameter to force the MIDI message to be set to that and to cause it to send 9if different than before).
If you get the control ID to get the value ID to get the message ID ( ctl = controls.get(32); msgId = ctl:getValue(“value”):getMessage() )then you can set the current value using msgId:setValue(61)
Thank you so much. You are too kind helping me again with this. Much appreciated and absolutely no need to rush because I am searching for this solution over months now.
Have a great day anyway.
So, for every scene change, you are sending some sysex messages.
In addition, every time you turn a control to change the cutoff, you send sysex messages.
Is this what you need to send?
(trying to understand before I propose changes).