Home Forums Macros “Reach to change” in macros?

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #7190
    Patrick KiznyPacocreative
    Participant

    Hey,

    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 = ableton

    or so?

    That would probably make sense for volumes, pans, sends in the first place.

    #7195
    Philippe OllivierPhilippe
    Keymaster

    Hi,
    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 ?
    Philippe

    #7204
    Patrick KiznyPacocreative
    Participant

    Thanks 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.

    #7205
    Philippe OllivierPhilippe
    Keymaster

    But is it to change the volume with an external midi knob or is it to change the volume by macro?

    #7206
    Patrick KiznyPacocreative
    Participant

    It’s both. Using Matrix as a macro ‘brain’, connecting external midi controllers to LL.

    #7207
    Philippe OllivierPhilippe
    Keymaster

    Does 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
    
    #7208
    Patrick KiznyPacocreative
    Participant

    Thanks 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?

    #7209
    Philippe OllivierPhilippe
    Keymaster

    Yes 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)

    #7211
    Patrick KiznyPacocreative
    Participant

    Oh, 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!

    #7241
    Patrick KiznyPacocreative
    Participant

    SendData 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?

Viewing 10 posts - 1 through 10 (of 10 total)
  • You must be logged in to reply to this topic.