Files
test/recipe-single-effect.sexp
gilesb 406cc7c0c7 Initial commit: video effects processing system
Add S-expression based video effects pipeline with modular effect
definitions, constructs, and recipe files.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 12:34:45 +00:00

95 lines
4.8 KiB
Common Lisp

;; Single Effect Test - Static Effects
;; Change the effect line to test different effects
(recipe "single-effect-test"
:version "1.0"
:encoding (:codec "libx264" :crf 20 :preset "medium" :audio-codec "aac" :fps 30)
;; Effects
(effect ascii_art :path "sexp_effects/effects/ascii_art.sexp")
(effect ascii_zones :path "sexp_effects/effects/ascii_zones.sexp")
(effect bloom :path "sexp_effects/effects/bloom.sexp")
(effect blur :path "sexp_effects/effects/blur.sexp")
(effect brightness :path "sexp_effects/effects/brightness.sexp")
(effect color-adjust :path "sexp_effects/effects/color-adjust.sexp")
(effect color_cycle :path "sexp_effects/effects/color_cycle.sexp")
(effect contrast :path "sexp_effects/effects/contrast.sexp")
(effect crt :path "sexp_effects/effects/crt.sexp")
(effect datamosh :path "sexp_effects/effects/datamosh.sexp")
(effect echo :path "sexp_effects/effects/echo.sexp")
(effect edge_detect :path "sexp_effects/effects/edge_detect.sexp")
(effect emboss :path "sexp_effects/effects/emboss.sexp")
(effect film_grain :path "sexp_effects/effects/film_grain.sexp")
(effect fisheye :path "sexp_effects/effects/fisheye.sexp")
(effect flip :path "sexp_effects/effects/flip.sexp")
(effect grayscale :path "sexp_effects/effects/grayscale.sexp")
(effect hue_shift :path "sexp_effects/effects/hue_shift.sexp")
(effect invert :path "sexp_effects/effects/invert.sexp")
(effect kaleidoscope :path "sexp_effects/effects/kaleidoscope.sexp")
(effect mirror :path "sexp_effects/effects/mirror.sexp")
(effect neon_glow :path "sexp_effects/effects/neon_glow.sexp")
(effect noise :path "sexp_effects/effects/noise.sexp")
(effect outline :path "sexp_effects/effects/outline.sexp")
(effect pixelate :path "sexp_effects/effects/pixelate.sexp")
(effect pixelsort :path "sexp_effects/effects/pixelsort.sexp")
(effect posterize :path "sexp_effects/effects/posterize.sexp")
(effect rgb_split :path "sexp_effects/effects/rgb_split.sexp")
(effect ripple :path "sexp_effects/effects/ripple.sexp")
(effect rotate :path "sexp_effects/effects/rotate.sexp")
(effect saturation :path "sexp_effects/effects/saturation.sexp")
(effect scanlines :path "sexp_effects/effects/scanlines.sexp")
(effect sepia :path "sexp_effects/effects/sepia.sexp")
(effect sharpen :path "sexp_effects/effects/sharpen.sexp")
(effect strobe :path "sexp_effects/effects/strobe.sexp")
(effect swirl :path "sexp_effects/effects/swirl.sexp")
(effect threshold :path "sexp_effects/effects/threshold.sexp")
(effect tile_grid :path "sexp_effects/effects/tile_grid.sexp")
(effect trails :path "sexp_effects/effects/trails.sexp")
(effect vignette :path "sexp_effects/effects/vignette.sexp")
(effect wave :path "sexp_effects/effects/wave.sexp")
(effect zoom :path "sexp_effects/effects/zoom.sexp")
;; Source
(def video (source :path "monday.webm"))
(def audio (source :path "dizzy.mp3"))
;; 10 second segments
(def clip (-> video (segment :start 0 :duration 10)))
(def audio-clip (-> audio (segment :start 0 :duration 10)))
;; ============================================================
;; CHANGE THE EFFECT LINE BELOW:
;; (effect invert) (effect grayscale) (effect sepia)
;; (effect brightness :amount 30) (effect contrast :amount 1.5)
;; (effect saturation :amount 2.0) (effect hue_shift :degrees 90)
;; (effect color_cycle :speed 2) (effect threshold :level 128)
;; (effect posterize :levels 6) (effect blur :radius 10)
;; (effect sharpen :amount 2) (effect bloom :intensity 0.6 :radius 20)
;; (effect color-adjust :brightness 20 :contrast 1.2)
;; (effect swirl :strength 3) (effect fisheye :strength 0.5)
;; (effect wave :amplitude 30 :wavelength 60)
;; (effect ripple :amplitude 20 :frequency 6)
;; (effect kaleidoscope :segments 6 :rotation_speed 30)
;; (effect zoom :factor 1.2) (effect rotate :angle 15)
;; (effect mirror :direction "horizontal")
;; (effect pixelate :block_size 16)
;; (effect ascii_art :char_size 8 :color_mode "color")
;; (effect ascii_zones :char_size 10)
;; (effect edge_detect :low 50 :high 150)
;; (effect emboss :strength 1.5) (effect outline :thickness 2)
;; (effect neon_glow :glow_radius 20 :glow_intensity 2)
;; (effect crt :line_spacing 3 :vignette_amount 0.3)
;; (effect scanlines :spacing 3 :intensity 0.4)
;; (effect film_grain :intensity 0.25) (effect vignette :strength 0.6)
;; (effect noise :amount 40) (effect rgb_split :offset_x 20)
;; (effect echo :num_echoes 4 :decay 0.5)
;; (effect trails :persistence 0.7) (effect strobe :frequency 4)
;; (effect flip :direction "horizontal")
;; (effect tile_grid :rows 2 :cols 2)
;; (effect pixelsort :threshold_low 30 :threshold_high 220)
;; (effect datamosh :corruption 0.5 :block_size 24)
;; ============================================================
(def result (-> clip
(effect swirl :strength 3)))
(mux result audio-clip))