UI FORGE.ORIGINAL EFFECTS
REACT + TYPESCRIPT
VIDEO / THE ORIGINAL RENDERER

ASCII Waves.

Source colors, a living character field, and the accepted Fine settings. Choose Original, Fine or Dense; move your pointer and pause the wave.

FIELD STUDY / 001LOOP30 · FINE ASCIILOADING
Preparing the character field

Loading LOOP30 clip…

LOOP301920 × 1080 / FULL COLOR / WEBGL2
Your file stays in this browser. The approved loop is used when provisioned.

Use the original renderer.

Copy both TypeScript files together. Create a canvas and a local or CORS-enabled video element. Dispose the renderer when the component unmounts. The source video is provisioned separately; local files stay in your browser.

Explore Digital Wake ↗

03 / CODE & INSTALLATION

Take it from here.

REACT + CSS MODULES

Copy each source file into components/white-journey/original-ascii/. Keep the filenames and their relative imports together. Then use the example below. Use the runtime and file types listed on this effect’s usage notes. The example uses the common @/ import alias; use a relative import if your project has no alias.

In your React component
import { AsciiWavesRenderer, DEFAULT_SETTINGS } from "./renderer";

const renderer = new AsciiWavesRenderer(canvas);
renderer.setSettings({ ...DEFAULT_SETTINGS, cellSize: 12 });
renderer.setVideo(video, true);
// On unmount: renderer.dispose();

The source above powers this preview. Local review build; no published package required.

DISCOVERY NOTE / APPROVED / SOURCE INCLUDED

ASCII Waves in practice.

ASCII Waves is the original Nullworx character renderer: a WebGL2 canvas samples source-colored video, maps it to a glyph atlas and exposes density and pointer controls.

Use it for

  • Creative coding studies that need a source-colored ASCII treatment in the browser.
  • Audio-visual or editorial pages that can provide a rights-cleared video source.
  • Experimental interfaces that benefit from a live character field rather than a static image.

Limits

  • The renderer requires WebGL2; missing support and missing media show explicit fallback states.
  • The source video is not included in the repository and is not a promise of hosted playback.
  • Browser-local file selection stays in the browser; the application has no upload endpoint.

Use the source

  1. 01

    Copy renderer.ts and glyphAtlas.ts together; both files are required for the WebGL2 renderer.

  2. 02

    Create a canvas and a local or CORS-enabled video element, then call setVideo(video, true).

  3. 03

    Provision source media separately and call dispose() when the component unmounts.

Code & media rights

Renderer and glyph atlas code are MIT-licensed. LOOP30 video is not included or redistributed; source-specific hosting rights remain unverified.

Compare the collection