Use Bungee by default and remove per-deck engine selectors - #24
Conversation
Add the Bungee scaler implementation and wire it into Mixxx's keylock engine path without carrying vendored Bungee source.
Add regression coverage for Bungee keylock scaler selection and buffer-window accounting behavior.
Resolve Bungee through package, vcpkg, or module discovery and normalize every provider to the Bungee::Bungee target.
Add the pinned ExternalProject fallback and permanent Bungee/pffft patch homes so non-vcpkg builds do not depend on the temporary overlay.
Default Bungee on, seed preference defaults, and keep Dual-threaded Stereo UI state consistent with the selected keylock engine.
Document the cleanup point in the clean stack: this branch was built without tracking lib/bungee source, and dependency paths now resolve through package, vcpkg, module, or source-fetch providers.
Add Flatpak Eigen3, pffft, and Bungee modules before Mixxx and point Bungee patches at the permanent cmake/patches/bungee home.
Add the Bungee ASan workflow, dependency path filters, sanitizer source-fetch environment, and build workflow coverage.
Document Bungee build modes, dependency fallback prerequisites, Flatpak/CI notes, and the runtime invariants maintainers need for validation.
Extend EngineBufferAlignmentTest with an opt-in CommonScalerPositionTrace scenario for every available keylock engine and both unity and stretched forward playback. Capture per-callback play positions, read-ahead ranges, effective rate, scaler visual offsets, visual-play predictions, marker data, and output finiteness in an atomically written TSV trace. Add the focused friend declaration needed by the test to inspect the selected scaler and keylock state. Keep the trace disabled unless MIXXX_ENGINE_POSITION_TRACE_DIR is set and document its forward-only, synthetic-timing limitations.
Make the alignment test warning-clean across the CI toolchains by guarding optional keylock marker thresholds, replacing the infinity initializer with a finite sentinel, and making size_t-to-int conversions explicit. Update the SoundTouch 2.4.0 Flatpak archive checksum to the hash of the current Codeberg download, matching the artifact observed in CI.
The bungee alignment change introduced a lower-bound clamp on visual play positions. That erased negative preroll positions used by EngineSync phase matching and caused BeatDistanceBeforeStart and BeatContextRounding failures across CI platforms. Retain the upper track-end cap when converting absolute play positions to fractional positions, while allowing signed preroll values through. Pass the signed visual play position from updateIndicators to the conversion helper. Validated in mixxx-build: - Rebuilt mixxx-test successfully. - All 61 EngineSyncTest.* tests passed. - Visual play-position, engine-buffer-alignment, and BeatsTranslate tests passed.
Integrate upstream/main at 6d9be24 while preserving the fork's Bungee and Signalsmith engine support, signed negative-preroll EngineSync behavior, opt-in engine position tracing, and CI portability fixes. Resolve the overlapping keylock-engine changes by adding upstream RubberBand R3 short-window support, retaining the fork-specific scalers and signal setup, and assigning unique persisted enum values to Bungee and Signalsmith. Adopt upstream workflow updates and the SoundTouch 2.4.1 checksum. Validation: CMake reconfiguration and the mixxx-test build started successfully in the mixxx-build distrobox. The build was intentionally interrupted by the user at approximately 36% before completion. No unresolved merge conflicts remain.
Restore the global [App],keylock_engine control while keeping per-deck keylock settings authoritative, and remove redundant per-deck configuration lookups. Update the QML sound manager proxy to save only the global selector and add migration coverage for Bungee and Signalsmith values. Preserve flushed Bungee frames across process boundaries and extend the flush-accounting regression test. Fix the benchmark workflow indentation, trigger Bungee ASan runs for keycontrol changes, and build Eigen3 out of source in Flatpak. Validated in mixxx-build: - cmake --build ... --target mixxx-test --parallel 1 (100% complete). - 81 focused tests passed; one opt-in trace test skipped. - EngineSyncTest.*: all 61 passed. - Exact prior CI failures SlowRubberBand, SoundTouchCrashTest, SoundTouchReverseTest, and RubberbandReverseTest: all passed.
…nerated by an AI Agent. Fix CI formatting, Flatpak packaging, and keylock setup Apply the complete formatter output required by the PR-range pre-commit run, including clang-format and gersemi changes across the affected C++ and CMake files. Fix nested-shell quoting in localuser.sh without suppressing ShellCheck, and correct the Bungee ASAN workflow command folding and concurrency handling. Keep Eigen builds out of source and install its license files from the correct source-tree-relative path. Route QML keylock selection through a deferred all-deck update that applies controls and persists Channel1 through Channel4 after audio devices close. Clarify that the real-DJ prerequisite applies to pull requests targeting main while retaining human review and deliberate publish requirements. Validation: mixxx-qml-lib, mixxx-test, and mixxx built successfully in mixxx-build; focused tests passed with one opt-in skip and three disabled tests; git diff --check and bash -n passed. END AI AGENT DISCLAIMER: This commit message was autonomously generated by an AI Agent.
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Coverage Report for CI Build 32247056446Warning No base build found for commit Coverage: 30.563%Details
Uncovered Changes
Coverage RegressionsRequires a base build to compare against. How to fix this → Coverage Stats
💛 - Coveralls |
Summary
This focused PR is based on the Bungee/SignalSmith integration from PR20 and targets
0cwa/mixxx:mixxx/main.[App] keylock_enginesettings while seeding the global default for new profiles.The selector-bearing implementation is preserved separately on
feature/per-deck-engine-selector.Local validation
Built in the
mixxx-builddistrobox:Focused test run:
Result: 23 tests ran, 22 passed, and 1 trace test was intentionally skipped because it requires
MIXXX_ENGINE_POSITION_TRACE_DIR.git diff --checkpassed. Pre-existing local changes toAGENTS.mdand untrackedsrc/test/echoreverbchain_test.cppwere excluded.