Effects System

ASCII Motion includes a procedural, non-destructive effects system. Effects are timeline-based blocks that process content at render time without modifying source data.

Overview

Info

Effects are non-destructive — they process content at render time and can be toggled, keyframed, and removed at any point. Original canvas data is always preserved.

Info

Looking for GPU effects? Effects operate on ASCII cells (characters and colors). For pixel-level post-processing like blur, glow, and distortion, see Shaders.

The effects system provides eight effects in four categories:

Adjustment

EffectPurpose
LevelsBrightness, contrast, and gamma via input/output range controls
Hue & SaturationHSL color manipulation

Mapping

EffectPurpose
Remap ColorsColor replacement with auto-detection and palette mapping
Remap CharactersCharacter replacement with canvas analysis

Filter

EffectPurpose
ScatterCell displacement with dithering patterns and noise
Motion TrailsScreen-space trailing with configurable colors

Distortion

EffectPurpose
Wave WarpSine wave distortion along horizontal or vertical axis
WiggleGlobal displacement via wave or Perlin noise

Effect Blocks on the Timeline

Effects are added as blocks on the timeline with in/out points:

  • Each effect block has a start frame and duration that define when it's active
  • Drag block edges to adjust timing
  • Multiple effects can stack on a single layer — array order determines processing order
  • Toggle effects on/off with the eye icon without removing them

Application Scope

Effects can be applied at three levels:

ScopeDescription
Per-LayerApplied to a single layer's content before transforms
Per-GroupApplied to a layer group's intermediate composite
GlobalApplied after all layers and groups are composited

Adding Effects

Select a layer, group, or the global effects header in the timeline

Click the + button to add an effect

Choose the effect type from the dropdown

The effect block appears on the timeline — adjust timing by dragging edges

Configure parameters in the effect properties panel

Keyframeable Properties

Every effect parameter can be animated over time:

Expand an effect block in the timeline to reveal its property tracks

Click on a property track at the desired frame to add a keyframe

Set the value and easing curve

Add additional keyframes to animate the property between values

Properties use either numeric interpolation (smooth transitions between values) or hold interpolation (snaps to the most recent keyframe value, used for enums and mappings).

Processing Pipeline

Effects are applied in this order during rendering:

text
Layer Content
  → Apply layer effect tracks (array order)
  → Apply layer transforms (position, scale, rotation)
  → Composite into group
    → Apply group effect tracks
    → Apply group transforms
  → Composite all groups/layers
    → Apply global effect tracks
  → Final output
Warning

Effect processing order matters. Effects higher in the stack are applied first. Drag effect tracks to reorder them.

Baking Effects

To permanently apply an effect's results to the canvas data:

  • Right-click an effect block → Bake Effect
  • Time-dependent effects (Wave Warp, Wiggle) generate per-frame output
  • Content frames are split at effect boundaries as needed
  • This operation is undoable

Effect Reference

Levels

Input/output level adjustments for tonal range. Controls shadows, midtones (gamma), and highlights with output min/max clamping. → Levels

Hue & Saturation

HSL color space manipulation. Shift hue ±180°, adjust saturation and lightness ±100%. → Hue & Saturation

Remap Colors

Visual color replacement with auto-detection. Supports manual mapping, palette-based remapping, and closest/by-index algorithms. → Remap Colors

Remap Characters

Character-for-character replacement with auto-detection from canvas content. → Remap Characters

Scatter

Random cell displacement using four patterns (Noise, Bayer 2×2, Bayer 4×4, Gaussian). Supports deterministic seeding and color blending. → Scatter

Wave Warp

Sine wave distortion along a configurable axis with amplitude, frequency, speed, and phase controls. Time-dependent — output varies with frame. → Wave Warp

Motion Trails

Screen-space trailing effect with configurable trail count, frame delay, and up to 10 per-trail colors. → Motion Trails

Wiggle

Global displacement via horizontal/vertical wave or Perlin noise with independent axis control. Time-dependent. → Wiggle