Arpeggios in piano roll
- Dominant language
- C++
- Stars
- 10.4k
- Forks
- 1.3k
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 7
Description
### Enhancement Summary
Unlike converting #3880 proposes, this is designed to be born from piano roll, and live in piano roll.
#### Why
Unlike arpeggiator, these are bound to rhythm, and as such are better suited for piano roll; they are also easier to edit than automation over chords. Particularly useful for repetitive patterns like pads and/or bass
### Implementation Details / Mockup
Here's where the fun starts.
#### Main
The main mockup I can come up with is the "loop" tool.
How it works is: select a note pattern, activate the tool (it would better off being a hotkey, but can also be a toggle), and extend the notes. What happens then is the pattern is copied from start to end repeatidly (looping), then cut if it isn't a perfect multiple. It also works backwards just by cropping & deleting the notes.
There are two problems with this:
- Ideally you should be able to specify space between the notes if you need any, however basic note selection doesn't enable that. We could add that as a text field, but that's ugly.
- You probably need to make the notes much shorter than everything else, which is painful but I don't think there would be any better way to do that.
##### Alt resizing
There's also a different way. We can automagically shrink the selection like it already can currently, then concat it until it fits current length. it's essentially the same thing but backwards and I don't see any upsides over the previous method.
#### Alt: arpeggio generation
This is how it works in arpeggiator. We specify a chord, a note duration, and place the notes. There are several issues with this, for example we still need to slice the notes, and thus lose the ability to easily shrink the arpeggios. We also limit people to the pre-generated chords, which isn't a big deal but may break the workflow for some people. We also need more buttons.
### Please search the issue tracker for existing feature requests before submitting your own.
- [X] I have searched all existing issues and confirmed that this is not a duplicate.
I may try to make a PR myself after the mockup gets settled, but I can't guarantee that.
Contributor guide
No contributing guide indexed for this repository
Research direction
No file, test, or concrete entry point is named. Start by reviewing the piano roll implementation alongside the loop-tool mockup, then clarify the interaction, spacing behavior, and resizing expectations before coding; done should mean the agreed arpeggio workflow is implemented in piano roll.
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
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100