Skip to content

Feature: Add Note Velocity Editor to Automation View - #2046

Merged
seangoodvibes merged 39 commits into
SynthstromAudible:communityfrom
seangoodvibes:Automation-Velocity-Editor
Jun 20, 2024
Merged

Feature: Add Note Velocity Editor to Automation View#2046
seangoodvibes merged 39 commits into
SynthstromAudible:communityfrom
seangoodvibes:Automation-Velocity-Editor

Conversation

@seangoodvibes

@seangoodvibes seangoodvibes commented May 28, 2024

Copy link
Copy Markdown
Collaborator

Feature: Automation View Note Velocity Editor

New Note Velocity Editing View that has been added as part of the existing Automation View implementation so that you can edit the velocities and other parameters of notes in a single note row.

Screenshot 2024-06-05 at 11 34 47 AM

Description:

  • imagine if the whole grid was just one note row, or one kit row
  • each column of colours represents a note
  • the vertical colours represents that notes velocity which you can edit by interacting with the grid (like you would with a parameter in automation view)

Outstanding Items:

Future PR Work
  • Code Review + Refactoring
  • Fix note editor state so that it is clip specific and not view specific (e.g. entering note editor in one clip should not cause another clip with automation view open to enter note editor).
  • Fix selected note row so that it is clip specific and not view specific
  • Bugfix - Might still be an issue with 7seg display but can't reproduce.
  • Fix any bugs / tweaks needed for velocity ramps
  • Add ability to shift velocity ramp up down
  • Add velocity ramp selection to pad selection mode
  • Add ability to switch from left to right pad while velocity ramp is selected
  • Activate gold knobs for adjusting velocity ramp when it is selected?
  • Refactor audition pad action in automation view to call code in instrument clip view as there is duplication
  • LastAuditionedYDisplay can become out of sync with selected drum in a kit
Completed
  • Fix note row selection blinking when re-entering automation view after exiting
  • Fix grey out of velocity editor when entering menu
  • Fix Shift + <> to shorten / extend the note row's length and not the clip's length while in note editor
  • Change note deletion to happen when you press pad that corresponds to squares average velocity
  • Change bottom pad press to set velocity to 1 instead of deleting note
  • Fix <> + back to clear only the selected note row's notes and not the entire clip
  • Enter velocity view with audition pad + velocity shortcut from instrument clip view
  • Fix note probability editing - you can now press and hold on the top velocity pad in a column to edit the note's probability
  • Fix note repeat editing - you can now press and hold on the top velocity pad in a column to edit the note's repeats
  • Enable cross screen velocity note editing
  • Fix 7SEG display rendering
  • Bugfix - Switching from pad selection mode in note editor to another param keeps you in pad selection mode, but it seems like left pad selection is stuck. Fix it by exiting pad selection mode b4 switching to other params with shortcut.
  • Add quantize / humanize combo (audition pad + press and turn tempo)
  • Add velocity ramps - Change velocity of all notes between two presses
  • Velocity ramp - Fixed bug where OLED display would not show L and R position of Velocity ramp even while still multi pad press is active
  • Fix notes recorded in with audition pads not rendering until you turn off recording
  • Fix 7Seg display rendering for velocity ramps
  • Update row probability so that you can edit row probability by just turning select while you are outside pad selection mode and aren't currently holding a note press
  • Re-added note row transpose shortcut (Press + turn vertical encoder)
  • Add shortcuts for rotating note row press vertical + press and turn <> and press audition + Press and turn <>
  • Add horizontal scrolling and zooming into pad selection mode
  • Add waveform shortcut blinking to indicate you're in pad selection mode
  • Fix pad selection mode can't be enabled while in menu view
  • Fix euclidean - it removes notes entered by previous euclidean actions (e.g. enter euclidean notes on one note row, then switch to another note row and add notes with euclidean and then remove them - it will removes notes from current note row and previous note row - I think it's because it's doing an "undo" action
  • Bugfix - Sometimes note row selected and velocity shortcut doesn't blink (noticed it when jumping from automation editor to velocity editor) - Also noticed it exiting out of velocity editor into instrument clip view and back into velocity view

Quick Overview:

  • Enter the Velocity Editor View by:
    • While in the Automation Instrument Clip View, use Shift + Velocity or press Velocity pad on Automation Overview to enter the Velocity Note Editor
      OR
    • While in the Instrument Clip View, hold Audition pad + Press Velocity shortcut pad
  • Select note row:
    • Press audition pad or Vertical scroll to select different note rows
    • The audition pad will blink to indicate the currently selected note row
    • The display will indicate the note code / drum name of the row you have selected
  • Add Note / Adjust Velocity Using Grid:
    • Press grid to set/adjust velocities of existing notes and add note (if no note exists)
  • Set a Velocity Ramp:
    • Press and hold two grid note pads to set a velocity ramp between the two notes.
    • Note: for this to work, you must first press a pad that has a note in it and then press a second pad that has a note in it. if the second pad has no note already in it, it will set a tail instead for the first note pad pressed (or if it's a drum sound, like a kick, it will just add another note in the position of the second pad press).
  • Remove Note:
    • Short press top velocity pad in a note column to remove note
  • Select Note and Adjust Note Parameters:
    • Long press top velocity pad in a note column to see note's velocity and perform note related adjustment actions (e.g. adjust velocity, probability). Note press related actions include:
      • Adjust Velocity: Turn horizontal encoder <>
      • Adjust Probability: Turn Select Encoder
      • Adjust Note Repeat: Press and Turn Vertical Encoder
      • Adjust Automation: Turn gold knobs
  • Adjust Note Row Transpose:
    • Press and turn vertical encoder
    • Note: does not work if you are holding a note (transpose gets replaced with editing note repeats)
  • Adjust Note Row Probability:
    • Hold Audition Pad + Turn Select Encoder to change the selected Note Row's probability
      • Note: does not work if you are currently holding a note
  • Add/Remove Notes with Euclidean:
    • Hold Audition Pad + Press and turn vertical encoder
    • Note: The Euclidean action is replaced by note repeat editing if you have selected a note (either by holding a note outside pad selection mode or if you are in pad selection mode)
  • Change clip length:
    • Hold Shift + turn horizontal encoder <>
  • Change selected note row length by:
    • Holding Audition pad + Turning horizontal encoder <>
    • Note: does not work if you have selected a note
  • Clear notes in selected note row by:
    • Holding horizontal encoder <> + pressing Back
    • Note: does not work if you have selected a note
  • Rotate Note Row by:
    • Holding vertical encoder + turning horizontal encoder <>
    • Holding audition pad + pressing and turning horizontal encoder <>
    • Note: does not work if you have selected a note
  • Quantize / Humanize notes by:
    • Enabling Quantize community feature
    • Hold audition pad + press and turn tempo encoder to set quantize / humanize %
  • Cross Screen Editing:
    • Press cross screen while in the Velocity Note Editor to edit notes across multiple screens.
    • Note: you can only toggle cross screen editing if the clip has multiple screens OR the current note row selected has multiple screens.

** Future PR Functionality: **

The following functionality was removed from this PR as it still needs work.

  • Pad Selection Mode:
    • Press Shift + Waveform to enter Pad Selection Mode
    • Pad Selection Mode allows you to select note and perform all the same actions as if you were holding that note's pad. This includes:
      • Turn <> to adjust the selected note's velocity (in pad selection mode you can also hold shift to adjust the note's velocity more quickly)
      • Press Shift + Turn <> to adjust selected notes velocity faster
      • Press + Turn vertical encoder to adjust the selected note's repeats
      • Turn select encoder to adjust the selected note's probability
      • Note: to use the following actions in Pad Selection Mode, you need to first de-select a note by pressing that note again:
        • Horizontal scrolling (Turn <>)
        • Zooming (Press + Turn <>)

Some Demo Videos:

Euclidean Fun:

IMG_9140.mov

Playing with Probability:

IMG_9233.mov

Euclidean and Probability Together:

IMG_9364.mov

Enter Velocity Ramps for Existing Notes:

IMG_9312.mov

@seangoodvibes
seangoodvibes marked this pull request as draft May 28, 2024 22:35
@github-actions

github-actions Bot commented May 28, 2024

Copy link
Copy Markdown
Contributor

Test Results

46 tests  ±0   46 ✅ ±0   0s ⏱️ ±0s
 8 suites ±0    0 💤 ±0 
 8 files   ±0    0 ❌ ±0 

Results for commit 046cbf2. ± Comparison against base commit 35131d2.

♻️ This comment has been updated with latest results.

@seangoodvibes seangoodvibes changed the title Add Velocity Note Editor to Automation View [DRAFT] Add Velocity Note Editor to Automation View May 28, 2024
@seangoodvibes
seangoodvibes force-pushed the Automation-Velocity-Editor branch 5 times, most recently from baeb3ff to 959cd3a Compare May 31, 2024 00:46
@seangoodvibes seangoodvibes changed the title [DRAFT] Add Velocity Note Editor to Automation View [DRAFT] Feature: Add Note Velocity Editor to Automation View Jun 5, 2024
@seangoodvibes
seangoodvibes force-pushed the Automation-Velocity-Editor branch 4 times, most recently from d2df06d to 35020cb Compare June 8, 2024 01:14
@m-m-adams

Copy link
Copy Markdown
Collaborator

Featurewise my last nit is that holding a note and turning <> encoder should fine tune velocity (same as it does outside velocity automation view)

@seangoodvibes
seangoodvibes force-pushed the Automation-Velocity-Editor branch from 21bea5b to cb93eab Compare June 11, 2024 20:15

@m-m-adams m-m-adams left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Automation view should be split into two, just make a note automation view that inherits from automation view and overrides the functions that are checking inNoteEditor() right now. It'll reduce the spaghetti factor by a ton and also run more efficiently

Coming along well though!

Comment thread src/definitions_cxx.hpp Outdated
Comment thread src/deluge/gui/views/instrument_clip_view.cpp Outdated
Comment thread src/deluge/gui/views/instrument_clip_view.cpp Outdated
Comment thread src/deluge/gui/views/instrument_clip_view.cpp
Comment thread src/deluge/model/note/note_row.cpp
Comment thread src/deluge/gui/views/instrument_clip_view.h
Fixed two bugs:

- note row not blinking when exiting and re-entering automation view
- velocity editor not greying out when entering menu
Refactored code for adjusting note row length to remove duplication between automation view and instrument clip view

Updated Shift + <> shortcut to edit note row length while in note editing view
Updated logic for removing note to only remove note when you press the pad corresponding to the average velocity value of the note you're pressing

Fixed bug to disable extending / shortening clip length with shift + <> while in pad selection mode
Updated <> + back shortcut to only clear notes and mpe for selected note row
Added shortcut to enter velocity note editor view directly from instrument clip view by holding audition pad and pressing velocity shortcut pad
Updated note press behaviour so that:

- remove note by short pressing top velocity pad
- adjust note by long pressing top velocity pad and relevant actions (e.g. turn horizontal encoder to change velocity or turn select encoder to change probability)
- you can also press on the top pad to see the current average velocity value of that pad

Set row probability shortcut back to audition pad + turn select.
Added editing of note repeats
Added toggling of cross screen editing to velocity view

Added logic to turn off the cross screen LED and toggling when you're in automation overview or automation editor.
- Fixed 7seg display rendering behaviours
- Fixed OLED rendering behaviours for pad selection mode in regular automation view so that it doesn't blink the value when holding a selected pad but keeps showing the value until you release the pad press
- Removed euclidean from pad selection mode
- Added additional UI mode checks for Note Repeat and Euclidean
- Fixed bug with pad selection mode not getting cleared properly when switching between automation and velocity while in pad selection mode
Couple bug fixes:

- Rendering of L and R position on OLED display when drawing velocity ramp

- Rendering of notes when recording and using audition pads
Adjusted display to show value of second pad press while you're holding it
Updated feature so that row probability can be changed by just turning select while in note editor with row selected

Disabled editing row probability while in pad selection mode
Put shortcuts back for a few actions so behaviour functions as expected:

- Shift + <> adjusts clip length again
- Press and turn vertical encoder to transpsoe clip
- Hold audition + Press and turn vertical encoder to use euclidean
- Hold audition + Turn select encoder to adjust note row probability
- Enabled euclidean, row probability and clip length adjusting while in pad selection mode
- Added ability to rotate note row by holding audition pad and holding down and turning horizontal encoder

- Fixed bug with automation param type being out of sync with selected param

- Fixed bug with automation param type being set wrong while in the menu
Formatting and cleanup
Fixed rotating of note row using audition pad + <>

Fixed selected note on display not getting updated when transposing not kit clip with vertical encoder
Aligned with automation view to also use press vertical + turn <> to rotate note row in focus.
Enabled de-selection of selected pad in velocity pad selection mode so that you can horizontal scroll and zoom in / out
Add blinking of pad selection mode shortcut (waveform pad)
Enabled toggling of pad selection mode while in automation menu view
Fixed bug where euclidean action wasn't get closed when releasing audition pad for selected note row
Disabled pad selection mode for this PR

Improved ramp calculation accuracy by using float math

Added documentation
@seangoodvibes
seangoodvibes force-pushed the Automation-Velocity-Editor branch from ddc3139 to d097a8f Compare June 19, 2024 21:39
Updated AutomationParamType::NON_NOTE to AutomationParamType::PER_SOUND
for rendering play head, get the note row only once
@seangoodvibes
seangoodvibes marked this pull request as ready for review June 19, 2024 22:51
@seangoodvibes seangoodvibes changed the title [DRAFT] Feature: Add Note Velocity Editor to Automation View Feature: Add Note Velocity Editor to Automation View Jun 19, 2024
added isValid flag to squareInfo struct with default value of false to flag whether squareInfo struct is valid to be used or not.
@seangoodvibes
seangoodvibes added this pull request to the merge queue Jun 20, 2024
Merged via the queue into SynthstromAudible:community with commit 0855cf9 Jun 20, 2024
tastycode pushed a commit to tastycode/DelugeFirmware that referenced this pull request Jul 3, 2024
…le#2046)

* Add Velocity Note Editor to Automation View

WIP

* Bugfix - noteRow blinking and menu greyout

Fixed two bugs:

- note row not blinking when exiting and re-entering automation view
- velocity editor not greying out when entering menu

* update comments

* Update note row length editing

Refactored code for adjusting note row length to remove duplication between automation view and instrument clip view

Updated Shift + <> shortcut to edit note row length while in note editing view

* Update logic for removing note

Updated logic for removing note to only remove note when you press the pad corresponding to the average velocity value of the note you're pressing

Fixed bug to disable extending / shortening clip length with shift + <> while in pad selection mode

* Only clear notes and mpe for selected note row

Updated <> + back shortcut to only clear notes and mpe for selected note row

* Reorder function

* Shuffle functions around a bit more

* fix rebase mistake

* add velocity view shortcut

Added shortcut to enter velocity note editor view directly from instrument clip view by holding audition pad and pressing velocity shortcut pad

* Update note press behaviour

Updated note press behaviour so that:

- remove note by short pressing top velocity pad
- adjust note by long pressing top velocity pad and relevant actions (e.g. turn horizontal encoder to change velocity or turn select encoder to change probability)
- you can also press on the top pad to see the current average velocity value of that pad

Set row probability shortcut back to audition pad + turn select.

* Add Note Repeat Editing

Added editing of note repeats

* Add cross screen editing

Added toggling of cross screen editing to velocity view

Added logic to turn off the cross screen LED and toggling when you're in automation overview or automation editor.

* Bunch of fixes

- Fixed 7seg display rendering behaviours
- Fixed OLED rendering behaviours for pad selection mode in regular automation view so that it doesn't blink the value when holding a selected pad but keeps showing the value until you release the pad press
- Removed euclidean from pad selection mode
- Added additional UI mode checks for Note Repeat and Euclidean
- Fixed bug with pad selection mode not getting cleared properly when switching between automation and velocity while in pad selection mode

* Couple bug fixes

- Fixed bug where muting a different note row in a kit would change the selected drum
- Updated note row blink speed

* Add quantize & humanize combo

Added audition pad + press and turn tempo encoder to quantize / humanize notes

* Add velocity ramps (WIP)

Added ability to press on two note pads to set a velocity ramp for the notes between the pads between the velocity values of the start and ending note

For this to work you need to select a first note and then select a second note and it will adjust the velocities values of the all notes in between.

Still some work to be done on this (display related and using floats instead of integers for more accurate ramp calculations), but it is functioning.

* Bug fixes - Velocity Ramp + Recording Notes

Couple bug fixes:

- Rendering of L and R position on OLED display when drawing velocity ramp

- Rendering of notes when recording and using audition pads

* Adjust multi pad press display for 7seg

Adjusted display to show value of second pad press while you're holding it

* update shortcut for editing row probability

Updated feature so that row probability can be changed by just turning select while in note editor with row selected

Disabled editing row probability while in pad selection mode

* Putting shortcuts back

Put shortcuts back for a few actions so behaviour functions as expected:

- Shift + <> adjusts clip length again
- Press and turn vertical encoder to transpsoe clip
- Hold audition + Press and turn vertical encoder to use euclidean
- Hold audition + Turn select encoder to adjust note row probability
- Enabled euclidean, row probability and clip length adjusting while in pad selection mode

* Bug fixes

- Added ability to rotate note row by holding audition pad and holding down and turning horizontal encoder

- Fixed bug with automation param type being out of sync with selected param

- Fixed bug with automation param type being set wrong while in the menu

* Formatting and cleanup

Formatting and cleanup

* Fix adjust velocity

* Fix transpose + Note row rotate

Fixed rotating of note row using audition pad + <>

Fixed selected note on display not getting updated when transposing not kit clip with vertical encoder

* Update rotate row combo

Aligned with automation view to also use press vertical + turn <> to rotate note row in focus.

* Fix audition pad rendering bugs

* Enable pad de-selection in pad selection mode

Enabled de-selection of selected pad in velocity pad selection mode so that you can horizontal scroll and zoom in / out

* Add pad selection shortcut blinking

Add blinking of pad selection mode shortcut (waveform pad)

* Enable pad selection toggling while in menu view

Enabled toggling of pad selection mode while in automation menu view

* Fix bug with euclidean

Fixed bug where euclidean action wasn't get closed when releasing audition pad for selected note row

* Disable Pad Selection Mode + Improve Ramp Calculation Accuracy

Disabled pad selection mode for this PR

Improved ramp calculation accuracy by using float math

Added documentation

* Update community features

* Update change log

* Update automation param type

Updated AutomationParamType::NON_NOTE to AutomationParamType::PER_SOUND

* Fix wrapping

* getNoteRow once for playhead

for rendering play head, get the note row only once

* construct squareInfo with isValid false

added isValid flag to squareInfo struct with default value of false to flag whether squareInfo struct is valid to be used or not.

* update isValid init syntax
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants