I feel like the interface should be more user friendly and time based
like
const video = new CoolVideo()
// add sync "in a flow"
video.add(new ColorClip("Image", {seconds : 10}))
video.add(new Audio(...))
// add async
video.add(new Image("./path/to/image", {
async: {
at : 70 // seconds
},
}))
something like that