musescore / musescore/MuseScore
New "Paste dynamics" command
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 15.1k
- Forks
- 3.3k
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 91
Description
Your idea
("Dynamics" here means dynamics like mf, hairpins, and crescendo/diminuendo lines)
- Select a range
- Copy
- Select somewhere else
- "Paste dynamics"
If the target is a single note/rest or a single-staff range selection, clear all dynamics from the length of the selection, then paste only dynamics from the selection.
If the target is a range selection spanning multiple staves, and the source material is a single stave, then repeat this process for each stave in the target selection.
Problem to be solved
It is a very common need to have multiple instruments playing the same sequence of dynamics at the same time, or to play a similar phrase with the same dynamics at different times.
Thus we often need to duplicate sequences of dynamics from one place to another. It is particularly cumbersome to make changes when there are already dynamics present.
To take an example, let's say we want to update the lower clarinet line to have the same dynamics as the upper one:
A current workflow might look like:
- Select the bars in the lower part.
- Switch to the selection filter.
- Clear all
- Select "Dynamics" and "Hairpins"
- Delete
- Click the first pp in the upper part
- Shift-click the last mp in the upper part (special "select similar in range" list selection)
- Ctrl-click the two hairpins in the upper part
- Copy
- Click the first note in the lower part
- Paste
(If there were multiple parts to be pasted into, repeat steps 10 and 11 a few times)
With this feature, the workflow would be:
- Select the bars in the upper part
- Copy
- Select the first note in the lower part, or a range across a few staves
- Paste dynamics
Prior art
No response
Additional context
It might worth considering other similar specialised paste functions at the same time, in particular:
- paste articulations
- paste slurs
An alternative design is to streamline just the selection filtering part of the process (see #29634) but that would still require more steps: select the target area, filter for dynamics, delete, select the source area, filter for dynamics, copy, select the target area again, paste.
Checklist
- This request follows the guidelines for reporting issues
- I have verified that this feature request has not been logged before, by searching the issue tracker for similar requests
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue names no source files, tests, or entry points. Start by locating the existing copy/paste command handling and dynamics selection behavior, then define the command's behavior for single-staff and multi-staff targets and verify it against the workflows described here.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- desktop
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100