feat(autodj): configurable overlap cap (auto or 2–30 s) (#1173)

This commit is contained in:
cucadmuh
2026-06-24 22:00:35 +03:00
committed by GitHub
parent c3e6be537c
commit 58e6efc68c
29 changed files with 250 additions and 17 deletions
+4 -2
View File
@@ -1,11 +1,12 @@
import { invoke } from '@tauri-apps/api/core';
import { useAuthStore } from './authStore';
import { autodjMaxOverlapCapSec } from '../utils/playback/autodjOverlapCap';
import { computeWaveformSilence, planCrossfadeTransition } from '../utils/waveform/waveformSilence';
import { findLocalPlaybackUrl } from '../utils/offline/offlineLibraryHelpers';
import { playbackCacheKeyForRef } from '../utils/playback/playbackServer';
import { resolvePlaybackUrl } from '../utils/playback/resolvePlaybackUrl';
import { resolveQueueTrack } from '../utils/library/queueTrackView';
import type { Track } from './playerStoreTypes';
import { useAuthStore } from './authStore';
import {
hasPlannedCrossfade,
markPlannedCrossfade,
@@ -185,7 +186,8 @@ export function maybeCrossfadeBytePreload(currentTime: number, dur: number): voi
.then(nextBins => {
// Overlap is derived purely from the audio (fade-out / buildup); the
// user's crossfadeSecs is intentionally not a factor in this mode.
const plan = planCrossfadeTransition(curBins, dur, nextBins, planDuration);
const maxOverlapSec = autodjMaxOverlapCapSec(useAuthStore.getState());
const plan = planCrossfadeTransition(curBins, dur, nextBins, planDuration, { maxOverlapSec });
setCrossfadeTransition(planTrackId, plan);
})
.catch(() => {});