Skip to content

Conversation

@RomanPudashkin
Copy link
Contributor

@RomanPudashkin RomanPudashkin commented Jan 31, 2025

This PR introduces a new note input mode (similar to "Pitch before duration" in other notation programs) that can be activated using this button

Screenshot 2025-01-31 at 16 04 34

Resolves: #24537
Resolves: #25027
Resolves: #20891

@MarcSabatella
Copy link
Contributor

Looking forward to checking this out! I gather this can pretty much replace the old "rhythm only" mode. But what happens to the repitch mode, which is definitely relied upon by many, or the insert mode, which also has its uses? Also the real-time modes, which are not used so much in part because they have been kind of broken for a while but presumably be wanted again.

@RomanPudashkin
Copy link
Contributor Author

All the existing note input modes (including rhythm only) are unaffected by this PR, so you can use them as before. Although, they are now located in a different menu

Screenshot 2025-01-31 at 16 30 45

@RomanPudashkin RomanPudashkin force-pushed the input_by_duration_mode branch 2 times, most recently from 1294917 to e266477 Compare February 3, 2025 11:13
Copy link
Contributor

@mathesoncalum mathesoncalum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good! Left some comments - mostly nitpicks and I wouldn't consider any of them to be blockers.

navigation.name: "PlayPreviewNotesInInputByDurationBox"
navigation.panel: root.navigation
navigation.row: 0
navigation.row: 1
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can do these incrementally (i.e. playNotesToggle.navigation.row + 1)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This approach has the disadvantage of creating unnecessary bindings

is.setRest(false);
is.setNoteEntryMode(true);

//! TODO Find out why.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did we find out why? 😅

Or is this just one of those very old/redundant TODOs?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like this goes back to the initial commit on GitHub, 13 years ago. I don't know the specific reason, but I can say that back in those days, we had very limited ability to do any sort of partial relayout, so setUpdateAll() happened a lot in cases where it isn't needed anymore.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, it's an ancient hack (which hurts performance a lot). Works fine without it, as far as I can tell

@DmitryArefiev
Copy link
Contributor

Tested on Win10, Mac13.6, LinuxUbuntu24.04.1 LTS - BASIC PART IS IMPLEMENTED

There are some issues with cursor ui on Win/Linux and rhythm only mode (will be logged separately)

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

Projects

Status: Done

5 participants