Skip to content

Display clips in a grid in song (session) view - #251

Merged
jamiefaye merged 72 commits into
SynthstromAudible:communityfrom
PaulFreund:feature/sessionClipGrid
Aug 10, 2023
Merged

Display clips in a grid in song (session) view#251
jamiefaye merged 72 commits into
SynthstromAudible:communityfrom
PaulFreund:feature/sessionClipGrid

Conversation

@PaulFreund

@PaulFreund PaulFreund commented Jul 28, 2023

Copy link
Copy Markdown
Collaborator

This PR implements a new grid session layout to "Song" mode

Demo

Demo Video

Feature description

  • The data model of rows and grid mode are compatible, you can switch between them freely
  • In grid mode you will not be able to see multiple clips that are in the same section, only the first one. To make them visible move the clips to other sections
  • The colored coloumn on the right are all available sections, the columns are automatically filled with the tracks in the same order as in arrangement mode
  • In session mode hold "Song" and turn selection encoder to switch between row layout and grid layout
  • Existing clips (dimly white or green) can be opened by holding "Clip" button and clicking on them
  • New clips can be created by holding "Clip" button and clicking on an empty pad. If the column was empty a new track is created
  • By quickly clicking (and releasing) populated pads you can change the arm state
    • If "Shift" is held at the same time the clip will launch immediately
    • If "Record" is held at the same time you can change recording status
    • If horizontal encoder <> is held at the same time you can change solo state
  • By holding a populated pad you can see the track, change the parameters and convert it to other instruments similar to rows layout
  • Hold an existing pad and press on another pad in the same, other or empty row to copy clips. If possible the content will be converted to the target track type
  • To delete a clip hold the pad and press the "Save/Delete" button
  • To arm a whole row click on the section color to the right
  • To immediately switch to a whole row hold "Shift" and click on the section color
  • To MIDI learn:
    • Arming a section hold "Learn/Input" and hold the section pad
    • Arming a clip hold "Learn/Input" and hold the clip pad
    • Note input to a track hold "Shift" + "Learn/Input" and hold the pad of any populated clip for that track
  • Compared to rows layout the following is not supported
    • Overdub recording
    • Copying clips to arranger
    • Copying audio clips between different tracks

Design considerations

  • This feature does not change any existing behavior
  • Currently there are no track colors because they don't exist as a concept right now and there is a limited amount of colors available while tracks can be endless. This can be improved in the future
  • There is currently no vertical grid mode because we have an architectually fixed number of 12 sections. Increasing section count involves figuring out how to display the difference of arbitrary section counts. Until this is figured out showing 12 sections with 16 pads feels a little weird
  • Sections are currently on the left sidebar column because the data itself (the clips) should not be shown in the sidebar and having the column with the sections on the right similar to the rows mode would separate the data from the visual clues about it and make the left column of the sidebar unusable. This way we can use the right column for other things in the future like displaying launch quantization in bars count

@weavermedia

Copy link
Copy Markdown
Contributor

Excellent! Maybe mention in the integration notes that each clip will be represented by a single pad? For those unfamiliar with this style of launching.

A few questions:

  • Will we be able to record from this view into the Arrange view, as we do with current Song view?
  • How do you define "the next measure"? Is that per clip or per all playing clips (how it currently works)?
  • Can you elaborate more on the the last point (holding clip pad + pressing another clip pad)?
  • What happens if I hold a clip pad and press an empty pad?

@m-m-adams

Copy link
Copy Markdown
Collaborator

Ooo nice. I want to add support for the Launchpad session mode too, it'll be way easier for me if you do the hard parts first!

@jantuitman

Copy link
Copy Markdown

It would be nice to add some thoughts about how this integrates with the existing workflows, e.g. arranger and the color groups in the deluge. for example vertical view: is the first row blue, the second row pink, ... and so on... corresponding with clip colors in the arranger? Will white clips of the arranger appear at the bottom / at the top? if i clone a clip inside the same column, will it become a white clip or a colored clip in the next group? so many questions.

@PaulFreund PaulFreund changed the title [Draft/RFC] Display clips in a grid in song (session) view (Ableton style) [Draft/RFC] Display clips in a grid in song (session) view - Possibly Song layout API Jul 30, 2023
@PaulFreund

Copy link
Copy Markdown
Collaborator Author

Unfortunately the high level PR comments are not threaded so I'll answer one by one:

@weavermedia :

  1. Yes
  2. In this commit I will probably not change the clip launch quantization but I might add options in the future
  3. Idea is to make a copy of an empty instrument clip of the type in the instrument row/column and copy the notes from the first pressed pad but I need to investigate if this is easily possible
  4. If the instrument row/column is empty I think a new instrument is added with the existing logic

@m-m-adams :
Can you elaborate a little bit on how this will work? I can design it directly to accomodate the requirements

@jantuitman:
The idea is that the behavior does not change from the current song/session (row) mode, only displaying is different. I want to reuse the same colors but the white clips are IIRC currently not available in the session at all. Copying will make it a colored clip. Of course this is all not yet set in stone since I first need to understand how and why it works currently

@m-m-adams

Copy link
Copy Markdown
Collaborator

Same thing you're doing basically but controlled by midi from the Launchpad's 8x8 grid instead of the built in pads. The Launchpad's session mode is an API where the host application sends it a list of clips that exist, their playing state, colours, and column/row position. The Launchpad can then send a message to launch the clip or play once.

@PaulFreund

Copy link
Copy Markdown
Collaborator Author

Quick comment for those watching, I had to cut the scope a little bit. As a first implementation I will concentrate on "classic" instruments as columns without an API layer in between.

@PaulFreund PaulFreund changed the title [Draft/RFC] Display clips in a grid in song (session) view - Possibly Song layout API [Draft] Display clips in a grid in song (session) view Jul 31, 2023
@PaulFreund

Copy link
Copy Markdown
Collaborator Author

I'm ready again, @trappar fixed all your comments in scope and improved Track scrolling behavior.

I'm using the same function as arranger to scroll through presets so it can crash with #320 same as current community head. I will try to resolve #320 in paralell so this PR can be merged regardless

Any further reviews and testing are appreciated :)

@PaulFreund
PaulFreund marked this pull request as ready for review August 8, 2023 12:08
@sichtbeton

Copy link
Copy Markdown
Contributor

a couple of points:

  • when legato switching sections with "catch notes" to off: notes get cut off with a slightly longer release

  • how do you add more then the 12 sections?

  • having a switch to unlight the sections at the beginning would be nice (and less confusing but probably not possible as you said already)

  • when in normal "row mode" there is a color that a track has (or a gradient). before I would use this color to differentiate what the track actually holds (green for drums, red for bass, etc). would it be possible to map these colors / gradients onto the columns in the grid for each track? this way you dont have to invent a new color scheme / mechanism and people can follow whats going on much more instantly (I guess)

additional:

  • adding a new clip with "clip" + pad is fine, but the deluge way until now is "kit" / "synth" / etc + pad / row. why not duplicate this behaviour and get people accustomed to the grid much faster?
  • entering a clip with "clip" + pad works but its not handy like in the row model, why not use the rightmost audition pads for this: any audition pad + pad enters a clip?
  • there is no way to tell when a clip repeats. would it be sensible to flash each clip when it restarts briefly?

I guess the track column color and the section not being visible are the items that confuse me mostly because its a lot of visual onslaught on the one hand (sections) and the other one not much info at all (all green).

but all in all: this is a huge step forward. love it!

@trappar

trappar commented Aug 9, 2023

Copy link
Copy Markdown
Contributor

Just retested everything and everything I pointed out before seems to be working great now. One minor thing about my prior feedback:

When I said this before:

Holding the pad for a clip and then using the select knob to change to a different instrument feels hard to grok.

I see that you fixed this by having it change the entire column's clips to the new instrument. When I wrote that the solution I had in mind was just making it so that if you scrolled to a different preset it would immediately jump the clip to a new/different instrument column rather than make you wait until you let go of the pad. I think your solution is probably better. The only case where it isn't better is if you just want to move a single clip to a different instrument. In that case I suppose you'd have to:

  1. Clip + pad on empty instrument row to create new empty clip
  2. Hold the new clip's pad and select the target instrument
  3. Hold the original clip and then press a new clip pad in the new instrument column
  4. Delete the blank clip in the new instrument column
  5. Delete the clip from the original instrument's column

This one case seems pretty annoying but I'm struggling to think of a better solution. Hard to imagine any simple UX that would let you have it both ways.

New feedback:

  1. Automation is not copied when copying a clip to a new track.
  2. Switching a grid column's synth preset causes the loss of automation, but it's curiously recoverable if you switch back to the preset where it was recorded.
  3. This PR's UX choice for changing between different views (song + select) is consistent with changing keyboard layouts, but is inconsistent with switching to arrange as well as the automation PR's method (clip button toggles functionality when already in clip mode). I wonder it's a wise choice to be adopting different patterns between these different features.

@PaulFreund

Copy link
Copy Markdown
Collaborator Author

Just retested everything and everything I pointed out before seems to be working great now. One minor thing about my prior feedback:

Happy to hear!

When I said this before:

Holding the pad for a clip and then using the select knob to change to a different instrument feels hard to grok.

I see that you fixed this by having it change the entire column's clips to the new instrument. When I wrote that the solution I had in mind was just making it so that if you scrolled to a different preset it would immediately jump the clip to a new/different instrument column rather than make you wait until you let go of the pad. I think your solution is probably better. The only case where it isn't better is if you just want to move a single clip to a different instrument. In that case I suppose you'd have to:

  1. Clip + pad on empty instrument row to create new empty clip
  2. Hold the new clip's pad and select the target instrument
  3. Hold the original clip and then press a new clip pad in the new instrument column
  4. Delete the blank clip in the new instrument column
  5. Delete the clip from the original instrument's column

This one case seems pretty annoying but I'm struggling to think of a better solution. Hard to imagine any simple UX that would let you have it both ways.

Yes this is a tradeof but more consistent with the arranger mode. To make it a little quicker you can:

  1. Hold the original clip and then press a new clip pad in an empty column
  2. Hold the target clip and change preset
  3. Delete the original clip in the original column

New feedback:

  1. Automation is not copied when copying a clip to a new track.

Out of scope, this is consistent with current behavior and I think would require a lot of additional work

  1. Switching a grid column's synth preset causes the loss of automation, but it's curiously recoverable if you switch back to the preset where it was recorded.

Out of scope, this is consistent with current behavior, I think it is restored because the old instrument is hibernated

  1. This PR's UX choice for changing between different views (song + select) is consistent with changing keyboard layouts, but is inconsistent with switching to arrange as well as the automation PR's method (clip button toggles functionality when already in clip mode). I wonder it's a wise choice to be adopting different patterns between these different features.

I discussed this with Sean and we agreed to implement it differently (I proposed to use Clip+Selection Scroll). The reason it is different is because Mode+Scroll changes the representation of the data while Mode only (double) changes what data you see, Automation is not stored in the steps. Without the scroll UX it would be impossible to add more layouts (Keyboard already has 3 now).

Thank you again for your feedback! :)

@sichtbeton

Copy link
Copy Markdown
Contributor

a couple of points:

  • when legato switching sections with "catch notes" to off: notes get cut off with a slightly longer release
  • how do you add more then the 12 sections?
  • having a switch to unlight the sections at the beginning would be nice (and less confusing but probably not possible as you said already)
  • when in normal "row mode" there is a color that a track has (or a gradient). before I would use this color to differentiate what the track actually holds (green for drums, red for bass, etc). would it be possible to map these colors / gradients onto the columns in the grid for each track? this way you dont have to invent a new color scheme / mechanism and people can follow whats going on much more instantly (I guess)

additional:

  • adding a new clip with "clip" + pad is fine, but the deluge way until now is "kit" / "synth" / etc + pad / row. why not duplicate this behaviour and get people accustomed to the grid much faster?
  • entering a clip with "clip" + pad works but its not handy like in the row model, why not use the rightmost audition pads for this: any audition pad + pad enters a clip?
  • there is no way to tell when a clip repeats. would it be sensible to flash each clip when it restarts briefly?

I guess the track column color and the section not being visible are the items that confuse me mostly because its a lot of visual onslaught on the one hand (sections) and the other one not much info at all (all green).

but all in all: this is a huge step forward. love it!

Any thoughts on the track color suggestion? Or is this out of scope?

@PaulFreund

Copy link
Copy Markdown
Collaborator Author

Any thoughts on the track color suggestion? Or is this out of scope?

All valid points for future improvements (this is not the be all and end all for this feature) but out of scope for this PR. I want to prove it's stability before touching even more of the codebase and I definitely need some time to play with it myself before seeing the rough edges.

@sichtbeton

Copy link
Copy Markdown
Contributor

Any thoughts on the track color suggestion? Or is this out of scope?

All valid points for future improvements (this is not the be all and end all for this feature) but out of scope for this PR. I want to prove it's stability before touching even more of the codebase and I definitely need some time to play with it myself before seeing the rough edges.

reasonable! thank your for grinding it out here. really pushing the del forward.

@PaulFreund

Copy link
Copy Markdown
Collaborator Author

Tested with #330 fix and after fixing a masked error for copying clips to new MIDI/CV lanes was not able to reproduce any crashes. PR should be ready

@PaulFreund PaulFreund added enhancement New feature or request and removed Code Review wanted labels Aug 9, 2023
@PaulFreund

Copy link
Copy Markdown
Collaborator Author

Retested after merge including #330 everything seems fine :)

@jamiefaye if you agree I'm ready to merge before I get a bunch of additional merge conflicts. Bob did a review and the feature code paths are only executed if layout is selected.

@jamiefaye
jamiefaye added this pull request to the merge queue Aug 10, 2023
Merged via the queue into SynthstromAudible:community with commit f5ffa40 Aug 10, 2023
@wtkdwc

wtkdwc commented Aug 21, 2023

Copy link
Copy Markdown

Hi, great feature, waiting for sth like this for so long, thx.) Noticed when using this view on older projects, after launching several clips, some stop showing their running state as green - button stays white but clip plays, making the orientation harder. Also for launching it registers only one press at time, usually i would like to press multiple at once.

@hoergen

hoergen commented Sep 5, 2023

Copy link
Copy Markdown

Thank you so much for this long wished feature.

There was an idea on sequencer.de to make the parallel start and stop of clips possible

  • by moving the current "copy clip" function with holding down the source pad and pressing the target pad
  • to e.g. additional holding down the LEARN button, then source pad and then target pad

Could this be a viable option?

@PaulFreund

Copy link
Copy Markdown
Collaborator Author

Hi @hoergen, thank you for the feedback! I'm currently working on an update to the Grid mode that will allow multiple launches at the same time #500

@PaulFreund

PaulFreund commented Sep 7, 2023

Copy link
Copy Markdown
Collaborator Author

My changes in #500 (see link for documentation) are done and I'm waiting for review but it can already be tested with https://github.com/SynthstromAudible/DelugeFirmware/suites/15926875758/artifacts/909121509 :) I will update again once it goes into nightly

@PaulFreund

Copy link
Copy Markdown
Collaborator Author

@hoergen this feature is now in nightly, you can find the new documentation here https://github.com/SynthstromAudible/DelugeFirmware/blob/release/1.0/docs/community_features.md?plain=1#L74 :)

@fbhadha

fbhadha commented Sep 21, 2023

Copy link
Copy Markdown

Hi!
I would the ability to move the "rows" around by pressing any clip and using the <> knob. The Thick lines on the panel offer some great organization abilities (drums in first 4, leads in next 4, etc) organically, sometimes you find something after the fact.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.