ghp / packages /client /src /lib /constants.ts
QSLY's picture
deploy: build Hugging Face Space from source
00a912e
Raw
History Blame Contribute Delete
1.92 kB
// ---------------------------------------------------------------------------
// Client-side timing constants (ms / s)
// ---------------------------------------------------------------------------
/** Deduplication window for PLAYER_PLAY events */
export const PLAYER_PLAY_DEDUP_MS = 2000
/** Throttle interval for currentTime store updates */
export const CURRENT_TIME_THROTTLE_MS = 100
/** User-configurable range for steady-state sync packets (seconds) */
export const SYNC_PACKET_INTERVAL_MIN_SECONDS = 1
export const SYNC_PACKET_INTERVAL_MAX_SECONDS = 60
/** Logical drift target for the pitch-preserving tempo controller. */
export const DRIFT_DEAD_ZONE_MS = 5
/** Proportional gain for SoundTouch tempo correction. */
export const DRIFT_TEMPO_KP = 0.15
/** Maximum tempo correction; SoundTouch compensates pitch in the worklet. */
export const MAX_TEMPO_ADJUSTMENT = 0.01
/** Drift threshold (ms) before hard-seeking to correct position */
export const DRIFT_SEEK_THRESHOLD_MS = 500
/** EMA smoothing factor for drift measurements (0–1, higher = more responsive). */
export const DRIFT_SMOOTH_ALPHA = 0.35
/** Extra margin (ms) added to the median RTT when computing the adaptive
* hard-seek threshold. Final threshold = max(DRIFT_SEEK_THRESHOLD_MS,
* medianRTT + DRIFT_SEEK_RTT_MARGIN_MS). This prevents high-latency
* NTP jitter from repeatedly triggering hard seeks. */
export const DRIFT_SEEK_RTT_MARGIN_MS = 250
/** Number of consecutive sync responses whose smoothed drift exceeds
* the hard-seek threshold before actually seeking. Prevents a single
* noisy measurement from causing an audible jump. */
export const HARD_SEEK_CONFIRM_COUNT = 2
/** Safety clamp for network delay estimation (seconds) — prevents clock-skew outliers */
export const MAX_NETWORK_DELAY_S = 5
/** Safety timeout for lobby action loading state */
export const ACTION_LOADING_TIMEOUT_MS = 15_000