lmms icon indicating copy to clipboard operation
lmms copied to clipboard

Bulldozer in Piano roll

Open allejok96 opened this issue 3 years ago • 1 comments

New edit mode to quickly scale and move things around. Stems from #6140. Forgive the bad English.

https://user-images.githubusercontent.com/7693838/185953603-090a0912-c46c-435d-8c69-5c351ccd4ed4.mp4

Didn't want to wait for piano roll rewrite any more. Needed this feature.

New stuff

  • Scrollable edit mode button in the toolbar
  • Edit mode button and note actions button remembers last used
  • Bulldozer move:
    • Selects all notes to the right if no notes are selected
    • Stretches the notes that touches or overlaps the left side
  • Bulldozer resize:
    • Proportional, like shift-resize
    • All notes are proportionally resized between the red lines (the edges of the selection)
    • Moved note snaps to grid
    • Notes in between are not quantized - proportions kept intact (applies to ordinary shift-resize too)
    • Moves posterior notes
  • Hold shift to temporarily disable bulldozer and move or resize a single note

Bugs fixed

  • Disable quantization when moving notes in grid snap mode by holding alt
  • Resize in grid snap mode snaps to closest line correctly
  • Length of new note after resizing is taken from the last clicked note, not the rightmost note
  • Knife mode always exits to draw mode when right clicking (not a bug)

Needs testing

  • Drawing
  • Moving / resizing
  • Modifiers
  • Hitting the top/bottom
  • Hitting other notes in bulldozer mode
  • Switching between modes (knife mode in particular)
  • Messing with drum notes
  • Minimum note lengths when resizing
  • Grid snapping vs nudge

Beware of bugs

I know there's a ton in the old code. I didn't want to fix them to keep the PR clean, but some of them just had to go. Hope I didn't introduce that many new though.

allejok96 avatar Aug 22 '22 15:08 allejok96

Made it draft since dragNotes needs some more work with note boundaries etc

allejok96 avatar Aug 31 '22 19:08 allejok96