Home Forums Macros Jump on modular loopers not working in synced mode ?

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

    Here’s a UI bug I found in modular loopers.

    Context: scripting dynamic changes in playhead position, selectionIn, selectionOut
    playhead position is executed with:
    InsertController fx1 1 4 = 151745.0

    When selection is cleared/full, seeking across the buffer works properly.
    When selection is set to a buffer subset in free mode, seeking works fine.
    When selection is set to a buffer subset in synced mode, seeking does not work properly.
    Playhead jumps to the right sample, but UI playhead position is incorrectly mapped over the sample and selection highlight.

    #7170
    Philippe OllivierPhilippe
    Keymaster

    Hi,
    I think you’d better use the jump message :

    InsertSendMessage fx1 1 Jump 41310
    

    It is the same, but InsertControllers messages are deprecated and may disappears at a moment…

    That said, I can’t reproduce your issue here.
    Of course, you need to jump to a position that is inside your selection.
    If you jump outside of the selection, the playing head is set to the beginning of the selection…

    Do I misunderstood someting?
    Philippe

    #7175
    Patrick KiznyPacocreative
    Participant

    Thanks for your note about the InsertSendMessage. I think I already unified it, but it does not affect the bug.
    I’ll record a video to show you exactly.

    #7176
    Patrick KiznyPacocreative
    Participant

    Here’s a video
    https://www.dropbox.com/scl/fi/czrj2p6walysekgdgaxay/2025-02-11-20.44.38.mp4?rlkey=uevu49o9zzog6p042z1v5mw5m&dl=0

    For some reason, I can’t reproduce exactly the same behavior now, but something similar happens:
    After setting in- and out- points and using jump, the playhead does not loop within the selection, but moves between the last jump-point and the end-point.
    No continuous midi command is sent for sure.

    #7181
    Philippe OllivierPhilippe
    Keymaster

    Ho, you didn’t say that you are using the ETS player which is really different than the tape player.
    But anyway I see no issue in my test either.

    May I have a look at your macro to see what you want to do ?

    #7182
    Patrick KiznyPacocreative
    Participant

    I’m not sure if it’s happening also in regular modes, as I don’t have seeking implemented there yet.
    This is coming from my macros that use midi controllers to use looper more as an instrument, including playing with in/out points, speed and dynamic seek(jump)

    Look at CaseBranch “[1] Pos” for specifics, but I include a wider piece of code for context.

    	// ----------------------------------------------------- Individual loopers control page 2 -----------------------------------------------------
    
    CaseBranch "[1] Spd"
    
    	// vars for each channel
    	$k$ = 1
    	$m$ = $Looper_fx1_rank1_PlayerMode_state$
    	$b$ = $Looper_fx1_rank1_current_length$
    	$r$ = $Looper_fx1_rank1_ReverseDirection_state$
    
    	// ETS mode,
    	If { $m$ == 2 }
    		$spd$ = {scale(currentCaseOptionValueFloat(0), 1, 126, $spd_max2$, 1)}
    		$frz$ = {$spd$ > ($spd_max2$ * 0.95) ? 1 : 0 }
    		InsertSendMessage fx[$k$] 1 HTSSpeed $spd$
    		InsertSendMessage fx[$k$] 1 HTSFreeze $frz$
    	Else
    		$spd$ = {currentCaseOptionValueFloat(0) < 64 ? scale(currentCaseOptionValueFloat(0) , 0, 64, $spd_min1$, 1) : scale(currentCaseOptionValueFloat(0), 65, 127, 1, $spd_max1$)}
    		IfThen {$r$ == 1 } Do $spd$ = { $spd$ * -1 }
    		InsertSendMessage fx[$k$] 1 SpeedFloat $spd$
    	EndIf
    	WaitDuration 17
    
    	BreakCaseBranch
    
    CaseBranch "[1] In"
    	InsertSendMessage fx1 1 SelectionIn {scale(currentCaseOptionValueFloat(0), 2, 125, 0, $Looper_fx1_rank1_current_length$)}
    	BreakCaseBranch
    
    CaseBranch "[1] Out"
    	InsertSendMessage fx1 1 SelectionOut {scale(currentCaseOptionValueFloat(0), 2, 125, 0, $Looper_fx1_rank1_current_length$)}
    	BreakCaseBranch
    
    CaseBranch "[1] Pos"
    	If { $Looper_fx1_rank1_PlayerMode_state$ == 2}
    		$v$ = {scale(currentCaseOptionValueFloat(0), 2, 125, $Looper_fx1_rank1_SelectionIn_state$, $Looper_fx1_rank1_SelectionOut_state$)}
    		InsertSendMessage fx1 1 Jump $v$
    	EndIf
    	WaitDuration 17
    	BreakCaseBranch
    
    CaseBranch "[1] Rev"
    
    	InsertSendMessage fx1 1 ReverseDirection {$Looper_fx1_rank1_ReverseDirection_state$ == 0 ? 1 : 0}
    	MidiControllerSend {$Looper_fx1_rank1_ReverseDirection_state$ == 0 ? 11 : 12 } 51 $chan_b2$ "Launch Control XL"
    	BreakCaseBranch
    
    CaseBranch "[1] Copy"
    	$m_press_flag$ = 1
    	BreakCaseBranch
    
    CaseBranch "[1] Copy_up"
    	If {$m_press_flag$ == 1}
    		InsertSendMessage fx1 1 AudioMessages Paste
    
    		MidiControllerSend 60 61 $chan_b2$ "Launch Control XL"
    		WaitDuration 500
    		MidiControllerSend 12 61 $chan_b2$ "Launch Control XL"
    		//MidiControllerSend 12 $LC_lastcopied$ $chan_b2$ "Launch Control XL"
    
    		$m_press_flag$ = 0
    	EndIf
    	BreakCaseBranch
    
    CaseBranch "[1] Copy_longpress"
    	$m_press_flag$ = 0
    	InsertSendMessage fx1 1 AudioMessages Copy
Viewing 6 posts - 1 through 6 (of 6 total)
  • You must be logged in to reply to this topic.