Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

join

Transform and concatenate two Video or Audio timelines in a body.

Call shape

join<T: Video | Audio>(before: T, after: T) { ... } -> T

This is call-shape notation for lookup, not ClipAsm declaration syntax.

Graph inputs

NameTypeCardinality
beforeTexactly one
afterTexactly one

Parameters and defaults

This program has no scalar parameters.

Result and stack behavior

Outputs: T.

All T inputs and outputs use one homogeneous type: Video or Audio. Use an explicit <Video> or <Audio> argument when the accessible stack makes inference ambiguous.

Default stack access is visible. See stack binding for ownership and visibility rules.

Body

The body begins with:

  • T from the complete before input
  • T from the complete after input

The body must leave at least 1 homogeneous T value.

Timeline and markers

The program starts the body with before and after. It joins the matching values left by the body.

Example

clipasm 1

config {
    video {
        fps = 30
    }
}

image("assets/before.png", 1s)
image("assets/after.png", 1s)
join {
    zoom_in(4%)
}

Expected validation result: Video with exactly 60 project frames at the example’s explicit fps = 30.

The reference checks parse and compile this exact example. Compilation does not inspect the named media files.

Behavior

  • The body starts with before followed by after.
  • The body exposes the inputs as the lexical $before and $after references.
  • ClipAsm concatenates each homogeneous value from the body into one output timeline.
  • Named values created by the body remain addressable as placements in the result.

Requirements

  • The body must leave at least one value of the selected homogeneous Video or Audio type.

Common diagnostics

These are the diagnostics most specific to this program.

See also