LMMS / LMMS/lmms

Arpeggios in piano roll

Open
#7,580 6 comments 0 reactions 0 assignees View on GitHub
enhancement gui
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.