From f25d75b151af8f23c674b9b1bd8e76db8f390fd3 Mon Sep 17 00:00:00 2001 From: claw1200 Date: Wed, 11 Nov 2026 20:11:57 +0000 Subject: [PATCH] load at first cue point --- .../lib/components/settings/GeneralSettings.svelte | 11 +++++++++++ app/src/renderer/src/lib/deck/prefs.svelte.ts | 7 +++++++ app/src/renderer/src/lib/player.svelte.ts | 11 +++++++++++ 3 files changed, 29 insertions(+) diff --git a/app/src/renderer/src/lib/components/settings/GeneralSettings.svelte b/app/src/renderer/src/lib/components/settings/GeneralSettings.svelte index 10bce61..225f9d7 100644 --- a/app/src/renderer/src/lib/components/settings/GeneralSettings.svelte +++ b/app/src/renderer/src/lib/components/settings/GeneralSettings.svelte @@ -41,6 +41,11 @@ DEFAULT_DECK_PREFS.quantise, (on) => prefs.setQuantise(on) ), + setting( + () => prefs.loadAtFirstCue, + DEFAULT_DECK_PREFS.loadAtFirstCue, + (on) => prefs.setLoadAtFirstCue(on) + ), setting( () => prefs.cuePlacement, DEFAULT_DECK_PREFS.cuePlacement, @@ -76,6 +81,12 @@ on={prefs.quantise} onflip={() => prefs.setQuantise(!prefs.quantise)} /> + prefs.setLoadAtFirstCue(!prefs.loadAtFirstCue)} + /> (key: string, ids: readonly T[], fallback: T): /** Deck preferences that hold for every deck at once, kept between sessions. */ export class DeckPrefs { quantise = $state(storedFlag('quantise', DEFAULT_DECK_PREFS.quantise)) + loadAtFirstCue = $state(storedFlag('loadAtFirstCue', DEFAULT_DECK_PREFS.loadAtFirstCue)) cuePlacement = $state(stored('cuePlacement', ['playhead', 'cuePoint'], DEFAULT_DECK_PREFS.cuePlacement)) snapPlayhead = $state(storedFlag('snapPlayhead')) unlimitedMemoryCues = $state(storedFlag('unlimitedMemoryCues')) @@ -30,6 +32,11 @@ export class DeckPrefs { storeFlag('quantise', on) } + setLoadAtFirstCue(on: boolean): void { + this.loadAtFirstCue = on + storeFlag('loadAtFirstCue', on) + } + setSnapPlayhead(on: boolean): void { this.snapPlayhead = on storeFlag('snapPlayhead', on) diff --git a/app/src/renderer/src/lib/player.svelte.ts b/app/src/renderer/src/lib/player.svelte.ts index 4d7d10f..f0dabd3 100644 --- a/app/src/renderer/src/lib/player.svelte.ts +++ b/app/src/renderer/src/lib/player.svelte.ts @@ -238,6 +238,17 @@ export class Player { const opened = this.session.open(track) this.display.reload() await opened + const stillThisTrack = this.track?.id === track.id + const cuePointUntouched = this.cuePoint === 0 + if (this.prefs.loadAtFirstCue && stillThisTrack && cuePointUntouched) this.cueAtFirstCue() + } + + private cueAtFirstCue(): void { + const first = this.displayCues.reduce( + (earliest, cue) => (!earliest || cue.start < earliest.start ? cue : earliest), + null + ) + if (first) this.cueAt(first.start / 1000) } private play(): void {