Repository navigation
feat: Unified Production-Grade Auto DJ & Club Automix Engine - #422
Merged
Merged
Conversation
…xistence, and queue visualization Enforces 4 real-DJ rules in the native C++ Automix DSP engine and Auto DJ cue detector: - Skip Spoken Intro Skits: 35s beat-grid lock on 60-130Hz kick transients (crest factor >= 1.35, RMS > -16 dBFS), cueing 1 bar before drop. - Phrase Boundary + 1-Bar Drum Loop Exit: never cuts mid-sentence; captures and loops cleanest 1-bar drum segment for exit bed. - Zero Bass-Hole Guarantee: Deck A holds 0dB bass until 75%, Deck B filtered by 220Hz LR4 HPF, instantaneous 0dB bass swap on downbeat at 75%, removed >3kHz muffle. - Zero Vocal-on-Vocal Collision: Deck A locked to drum loop with -12dB mid cut into 1.2s dub-echo tail. - Auto DJ & Automix Coexistence: Auto DJ defaults to OFF, both can be enabled concurrently overriding basic crossfade. - Queue Management & UI: 6-song Auto DJ queue replenishment with dominant song display, live dual-deck monitor and Now Playing badge row.
… dual-deck transition engine - Asynchronous prefetch state machine (QUEUED -> COMPLETED) with bounded concurrency (2) and 40s advance arming - TransitionPlanner with hard 30s clamp, lyrics-aware vocal guard, and 35s spoken skit skipper - Native C++ Oboe DSP with equal-power curves, -1.5 dB trim, soft-knee tanh limiter, and t=0.55 midpoint bass swap - Dynamic vocal ducking (-9.0 dB at 1200 Hz), 1.4s reverb tail, and single texture FX auto-chooser - UI lockstep pause/resume, t=0.55 seekbar/lyrics handover, Now Playing status pill, and artwork cross-dissolve - Settings: sequentialAlbumBypass (default ON) and automixOnSkip (default ON)
…, and TrackLifecycleStage enums in MusicPlayer
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements a unified, production-grade Auto DJ (Intelligent Queue & Prefetch Controller) and Automix (Beat-Synchronized C++ Dual-Deck DJ Transition Engine) for LastWave-Native.
Core Rules & Interlocks
autoDjEnableddefaults tofalseon clean installs. BothautoDjEnabledandautomixEnabledoperate independently or simultaneously.usbExclusiveBitPerfect == true(preserving integer bit-perfect output) and resumes on standard/Oboe output.sequentialAlbumBypass, default ON): Transitions consecutive tracks (trackNumber == prevTrackNumber + 1) from the same album with Shuffle OFF gaplessly without beat-mixing.Part 1: Auto DJ — Asynchronous Prefetch Pipeline & Queue Controller
QUEUED -> RESOLVING_STREAM -> STREAM_RESOLVED -> DECODING_HEAD_WINDOW -> ARMED_READY -> TRANSITIONING -> PLAYING -> COMPLETED(plusEXPIRED,FAILED_RETRYING,SKIPPED_UNPLAYABLE,CANCELLED).index + 1as soon as playback starts or the queue mutates; decodes head 35 seconds into Deck B ring buffermaxConcurrentResolvers = 2. Up to 2 bounded retries with exponential backoff beforeSKIPPED_UNPLAYABLE; silent background refresh of expired URLs.index + 1pre-resolved and armed for instant skip-mixing.Part 2: Automix Transition Planner
[durationMs - 30_000, durationMs - 4_000].outCueMsto downbeats following the end of sung phrases using synced lyrics timestamps and mid-band (inCueMs1 or 2 bars before the drop—never landing mid-sentence.Auto,8 Bars(16 Bars(4 Bars(Part 3: Native C++ Oboe Dual-Deck Transition DSP & FX Send Suite
Part 4: UI, Seekbar, Lyrics & Artwork Synchronization
Verification
test_transition_planner.cpp: PASSED (lifecycle state machine, 40s advance arming, refill ontest_automix_dsp_upgrades.cpp: PASSED (equal-power gain, -18dB bass swap, resonant filter sweep, drop beat onset, in-place processing).