Feature/configurable crossfade duration#427
Merged
theovilardo merged 15 commits intomasterfrom Dec 4, 2025
Merged
Conversation
Make the curve cards in the EditTransition screen have equal width. Add the EditTransition screen to the list of screens where the navigation bar should be hidden.
- Updated `DualPlayerEngine`: - Added `setPauseAtEndOfMediaItems(Boolean)` to manually control the master player's auto-advance behavior. - Configured `playerB` (auxiliary player) to NOT handle audio focus. This prevents it from pausing the master `playerA` when it starts playing, which was killing the crossfade effect. - Updated `TransitionController`: - When scheduling a valid transition, now sets `engine.setPauseAtEndOfMediaItems(true)`. This ensures `playerA` pauses at the end of the track instead of jumping to the next one, allowing the transition logic to fully control the handoff. - Resets `pauseAtEndOfMediaItems` to `false` when the transition is cancelled, skipped, or when a new media item starts, preserving normal playback behavior outside of transitions.
- Updated `TransitionController` to trigger the transition just before the current song ends (500ms buffer) instead of overlapping by the full duration, effectively implementing a gapless start. - Modified `DualPlayerEngine` to keep the old player at full volume until it finishes naturally, while fading in the new player from 0 volume. This matches the user's revised request for "Finish Completely + Fade In Next". - Included previous fixes: Manual Audio Focus management and Fresh Player strategy to resolve OEM device stability issues.
Added a user preference for crossfade duration (range: 2s to 12s, default: 6s) and a corresponding slider in the Settings screen. The new duration setting is integrated into the global transition settings flow, allowing the playback engine to dynamically adjust the crossfade length without requiring code changes.
This commit introduces a complete visual overhaul of the "Edit Transition" screen, adopting modern Material 3 design principles for a cleaner and more intuitive user experience. Key changes include: - Replaced the static `TopAppBar` with a collapsible `LargeTopAppBar`. - Replaced the "Save" `TextButton` with a `ExtendedFloatingActionButton` for better visibility and access. - Redesigned the "Active Status" card with clearer typography and layout. - Implemented a new expressive morphing toggle for selecting the transition mode (None/Crossfade). - Revamped the "Transition Duration" section with an improved crossfade visualizer. - Redesigned the "Volume Curves" selection cards for better readability and interaction. - Added animations for showing/hiding dependent settings when crossfade is toggled. - Updated icons, shapes, and colors to align with the Material 3 design system.
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.
No description provided.