[Addon][WIP] VSE Quick functions - Snaps, Fades, Zoom, Parenting, Titling, Play speed

(snu) #1

I love Blender’s video editor, but it can be slow and awkward to use at times. Thankfully, python is amazing, so I’ve been writing this script to make editing quicker and easier.

You can download the script from my website at: http://www.snuq.com/scripts/vseqf
Or from the file attached to this post.

QuickTitling has been split off into it’s own script, find it at:

New video for the latest version of the script!

Check out the documentation at: https://wiki.blender.org/index.php/User:Snu/Extensions:2.6/Py/Scripts/Sequencer/VSEQuickFunctions

I am still adding features to this script, if you have any suggestions feel free to post them.

Also if more experienced coders have any suggestions on how to improve the code or how to fix any of the bugs I’ve been struggling with, I would very much appreciate it.

Known Bugs:
Ripple editing -
Dragging left edge of a strip doesn’t move it and other strips - unfortunately this might not be able to fix due to the way the grab operator works
Dragging edges of multiple strips will only move strips after the active one. This is also limited by the grab operator issue above.
Proxy building progress bar is not shown for some reason…
Copy/paste a parent/child pair does not update parent relationships
Other strips can ‘push’ a child strip up or down in channels

Work On Quick Batch Render - needs testing, still crashes sometimes
Implement QuickOrganizer -
Optimize Channels - move all clips down as far as possible, place video below audio
Consolidate Selected - Move all selected strips to one area
Auto-Set Timeline - move strips up to frame 1, set timeline start to frame 1, set timeline end to last frame of last strip
Improve QuickRipple -
ripple delete multiple clips with one not deleted in the middle causes issues
If possible, implement sequence moving (strips auto-adjusted when strip is ‘popped’ out of the sequence, or dropped in)
Reimplement cursor following if it is possible to determine zoom level of the sequencer area
This could allow for overlay details or functions as well such as fades, displaying the current zoom window size in minutes/seconds,
Also this could allow for remembering previous zoom, and returning to it

Features that this script includes:

QuickContinuous -
Setting can be found in the sequence editor ‘View’ menu.
When Quickcontinuous is enabled, it will constantly run and detect sequence
editing events, and adjust sequences as needed.

QuickFades -
Enables one-click adding of a fade in or fade out, or crossfading to other strips.
Can be found in the sequence editor properties panel, or by pressing the
‘f’ key over the sequencer.

QuickSnaps -
A menu for extra cursor and strip snapping functions.
Can be found in the sequence editor ‘Strip’ menu, or by pressing the ‘s’ key over the sequencer.

QuickZooms -
A menu with zoom shortcuts.
Can be found in the sequence editor ‘View’ menu, or by pressing the ‘z’ key over the sequencer.

QuickParents -
This implements a parenting system for sequences, working with QuickContinuous by finding any children of a moved or cut sequence and performing the same operation on them. If the sequence is cut, any children under the cursor will be cut as well, and the script will duplicate parent/child relationships to the cut sequences. If the parent sequence is resized and a child sequences have the same endpoints, they will be resized as well. Note that any relationships will be broken if a sequence is renamed!
Can be found in the sequence editor properties panel under “Edit Strip”, or by pressing the ‘Ctrl-p’ key over the sequencer. Children or Parents of selected sequence will be shown in these two places.

QuickList -
Displays a list of loaded sequences and allows you to change various settings.
Can be found in the sequence editor properties panel.

QuickProxy -
Automatically sets proxies for imported strips, and optionally can generate them automatically as well.
All settings for QuickProxy are found in the QuickContinuous Settings menu. Note that QuickProxy requires QuickContinuous to be enabled to function.

QuickMarkers -
Add markers to the timeline using name presets, or quickly jump to and remove any marker. Can be found in the sequence editor properties panel under ‘QuickMarkers’, also Alt-M in the sequencer.

QuickRipple -
When enabled, this will automatically move all clips following the active clip when the active clip is deleted, or the ending point is changed. Can be found in the sequence editor view menu under QuickContinuous Settings, ‘Ripple Editing Mode’. Currently, adjusting the start point has no effect due to the way the grab operator works. QuickRipple features require QuickContinuous to be enabled to function.

Render sequences in the timeline to individual files and automatically create a new copy of the current scene with these strips replaced with the rendered versions. Effects and unprocessed strips will still be in copied scene and unaffected.
Can be found in the sequence editor properties panel.

Create tags, text snippets that can describe sequences, and apply them to any sequences in the timeline. All sequences with a specific tag can be easily selected with one click.

Provides a quick interface for basic and advanced cutting and trimming functions.


VSEQuickFunctions_0_92.zip (31.6 KB)

(raziel_henzo) #2

Video?? Please!

(RoN43) #3
  • for video

(snu) #4

Planning on a video actually! I’ll try to get it done tomorrow, also I’ll be adding the quick list feature if possible

(snu) #5

I added a simple video showing the different features of the script and where they can be found. Also, I have added Quicklist, which still needs some work (its really ugly).

(thomas56) #6

I’m so gratefull for what you have done. I combine few add-ons like VSE transform tool and extra tools to have a powerful VSE. And I have to say that it works fine. My prefer goes to titling that it was missing in Blender for long time. (Sorry to my english!)

(thomas56) #7

I found a little bug when I change color after apply a mask. >> Line 759
Type error is BPY_struct : item.attr = val: enum “RGBA” not found in (‘BW’ , ‘RGB’)

I think That could be fixed with advance developper. I’m sure you can!

(snu) #8

What do you mean apply a mask?
This is in the function that creates the title, I don’t understand how you can apply a mask before it is created, can you give me the steps you did to get this error?

(thomas56) #9

Ok, So I will explain a little bit more.
I put a strip in the sequencer. I add a title with your add on. I chose a color with a texture for the title. I go to the tracker to create a mask. I apply the mask in the modifier of the strip. Then I change the color of the title. And all the strips disapear. I have the error messager I rewrite.

(3pointEdit) #10

Well this looks very interesting. How does the strip parenting work, do you build a list of parented strips?

I think that you could safely assume that video/audio strips (imported as a movie strips) should be automatically parented.

Can you briefly change the colour of the active strip during the snapping process to show when snapping is occurring? Sometimes you try to snap to a spot surrounded by other strip cuts, visual feedback helps.

Can you quick zoom during snapping to confirm you are hitting the right edit point?

Can you snap to any strip above or below the currently occupied channel? Often you cannot see the audio strip you want to snap too.

(blendercomp) #11

OMFG! :slight_smile:
Need I say more???

(snu) #12

The parenting is done using a custom property in the scene, ‘parenting’. It’s an unfortunate way of doing it, since renaming a strip breaks the relationships, and the script periodically has to check for missing relations. Ideally, I would like to create a ‘parent’ property on the clip itself, but there’s no way of doing that unfortunately :\

In fact in general, blender’s python support for the sequencer is a bit lacking - for instance there seems to be no way of determining the current zoom level or what area of the timeline is visible. I have ideas for an auto-zoom function that would zoom in on operations like a cut or snap, but without some additions to the code I think it’s impossible.

I would love some kind of visual feedback of if a strip can be snapped or not, but right now its difficult to even determine if a strip is currently being moved, I’ll look into the possibility of it, but the only way might be adding a temporary modifier clip above it.

Snapping out of the channel is certainly possible, I need to refine the ‘find next clip’ and ‘find previous clip’ functions a bit before that is automatic tho, so for now I decided to restrict it to the same channel to prevent unexpected behavior.

Ill look into auto-parenting audio to video for a movie strip, good suggestion.

Also, if there actually IS a way of determining the current view of the sequencer and someone can point me to it, that would be amazing!

(snu) #13

Im sorry, I can’t seem to reproduce this, I added a mask to the title then changed the color and it worked fine, I think I’m missing one of your steps… is changing the diffuse color of the material like in the top left of this screenshot what you are talking about? I’m not getting any errors from anything here.

(3pointEdit) #14

Could the clip list look compact like the outliner? It would be neat to select and sort or mute strIps without lots of scrolling.

Even in the current version could you sort strips by shuffling the order of the list view? I guess It would be a remote copy paste/insert function.

(thomas56) #15

Thank you for your review. It occurs when I put on the “create title scene” button. I recreate a title scene after delete a title and the title scene.
It just changes the scene. and no title is create with the error message.

Surely you have the line number where the problem is.
It occured a second time.

(3pointEdit) #16

Also I tried to animate the title’s movement across the screen but the x,y co-ords don’t appear in curve editor nor do they refresh the preview when scrubbing.

(snu) #17

I’ve done a bit of updating to the script (now v0.86). I think thomas56’s error was due to the render format of the title scene not being a format capable of transparency - thomas was your main scene set to jpeg output? The script now sets the file format for created title scenes so it should be fixed.

I also fixed a bit of a bug with scenes that had no sequence editor throwing an error.

You can’t animate it based on the values in the panel since those values aren’t immediately applied, and im not even sure where it stores those keyframes… to animate a title you’ll have to add a transform effect or edit the text in the scene itself.

Thanks to 3pointEdit’s suggestion, I’ve added auto-parenting for imported movie clips that include sound, should work with multiple imported clips as well.

I also cleaned up the quicklist a bit, made it as small as I could. Meta strips now list subclips, and effects that are applied to a clip will show up indented under the clip in the list. There’s also now visual feedback of which sorting method you are using.

(3pointEdit) #18

I have to say that’s just amazing. Thank you so very much.

I realise that the vse doesn’t have great python support, did you encounter any other issues? How does coding for vse differ from other tools in blender?

Have you used the other vse addons?

(Koumis) #19

wow this looks realy good, and should come standard with blender. But what would really make blender much more like other video editors, would be the ability to doubble click on a clip and see the whole video, adjust in and out points and it automaticaly updates. An other feature would be the same as your auto fade but with audio.

I am amazed it took you to figure out the parenting, that should of happenede a decade ago!

Well done.

(snu) #20

Koumis: I agree that parenting in the sequence editor is WAY overdue, but I’m hoping that a blender dev will implement this in the C code so its a bit less hackish…
The fade in/out should work with audio clips as well, tho there is no way to add crossfades to audio clips (blender limitation).

As for the limitations of python in the sequence editor, the biggest thing that frustrated me was not being able to set a custom property (or variable) directly to a sequence, as is possible with other things in blender like objects or scenes. This prevented me from just making a ‘parent’ property on the sequences which would mimic the parenting of other objects in blender.
The lack of control over the view window is frustrating too, to zoom to a specific area I actually had to create a temporary clip, zoom to that clip, then delete it!

I very much love the extra sequencer actions script, and it was something of an inspiration for the work I did on this script, and aside from implementing my own fades operator (I wanted more features), my script was intended to work along side that one.

3pointEdit: how would you suggest integrating all these tools into a cohesive ui? I’ve given the ui of my script quite a bit of thought and revamped it a few times prior to its release, and I’d love to make it more streamlined.