13 Projects and Final Rendering
An animate-project? is the one immutable declaration shared by final rendering and project preview. It separates a pure configuration plan from effectful preparation and execution.
procedure
(animate-project #:id id #:source source [ #:render render #:preview preview #:output output #:encoder encoder #:cache cache #:assets assets #:metadata metadata]) → animate-project? id : symbol?
source :
(or/c module-binding-source? scene-source? timeline-source? scene-program-source?) render : render-spec? = (render-spec) preview : preview-spec? = (preview-spec) output : output-spec? = (output-spec) encoder : encoder-spec? = (encoder-spec) cache : cache-spec? = (cache-spec) assets : (listof project-asset?) = '() metadata : hash? = #hasheq()
procedure
(animate-project? value) → boolean?
value : any/c
procedure
(module-binding-source module-path binding)
→ module-binding-source? module-path : path-string? binding : symbol?
procedure
(module-binding-source? value) → boolean?
value : any/c
procedure
(scene-source scene) → scene-source?
scene : scene?
procedure
(scene-source? value) → boolean?
value : any/c
procedure
(timeline-source timeline) → timeline-source?
timeline : authored-timeline?
procedure
(timeline-source? value) → boolean?
value : any/c
procedure
(scene-program-source program) → scene-program-source?
program : scene-program?
procedure
(scene-program-source? value) → boolean?
value : any/c
procedure
(render-spec [ #:fps fps #:width width #:height height #:renderer3d renderer3d #:supersample supersample #:workers workers]) → render-spec? fps : exact-positive-integer? = 30 width : exact-positive-integer? = 1280 height : exact-positive-integer? = 720 renderer3d : any/c = 'software supersample : exact-positive-integer? = 1 workers : exact-positive-integer? = 1
procedure
(render-spec? value) → boolean?
value : any/c
procedure
(preview-spec [ #:fps fps #:pixel-scale pixel-scale #:cache-megabytes cache-megabytes #:prefetch prefetch #:audio? audio?]) → preview-spec? fps : exact-positive-integer? = 30 pixel-scale : positive? = 1 cache-megabytes : exact-nonnegative-integer? = 128 prefetch : exact-nonnegative-integer? = 3 audio? : boolean? = #f
procedure
(preview-spec? value) → boolean?
value : any/c
procedure
(output-spec [ #:root root #:name name #:format format #:overwrite-policy overwrite-policy]) → output-spec? root : path-string? = "media" name : string? = "animation" format : (or/c 'mp4 'png-sequence) = 'mp4 overwrite-policy : (or/c 'error 'replace) = 'error
procedure
(output-spec? value) → boolean?
value : any/c
procedure
(encoder-spec [ #:codec codec #:pixel-format pixel-format #:options options #:audio-codec audio-codec #:audio-options audio-options #:fast-start? fast-start?]) → encoder-spec? codec : symbol? = 'h264 pixel-format : symbol? = 'yuv420p options : hash? = #hasheq() audio-codec : symbol? = 'aac audio-options : hash? = #hasheq() fast-start? : boolean? = #t
procedure
(encoder-spec? value) → boolean?
value : any/c
procedure
(cache-spec [ #:root root #:policy policy #:max-bytes max-bytes #:domains domains]) → cache-spec? root : path-string? = ".animate-cache" policy : symbol? = 'read-write max-bytes : exact-nonnegative-integer? = (* 1024 1024 1024)
domains : (listof symbol?) = '(formula frames segments audio waveform source-program)
procedure
(cache-spec? value) → boolean?
value : any/c
procedure
(project-asset path [ #:role role #:metadata metadata]) → project-asset? path : path-string? role : symbol? = 'visual metadata : hash? = #hasheq()
procedure
(project-asset? value) → boolean?
value : any/c
procedure
(project-target-section name) → project-target?
name : symbol?
procedure
(project-target? value) → boolean?
value : any/c
procedure
(plan-project project [ #:target target #:directory directory]) → project-plan? project : animate-project? target : project-target? = (project-target-all) directory : path-string? = (current-directory)
procedure
(project-plan? value) → boolean?
value : any/c
procedure
(prepare-project! plan) → prepared-project?
plan : project-plan?
procedure
(prepared-project? value) → boolean?
value : any/c
procedure
(project-plan->datum plan) → immutable-hash?
plan : project-plan?
Use execute-prepared-project! from animate/render to run a prepared plan. It produces an immutable execution report after frame rendering, encoding, and optional media assembly, and installs final artifacts atomically.
Limitation: direct Scene, timeline, and program sources may contain arbitrary procedures. They are valid for an in-memory session but cannot have an honest persistent fingerprint unless the author supplies an explicit key.