Saturday, December 28, 2013

Multitrack Timeline

The new multitrack timeline is available as of version 13.12.28.
screenshot of Shotcut timeline v13.12.28

Please keep in mind that this is the first release of this feature. Most Shotcut development is done in the open, and this is not yet considered a ready feature. Still, it can be used to some degree of success if not expecting too much and being careful of some rough edges. Here is a quick list of what we have today:
  • works on all platforms
  • the player/viewer now is now tabbed: Clip, Playlist, or Timeline
  • multiple tracks - audio only (green) or audio/video (blue) tracks
  • adjustable track height
  • menu and toolbar at the top left
  • ruler strip at the top with timecode
  • playhead
  • track headers at the left
  • tracks are named using a standard V2, V1, A1, A2, ... convention
  • tracks can be renamed
  • track headers have toggle buttons for mute, hide, and composite
  • right-click [C] button in track header to more easily understand and access composite option
  • zoom slider at bottom, left
  • zoom using keyboard shortcuts 0 (reset), - (zoom out),. and = (zoom in)
  • notion of a current track with background tinted yellow
  • change current track by clicking header, track background, or up/down cursor keys
  • track scrolling - manually or automatically while playing
  • scrubbing
    • click on ruler or track background to seek to that point
    • drag on ruler or track background to scrub
    • hold down shift to scrub without having to drag (scim)
    • scrubbing at left & right edges automatically scrolls as-needed
  • thumbnails of in and out points of video with caching to storage between sessions
  • audio "waveforms" (technically, they are a graph of the audio level across all channels) with caching
  • notion of a selected clip, which is darkened
  • selecting a clip shows its filters in the filters panel
  • use menu at top left has to add an audio or video track
  • use menu at top left to close the timeline - both project and panel
  • all non-muted tracks mix audio
  • all non-hidden tracks can composite against a black background
  • append a clip to the current track via:
    • click + button,
    • press C key when timeline has focus
    • drag-n-drop from player or playlist (currently broken on Windows and OS X)
  • move a clip using drag-n-drop
  • trim clip in point by dragging its left edge (does not ripple)
  • trim clip out point by dragging its right edge (does not ripple)
  • snapping to edges of other clips and to the playhead
    (hold Alt key to temporarily suspend snapping while dragging)
  • lift a clip: remove it without affecting position of other clips
    • select it and click - button
    • select it and press backspace, delete, or Z key
    • right-click it and choose Lift from context menu
  • remove a clip and the space it occupies causing all following clips on timeline to "ripple" to the left
    • select it and shift+backspace or shift+delete
    • select it and press X key
    • right-click it and choose Remove from context menu
  • remove the gap between clips: right-click and choose Remove from context menu
  • undo/redo integration
  • project/document integration - current project reflected in title bar, modified indicator and prompting to save a modified project before closing
  • saves as MLT XML
  • can be encoded

Not Done

  • inserting tracks between existing tracks
  • removing tracks
  • transitions
  • on-clip fader bars for audio and video levels
  • filter parameter key-framing
  • (done) insert and overwrite edits
  • fancy editing modes like ripple, slip, slide, roll
  • (done) splitting and joining clips
  • detach audio from video
  • locking tracks
  • multi-select clips
  • cut/copy/paste
  • (done) saving what is in the playlist when saving a multitrack project (When done, this will make the playlist like the "bin" in other programs.)
  • undo/redo integration for filters
  • dragging to trim should interactively crop the audio waveform (It is, however, cropped and redraw when released.)

Known Problems

  • (fixed) does not work with GPU processing
  • (fixed) menus appear at wrong location in window on OS X
  • (fixed) drag-n-drop from clip viewer or playlist only works on Linux
  • (fixed) moving a clip causes some waveforms to disappear
  • (improved) sometimes undo/redo causes timeline corruption
  • sometimes thumbnails have incorrect aspect ratio
  • (fixed) You cannot dock ("put into a tab") the timeline with any other panels. In other words, do not try to stack the Filters panel along with the Timeline panel to switch between them using tabs. That does not work. If you accidentally do this, first un-tab everything so timeline is by itself. Then, using the View menu at the top, toggle the display of the timeline to hide and then show it. You can, however, place another panel at the bottom of the window around one of the edges of the timeline. For example, you can place the history view left of the timeline. We suggest docking the Filters panel in a tab at the top, left of the window along with Properties, Recent, and Playlist.

For the Technically Curious

We tried to implement this using MLT and Qt as much as possible with the least amount of new code and redundant state as possible. Meaning, it uses MLT objects for the document object model and its API to manipulate it. Then, we use the Qt model/view framework to add a non-stateful hierarchical Qt model wrapper/adapter for the MLT objects. This is then exposed in a QML-based timeline view that uses Quick Repeater elements with its support for data models and data binding. As like the QML filter UIs, the QML code for the timeline is loaded from the filesystem instead of resources embedded into the binary executable to facilitate customization, tinkering, and contribution. However, the Shotcut C++ APIs it uses are not yet documented, and Shotcut does not provide a QML/JS console or object inspector as found in some web browsers.