Hello! My name is John Swenson, and over the summer I’ll be working on various improvements to the video sequencer, including linked strips, preview snapping, and more.
This week I started on the patch for snapping in the preview, since Aras and I agreed that it’s the least ambiguous feature with respect to UI issues and so would be good to tackle first (still need to figure out a clear design for active channels, which can come later). So far I have UI done, and I’m currently drafting changes to the internals in as simple a manner as possible.
Also submitted a fix for preview overlay polling, which makes it more obvious that preview overlays are disabled for different display types and reorganizes the overlay menu a bit (building on Pablo’s changes)
I’ve been continuing work on snapping for the VSE Preview, and made quite a bit of progress.
In the meantime, I’ve been finding and fixing a few bugs related to snapping:
The code is not yet ready for review, since there’s still some bugs with icon drawing (unrelated to the PR) that will have to be fixed. Versioning will also need to be updated and I’ll merge main into the branch once everything is tidied up.
Additionally, there are already a couple operators in VSE that use the term “linked” – bpy.ops.sequencer.select_linked() and bpy.ops.sequencer.select_linked_pick().
I’d like further feedback from people on this point-- could we rename the front-facing names for these operators something like “Select Adjacent” and “Select Adjacent Pick”? As I mention in my feedback thread, the ‘select linked’ operators for VSE don’t operate on any kind of linked data, and only select strips that are directly bordering one another on the same channel, so it’s a bit of a misnomer in this case, IMO.
Here’s a comparison for the handle selection of adjacent strips now, taken from second PR (in both gifs I am clicking rapidly while moving my mouse cursor across. I have “Tweak Handles” turned off in settings to better demonstrate the bug):
Before
After
Also, the consensus is that options to “Link” and “Unlink” strips would clash with the preexisting “link” concept in Blender, so I will be using the terms “Connect” and “Disconnect” strips going forward for that deliverable. GSoC 2024: Sprucing up the Video Sequencer (Feedback) - #44 by fsiddi
That means that you can now once again use the control key to
Select all strips that have the same start and end point
Select all handles at the same time
like so:
This is a little like “connected strips” behavior, but is a keymap-configurable option rather than a strip state. Connected strips won’t require a modifier key, will have an icon, and will support selecting offset strips together (e.g. audio slightly delayed or leading)
Connected Strips Update
Connected strips functionality is proving to be more involved than I expected it to be, since selection is quite complex and I want to make sure that the option works in all possible edge cases.
However, I continue to make steady progress towards completion. Will keep you all updated going forward.
It also means that trying to toggle retiming keys with the tweak tool is fixed now.
Since I intend to build the connected strips PR off of this one, I’ll have to wait for this to land before I can publish connected strips for review. Still WIP at this point:
For now, I’d like some further input on connected strips:
Now that the naming is different, what should the icon be (instead of a link)? (Maybe a question for UI people)
Should menu operators also respect connected strips, e.g. select inverse, select linked, select side/side of frame? Or just tweak/box select tools?
Here’s a couple gifs demonstrating the functionality: Imported strips are connected by default (either via drag+drop or the Add menu). There is an option in the Add menu to turn off connections for newly imported strips.
Strips are disconnected from any existing connections before connecting to new ones.
Connected strips are selected together in the preview just like in the timeline.
Although I was fairly busy with travel for the past month, I’m now in a position to settle down and work longer hours, so hopefully “active channel” functionality will be out by the end of the month.
Added keymap item: Ctrl+Alt+C by default to toggle connecting/disconnecting all selected strips
Added ability to toggle into individual strips by double-clicking, since shift toggle can be unintuitive if you’ve already got a selection
Added ability to modify individual strips within a chain without propagating the selection if you’re explicitly toggling them on (see explanation below)
Note the changed behavior: if you toggle individual strips, the “selection propagation” of connected strips will temporarily disable itself so that you can make whatever adjustments you like.
Then selecting any other strip in the chain re-enables selection propagation. This makes it easier to apply fine-grained control without having to constantly toggle connected strips on/off, and should provide more predictable results.
Moved option to connect strips by default to user preferences, since having it in the Add menu would also change drag+drop behavior, which was unintuitive
Ensure that strips always have bidirectional connections, and if this is not possible, sever them (e.g. when cutting, duplicating):
Ensure connected strips are always added to metastrips together
Ensure fake keys are only generated for connected strips if their timeline frames are aligned
Add support for RCS keymap
Next week I hope to get started on some initial improvements for strip copy/pasting and adding – the start of “active channel” functionality.
This week I made some more changes to connected strips based on feedback:
Removed double-click in favor of alt (option)+click to operate on individual strips.
This means that now you can tweak individual handles with just one click, instead of two clicks as before (double-click in, then move around). This keybind is also closer to industry standard, so it should be more intuitive for people who are used to other programs’ shortcuts.
This should make the VSE more friendly to new users. Now that tools are added to both preview and timeline spaces, having them visible by default should make things clearer.
This week I worked on creating a final write-up for the work I’ve done this summer. I figured it’d be a good opportunity for me to finally figure out how to create a blog/website to host the result so I spent most of the week getting acquainted with Go and Hugo.
Although I fixed way more bugs than I set out to at the start of the summer, I still haven’t tackled the “active channel” functionality that I outlined in my original proposal.
But the end of GSoC 2024 doesn’t mark the end of my contributions and I still intend to continue working on VSE for the foreseeable future. Going forward, I’ll probably post updates on my new site (custom domain pending) or in this thread. Hopefully Blender VSE can be adopted by a much wider audience – that’s my goal.
Thank you to Aras for the incredible work you’ve done for VSE over the summer that’s inspired me to give my 100% and thank you to Ton and Francesco and Sergey and Richard and Pablo and Sebastian and all the rest for maintaining such a forward-thinking, incredible piece of software.