Closed markusschloesser closed 3 years ago
From the ableton live 8 manual section for the mcu: "The Mackie Control's V-Pots have dual functionality in many cases, as they can be both rotated and pressed. When being used to adjust single parameters (those belonging to track devices, for example), pressing a V-Pot returns a control to its default value. Pressing a V-Pot when dealing with a control that has various options (filter type choosers, for example), selects the options in sequence. With controls having only two options (e.g., an on/off switch) pressing a V-Pot toggles the options."
We could definitely do that with the C4 Commander layouts, you could define exactly how many steps each encoder was mapped to (and what the mapped values are (because it's always a finite set of values in that situation)
I'm not sure, if we can do the same thing with this script. You certainly can't do it the same way. I wonder if we can maybe use the various "encoder LED options" to reduce the spread. The thing is we are getting the values from Live, we don't know if it's a toggle, a radio button, or an "endless" value like Pan or Volume, ahead of time. We just have the value Live gives us to display for the encoder. I will check out the MCU script to see if I can find the code that implements the above, "Pressing a V-Pot when dealing with a control that has various options (filter type choosers, for example), selects the options in sequence. With controls having only two options (e.g., an on/off switch) pressing a V-Pot toggles the options." I'm curious to see "how it knows".
Also, do you know the encoders respond to the speed with which you turn the knobs. Have you tried twisting single-click-at-a-time on those parameters.
found it! It's in channelstripcontroller.py and the code is
def handle_pressed_v_pot(self, strip_index, stack_offset):
if not (self._ChannelStripController__assignment_mode == CSM_VOLPAN or self._ChannelStripController__assignment_mode == CSM_SENDS):
if not self._ChannelStripController__assignment_mode == CSM_PLUGINS or self._ChannelStripController__plugin_mode == PCM_PARAMETERS:
if stack_offset + strip_index in range(0, len(self._ChannelStripController__channel_strips)):
param = self._ChannelStripController__channel_strips[(stack_offset + strip_index)].v_pot_parameter()
elif param:
if param.is_enabled:
if param.is_quantized:
if param.value + 1 > param.max:
param.value = param.min
else:
param.value = param.value + 1
else:
param.value = param.default_value
will try tomorrow
works for both vpot press and vpot turn
lots of plug-ins have params with only 2 or 3 states (on/off, high/low) or an only limited step amount of discrete steps. Currently one has to really work hard on the vpot (twisting it multiple times) to toggle between those. Enhancement: introduce a better way of handling those by:
I think 2 is the way to go, but might be harder to implement