Roadmap

Etro has several epics planned for the next phase of development. These will most likely continue for multiple minor releases. If any of them interest you, feel free to contribute!

Offline Rendering

Offline recording with ffmpeg.js is the focus right now. This will get rid of frame drops in the render, and it should also improve render speed.

Audio System

A new audio system, with more audio layers and the introduction of audio effects is close to being done. It will provide a built-in API to manipulate audio.

Some of the highlights:

Example custom effect (API may change):

class Effect extends etro.effect.Audio {
  attach (target) {
    // Create any intermediary node
    this.node = target.movie.actx.createGain()
    this.node.volume.value = 2
    // `inputNode` and `outputNode` are populated by the target (they will
    // point to audio nodes of the target, the next/previous effect or
    // movie.actx)
    this.inputNode.connect(node)
    this.node.connect(this.outputNode)
  }

  detach() {
    this.inputNode.disconnect()
    this.node.disconnect()
  }
}

Layer Inheritance

A new group layer will be introduced. A group layer will have both audio and visual support, along with multiple children. Then, you will be able to apply an effect to a group of layers.

Transitions

A transition system is also on its way! You will be able to attach any built-in or custom transition to two layers. The transition will then interpolate the audio and/or visual output of both layers. It will look something like this:

transition.addTo(layer1, layer2)

Better Node Support

We are currently working on a etro-node rewrite with a focus on better usability. Our goal is to make the API virtually identical to etro's API. More details coming soon!

3D System

Although still in early planning, we could use three.js to add a 3D mode to movies, where every visual and audio layer has a 3D position. Alternatively, we could get rid of the concept of a "3D movie" and allow both 2D and 3D layers to be added to any movie. Feel free to post on the GitHub discussion if you have any ideas!

Other

Other planned changes:

If you would like to make a feature request, please open an issue on GitHub!