Skip to content

Enhance Settings layout and add customizable Stop button behavior#188

Open
MysticILD wants to merge 4 commits into
vocoder712:devfrom
MysticILD:stop-behavior-+-qol
Open

Enhance Settings layout and add customizable Stop button behavior#188
MysticILD wants to merge 4 commits into
vocoder712:devfrom
MysticILD:stop-behavior-+-qol

Conversation

@MysticILD

Copy link
Copy Markdown
Contributor

This PR optimizes the Settings page layout for better readability (specifically for LTR languages) and introduces a customizable Stop button behavior feature with three user-selectable options:

  1. Default (Multi-stage):
    • Play -> Stop = Back to playback start.
    • Stop again = Back to start of selected part.
    • Stop again = Reset to 0.
  2. Two-stage:
    • Play -> Stop = Back to playback start.
    • Stop again = Reset to 0.
  3. Instant: Always resets immediately to 0.

@vocoder712

Copy link
Copy Markdown
Owner

Thanks for your effort on this PR! I really appreciate your work on optimizing the Settings layout and implementing custom playback behaviors.

However, the proposed three-stage/two-stage/instant options don't quite match what I have planned for the project's playback control. I apologize that I didn't detail this in the TODO earlier, so let me clarify the behavior I'm aiming for.

Instead of choosing between different fixed modes, I want to implement a smarter dynamic behavior for the Stop and Pause controls, driven by a Playback Marker (temporary start position).

Here is the exact behavior I'd like to achieve:

1. Playback Marker Behavior

  • Synchronize the Playback Marker with the current playhead when playback starts.

2. Stop Button Behavior

  • 1st Press (While playing or paused with a marker): Return the playhead to the Playback Marker.
  • 2nd Press (Or 1st press if already at the Playback Marker): Move the playhead back to the start of the current UPart.
  • 3rd Press: Reset the playhead to the very beginning of the project (0).

3. Pause Button Behavior

  • If Currently Playing: Simply pause the playback at the current position (standard pause).
  • If Paused / Stopped:
    • Condition A (If user enabled this feature): Return the playhead to that marker, and start playing.
    • Condition B (If disabled): Start playing from the current position.

I think this logic will feel much more intuitive for aligned with current DAWs (FL, ACE). Would you be open to refactoring the PR?

If you feel this is too far from your original design or don't have time to implement it, no worries at all! Just let me know, and I can close this PR and implement this behavior myself later. (We could still keep your Settings layout optimization if you'd like to split it into a separate PR!)

Thanks again for your awesome contribution.

@MysticILD

Copy link
Copy Markdown
Contributor Author

Thanks for your effort on this PR! I really appreciate your work on optimizing the Settings layout and implementing custom playback behaviors.

However, the proposed three-stage/two-stage/instant options don't quite match what I have planned for the project's playback control. I apologize that I didn't detail this in the TODO earlier, so let me clarify the behavior I'm aiming for.

Instead of choosing between different fixed modes, I want to implement a smarter dynamic behavior for the Stop and Pause controls, driven by a Playback Marker (temporary start position).

Here is the exact behavior I'd like to achieve:

1. Playback Marker Behavior

  • Synchronize the Playback Marker with the current playhead when playback starts.

2. Stop Button Behavior

  • 1st Press (While playing or paused with a marker): Return the playhead to the Playback Marker.

  • 2nd Press (Or 1st press if already at the Playback Marker): Move the playhead back to the start of the current UPart.

  • 3rd Press: Reset the playhead to the very beginning of the project (0).

3. Pause Button Behavior

  • If Currently Playing: Simply pause the playback at the current position (standard pause).

  • If Paused / Stopped:

    • Condition A (If user enabled this feature): Return the playhead to that marker, and start playing.

    • Condition B (If disabled): Start playing from the current position.


I think this logic will feel much more intuitive for aligned with current DAWs (FL, ACE). Would you be open to refactoring the PR?

If you feel this is too far from your original design or don't have time to implement it, no worries at all! Just let me know, and I can close this PR and implement this behavior myself later. (We could still keep your Settings layout optimization if you'd like to split it into a separate PR!)

Thanks again for your awesome contribution.

Isn’t this the exact same logic in this PR? When you press Stop, it defaults to returning you to the starting position of playback, then to the beginning of the currently selected UPart, and finally to tick 0. Or am I missing something?

@MysticILD

Copy link
Copy Markdown
Contributor Author

Hello @vocoder712, I've refactored the PR to implement the dynamic Stop button behavior you outlined, but with a few adjustments:

I've fixed the logic to be closer to what you requested (Playback Marker -> UPart -> 0). However, I kept the Stop Button Behavior settings (the different modes) just for customization purposes, in case users still prefer the old ways.

I actually tried implementing the Play button setting you suggested (Condition A: returning to the marker when starting playback from a paused state). However, I ended up reverting it because it doesn't really make sense for a mobile app workflow. On mobile, users generally expect Play to simply resume from where they paused or from where they just tapped on the timeline.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants