- This topic has 9 replies, 2 voices, and was last updated 3 months, 3 weeks ago by
Pacocreative.
-
AuthorPosts
-
12 February 2025 at 15 h 08 min #7190
Pacocreative
ParticipantHey,
I’m aware of the “reach to change” mode implemented while assigning midi to tracks via project configuration windows.
However, I’m mostly interacting with LL via macros. Is there a chance you could update the most common track volume functions to take the mode into account?
So that it would for example take one more parameter to govern the behavior?it is
TrackVolume track_name operator value
could be
TrackVolume track_name mode operator value
where mode is:
0 = direct
1 = reach to modify
2 = feedback midi
3 = MC
4 = abletonor so?
That would probably make sense for volumes, pans, sends in the first place.
13 February 2025 at 10 h 06 min #7195Philippe
KeymasterHi,
If you are in a macro, you can take the current value using a variable or with the “valueOfReactionNamed” expression. This is explained here : https://www.logelloop.com/forums/topic/variable-for-getting-mute-state-of-a-track/Can you explain what you want to do ?
Philippe16 February 2025 at 10 h 40 min #7204Pacocreative
ParticipantThanks for mentioning that. I wasn’t aware (yet) that there’s no variable to read the track state directly.
This would be helpful, but would require me re-implementing the “reach to change” functionality for each track I want to control with a macro.
I thought it makes more sense to have this implemented once in the definition of TrackVolume function on your side, and that’s what I suggested.What do I want to achieve?
I want to control track volumes from a macro in a way that behaves the same way as If I set it up using project settings midi mappings set to mode ‘reach to change’.A track volume midi-mapped through settings UI will use ‘reach to modify’ feature, but setting track volume via macro (currently) does not provide this option.
So there are abrupt jumps or You have to code ‘soft catchup’ each time you want to change volume via macro.16 February 2025 at 14 h 18 min #7205Philippe
KeymasterBut is it to change the volume with an external midi knob or is it to change the volume by macro?
16 February 2025 at 17 h 56 min #7206Pacocreative
ParticipantIt’s both. Using Matrix as a macro ‘brain’, connecting external midi controllers to LL.
16 February 2025 at 19 h 51 min #7207Philippe
KeymasterDoes this example will help you ?
Declare Local Once boolean $firstTime$ = true Declare Local int $itemID$ = 1 Declare Local int $itemSize$ = 56 Declare Local int $1_thisTrack$ = 1 Declare Local int $2_thisTrack$ = 2 Declare Local int $3_thisTrack$ = 3 Declare Local int $4_thisTrack$ = 4 Declare Local Once int $tracksOffset$ = 0 Declare Local float $1_faderState$ = -76 Declare Local float $2_faderState$ = -76 Declare Local float $3_faderState$ = -76 Declare Local float $4_faderState$ = -76 If { $firstTime$ } $firstTime$ = false SendData thispatcher itemamount 8 WaitDuration 300 SendData mainWindow setsize 463 {30 + ($itemSize$ * 1)} SendData item button 1 name trk1-4 SendData item button 2 name trk5-8 $itemID$ = 5 DoRepeat SendData itemtype $itemID$ dial //SendData itemtype {$itemID$ + 8} dial SendData item dial $itemID$ name $itemID$ SendData item $itemID$ min -76 SendData item $itemID$ max 0 $itemID$ = {$itemID$ + 1} WaitDuration 10 While {$itemID$ < 9} SendData item button 0 fontface regular SendData item button 0 bgcolor 0. 0. 0. 1. SendData item button 0 bgoncolor 0.773 0.145 0.196 1. SendData item button 0 bordercolor 0.251 0.533 0.643 1. SendData item button 0 borderoncolor 0.2 0.2 0.2 1. SendData item button 0 textcolor 0.827 0.827 0.824 1. SendData item button 0 textoncolor 0.827 0.827 0.824 1. SendData item dial defaultSettings SendData basicdisposition SendData MacroInitialized MacroStop EndIf CaseBranch trk1-4 $tracksOffset$ = 0 $1_faderState$ = {valueOfReactionNamed("TrackVolume_trk1")} SendData item 5 set $1_faderState$ $2_faderState$ = {valueOfReactionNamed("TrackVolume_trk2")} SendData item 6 set $2_faderState$ $3_faderState$ = {valueOfReactionNamed("TrackVolume_trk3")} SendData item 7 set $3_faderState$ $4_faderState$ = {valueOfReactionNamed("TrackVolume_trk4")} SendData item 8 set $4_faderState$ BreakCaseBranch CaseBranch trk5-8 $tracksOffset$ = 4 $1_faderState$ = {valueOfReactionNamed("TrackVolume_trk5")} SendData item 5 set $1_faderState$ $2_faderState$ = {valueOfReactionNamed("TrackVolume_trk6")} SendData item 6 set $2_faderState$ $3_faderState$ = {valueOfReactionNamed("TrackVolume_trk7")} SendData item 7 set $3_faderState$ $4_faderState$ = {valueOfReactionNamed("TrackVolume_trk8")} SendData item 8 set $4_faderState$ BreakCaseBranch CaseBranch 5 $1_thisTrack$ = {$tracksOffset$ + 1} TrackVolume trk[$1_thisTrack$] = {currentCaseOptionValueFloat(0)} BreakCaseBranch CaseBranch 6 $2_thisTrack$ = {$tracksOffset$ + 2} TrackVolume trk[$2_thisTrack$] = {currentCaseOptionValueFloat(0)} BreakCaseBranch CaseBranch 7 $3_thisTrack$ = {$tracksOffset$ + 3} TrackVolume trk[$3_thisTrack$] = {currentCaseOptionValueFloat(0)} BreakCaseBranch CaseBranch 8 $4_thisTrack$ = {$tracksOffset$ + 4} TrackVolume trk[$4_thisTrack$] = {currentCaseOptionValueFloat(0)} BreakCaseBranch EndCaseBranches
16 February 2025 at 22 h 20 min #7208Pacocreative
ParticipantThanks for this, it’s helpful in terms of demonstrating a brilliant concept of reading values from the faders to dynamically change and update matrix UI. I learned a fair bit from it.
But it does not really solve the problem, so I am not sure if you understand what I meant?
Assume this scenario:
While using Project configuration midi mapping:
1. Midi-to-fader mapping is configured to “reach to change”
2. A track fader is on volume = 5 (range 0-100)
3. A midi knob is on value 90
4. When you touch/move the midi knob, the fader won’t abruptly jump to a value of 91, but you’ll have to move the knob down, to ‘catch’ the value of the fader, and only then it changes the volume – that’s the magic of “reach to change”.While using macro scripting:
1. A track fader is on volume = 5 (range 0-100)
2. A midi knob is on value 90
3. When you touch/move the midi knob, the fader value abruptly jumps to 91, because “TrackVolume” function does not honor or allow for using “reach to change” option. A volume jump is a small problem in a performance setting 😉And yes, I know I could try to write another routine in macro to emulate ‘reach to change’ behavior, but that’s producing plenty of unnecessary code, especially that I have a few dozens of knobs. More logical is to have this behavior implemented in “TrackVolume” and similar functions.
Is this still unclear?
16 February 2025 at 22 h 39 min #7209Philippe
KeymasterYes I think that’s clear !
I also think that’s clear that you are trying to rewrite something that is already coded elsewhere in Logelloop…
Unfortunately we will not change the trackVolume behavior as it would need some time, and we have plenty of important thing to do before, and you can use the regular way of mapping midi controller to a fader if you need the reach to modify functionality.That’s probably not what you need, but, maybe this may help you :
SendData item 5 midimode 3
This is the way to set “reach to modify” in the matrix dial (0 = normal, 1 = mc, 2 = push, 3 = reach modify)
17 February 2025 at 10 h 18 min #7211Pacocreative
ParticipantOh, this looks *very* useful to what I’m trying to achieve.
I just did not know it existed and did not imagine it could be done through talking to the dial!
Thanks a lot!27 February 2025 at 22 h 17 min #7241Pacocreative
ParticipantSendData item 5 midimode 3
For some reason this does not seem to be working for my dials.
Is there anything specific that needs to happed in order for it to work? -
AuthorPosts
- You must be logged in to reply to this topic.