[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 github at: https://github.com/snuq/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 version 0.9.3:

Check out the documentation on GitHub

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:

  • Sometimes undo pushing breaks, it may add extra undo steps. Not sure whats going on here…
  • Uncut does not work on movieclip type sequences, this seems to be a limitation in Blender - there appears to be no way to get the sequence’s source file.
  • Canceling a grab while playing back will cause the cursor to jump back to where it was when the grab started. Unfortunately, a bug in Blender prevents me from fixing this.
  • Right now the script cannot apply a vertical zoom level, as far as I can tell this is missing functionality in Blenders python api.

Future Possibilities

These are things I want to add, but I don’t yet know how to do so.

  • Special tags with time index and length, displayed in overlay as clip markers
  • Ripple insert (opposite of ripple pop). Not entirely sure how to code this yet, but I want it!
  • Copy/paste wrapper that will copy sequence animation data.
  • Export to EDL format that Reaper can read.

Features that this script includes:

Ripple Editing

  • Ripple Grab: Grab the sequence, or sequence edges to move all following sequences, preventing extra empty spaces from being added while editing.
  • Ripple Grab Pop: Grab a sequence and ‘pop’ it out of the timeline, leaving no empty space where it was, and allowing it to be placed elsewhere.
  • Ripple Cut: Trim the left or right sides of a sequence off, automatically removing empty space
  • Ripple Delete: Delete a sequence, removing the empty space where it was.

QuickContext

Enables right-click and hold in the sequencer to pop up a context menu allowing for different operations depending on what is clicked on.

QuickThreePoint

Warning: This is very much alpha, it will likely change quite a bit in future versions, and may even be removed and put into another addon.
Implements a new workflow of importing a video to the clip editor, setting in/out points, then dropping that into the timeline.
This can be a very fast workflow for highlight reel style edits.

QuickFades

Enables one-click adding or changing a fade-in or fade-out.
Also enables one-click crossfading between multiple strips.

QuickSnaps

A menu for extra cursor and strip snapping functions.

QuickZooms

A menu with zoom shortcuts, and allowing for saving and loading zoom presets.

QuickParents

This implements a parenting system for sequences, any children of a moved or cut sequence will have the same operations performed 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.

QuickList

Displays a list of loaded sequences and allows you to change various settings.

QuickProxy

Automatically sets proxies for imported strips, and optionally can generate them automatically as well.

QuickMarkers

Add markers to the timeline using name presets, or quickly jump to and remove any marker.

QuickBatchRender

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.

QuickTags

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.

QuickCuts

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

Small VSE Improvements

Many small improvements have been added to the vse, and even some bugs are fixed.

VSEQuickFunctions_0_93.zip (46.0 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’)
titlescene.render.image_setting.color_mode=“RGBA”.

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.

3pointEdit:
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.