- Remove legacy_tasks.py, hybrid_state.py, render.py - Remove old task modules (analyze, execute, execute_sexp, orchestrate) - Add streaming interpreter from test repo - Add sexp_effects with primitives and video effects - Add streaming Celery task with CID-based asset resolution - Support both CID and friendly name references for assets - Add .dockerignore to prevent local clones from conflicting Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
53 lines
2.5 KiB
Common Lisp
53 lines
2.5 KiB
Common Lisp
;; ASCII Art FX - converts image to ASCII characters with per-character effects
|
|
(require-primitives "ascii")
|
|
|
|
(define-effect ascii_art_fx
|
|
:params (
|
|
;; Basic parameters
|
|
(char_size :type int :default 8 :range [4 32]
|
|
:desc "Size of each character cell in pixels")
|
|
(alphabet :type string :default "standard"
|
|
:desc "Character set to use")
|
|
(color_mode :type string :default "color"
|
|
:choices [color mono invert]
|
|
:desc "Color mode: color, mono, invert, or any color name/hex")
|
|
(background_color :type string :default "black"
|
|
:desc "Background color name or hex value")
|
|
(invert_colors :type int :default 0 :range [0 1]
|
|
:desc "Swap foreground and background colors (0/1)")
|
|
(contrast :type float :default 1.5 :range [1 3]
|
|
:desc "Character selection contrast")
|
|
|
|
;; Per-character effects
|
|
(char_jitter :type float :default 0 :range [0 20]
|
|
:desc "Position jitter amount in pixels")
|
|
(char_scale :type float :default 1.0 :range [0.5 2.0]
|
|
:desc "Character scale factor")
|
|
(char_rotation :type float :default 0 :range [0 180]
|
|
:desc "Rotation amount in degrees")
|
|
(char_hue_shift :type float :default 0 :range [0 360]
|
|
:desc "Hue shift in degrees")
|
|
|
|
;; Modulation sources
|
|
(jitter_source :type string :default "none"
|
|
:choices [none luminance inv_luminance saturation position_x position_y position_diag random center_dist]
|
|
:desc "What drives jitter modulation")
|
|
(scale_source :type string :default "none"
|
|
:choices [none luminance inv_luminance saturation position_x position_y position_diag random center_dist]
|
|
:desc "What drives scale modulation")
|
|
(rotation_source :type string :default "none"
|
|
:choices [none luminance inv_luminance saturation position_x position_y position_diag random center_dist]
|
|
:desc "What drives rotation modulation")
|
|
(hue_source :type string :default "none"
|
|
:choices [none luminance inv_luminance saturation position_x position_y position_diag random center_dist]
|
|
:desc "What drives hue shift modulation")
|
|
)
|
|
(let* ((sample (cell-sample frame char_size))
|
|
(colors (nth sample 0))
|
|
(luminances (nth sample 1))
|
|
(chars (luminance-to-chars luminances alphabet contrast)))
|
|
(render-char-grid-fx frame chars colors luminances char_size
|
|
color_mode background_color invert_colors
|
|
char_jitter char_scale char_rotation char_hue_shift
|
|
jitter_source scale_source rotation_source hue_source)))
|