@@ -326,13 +326,22 @@ const {
326326 getDeckSong: resolveDeckSong ,
327327 setDeckSong
328328})
329- const { isDeckMasterTempoEnabled, toggleDeckMasterTempo, setDeckTargetBpm, resetDeckTempo } =
330- useHorizontalBrowseDeckTempoControls ({
331- resolveDeckSong ,
332- resolveDeckGridBpm ,
333- resolveTransportDeckSnapshot ,
334- nativeTransport
335- })
329+ const {
330+ isDeckMasterTempoEnabled,
331+ toggleDeckMasterTempo,
332+ scheduleDeckLiveTargetBpm,
333+ commitDeckTargetBpm,
334+ cancelDeckLiveTargetBpm,
335+ resetDeckTempo
336+ } = useHorizontalBrowseDeckTempoControls ({
337+ resolveDeckSong ,
338+ resolveDeckGridBpm ,
339+ resolveTransportDeckSnapshot ,
340+ nativeTransport ,
341+ onLiveVisualPlaybackRate : (deck , playbackRate ) => {
342+ resolveDetailRef (deck )?.setLiveTempoPreviewRate ?.(playbackRate )
343+ }
344+ })
336345resolveDeckMasterTempoEnabledForTransport = isDeckMasterTempoEnabled
337346const handleDeckMasterTempoToggle = (deck : DeckKey ) => {
338347 touchDeckInteraction (deck )
@@ -652,6 +661,7 @@ const {
652661 handleDeckMetronomeStateCycle,
653662 handleDeckBpmTap,
654663 handleDeckBpmInputUpdate,
664+ handleDeckBpmInputLive,
655665 handleDeckBpmInputBlur,
656666 handleDeckSelectWholeAdjustment,
657667 handleDeckSplitAfterPlayhead,
@@ -666,7 +676,9 @@ const {
666676 resolveDeckToolbarBpmInputValue ,
667677 shouldPreserveGridShiftPhase ,
668678 shouldCommitBpmInputAsGridEdit : (deck ) => isEditMode .value && deck === ' top' ,
669- setDeckTargetBpm
679+ scheduleDeckLiveTargetBpm ,
680+ commitDeckTargetBpm ,
681+ cancelDeckLiveTargetBpm
670682})
671683
672684const resolveDeckSyncUiEnabled = (deck : DeckKey ) =>
@@ -871,6 +883,7 @@ const waveformStackModel: HorizontalBrowseModeShellWaveformStackModel = {
871883 handleDeckGridShiftSmallRight ,
872884 handleDeckGridShiftLargeRight ,
873885 handleDeckBpmInputUpdate ,
886+ handleDeckBpmInputLive ,
874887 handleDeckBpmInputBlur ,
875888 handleDeckBpmTap ,
876889 handleDeckMemoryCueCreate ,
0 commit comments