70 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? module-builder-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
(animate-project-render project) → render-spec?
project : animate-project?
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
(module-builder-source module-path binding [ #:options options #:prepare prepare #:seed seed]) → module-builder-source? module-path : path-string? binding : symbol? options : hash? = #hasheq() prepare : (or/c symbol? #f) = #f seed : source-build-seed? = 0
procedure
(module-builder-source? value) → boolean?
value : any/c
procedure
(module-builder-source-module-path source) → path-string?
source : module-builder-source?
procedure
(module-builder-source-binding source) → symbol?
source : module-builder-source?
procedure
(module-builder-source-options source) → immutable?
source : module-builder-source?
procedure
(module-builder-source-prepare source) → (or/c symbol? #f)
source : module-builder-source?
procedure
(module-builder-source-seed source) → source-build-seed?
source : module-builder-source?
procedure
(source-build-seed? value) → boolean?
value : any/c
procedure
(source-transfer-data? value) → boolean?
value : any/c
procedure
(source-preparation [ #:payload payload #:artifacts artifacts #:dependencies dependencies #:frame-reuse frame-reuse #:diagnostics diagnostics]) → source-preparation? payload : source-transfer-data? = #f artifacts : list? = '() dependencies : list? = '() frame-reuse : (or/c source-transfer-data? #f) = #f diagnostics : hash? = #hasheq()
procedure
(source-preparation? value) → boolean?
value : any/c
procedure
value : source-preparation?
procedure
(source-preparation-artifacts value) → list?
value : source-preparation?
procedure
(source-preparation-dependencies value) → list?
value : source-preparation?
procedure
(source-preparation-frame-reuse value)
→ (or/c source-transfer-data? #f) value : source-preparation?
procedure
(source-preparation-diagnostics value) → hash?
value : source-preparation?
procedure
(source-build-context? value) → boolean?
value : any/c
procedure
(source-build-context-module-path context) → string?
context : source-build-context?
procedure
(source-build-context-binding context) → symbol?
context : source-build-context?
procedure
(source-build-context-options context) → immutable?
context : source-build-context?
procedure
(source-build-context-asset-base context) → string?
context : source-build-context?
procedure
(source-build-context-assets context) → list?
context : source-build-context?
procedure
(source-build-context-width context) → exact-positive-integer?
context : source-build-context?
procedure
(source-build-context-height context) → exact-positive-integer?
context : source-build-context?
procedure
(source-build-context-camera-policy context)
→ source-transfer-data? context : source-build-context?
procedure
(source-build-context-theme context) → color-theme?
context : source-build-context?
procedure
(source-build-context-typography context) → typography-theme?
context : source-build-context?
procedure
(source-build-context-fps context) → exact-positive-integer?
context : source-build-context?
procedure
(source-build-context-quality context) → symbol?
context : source-build-context?
procedure
(source-build-context-seed context) → source-build-seed?
context : source-build-context?
procedure
(source-build-context-base-fingerprint context) → string?
context : source-build-context?
procedure
(source-build-context-preparation context)
→ (or/c source-preparation? #f) context : source-build-context?
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 #:worker-mode worker-mode #:theme theme #:typography typography]) → 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 worker-mode : (or/c 'auto 'in-process 'subprocess) = 'auto theme : color-theme? = animate-light-theme typography : typography-theme? = animate-typography-theme
procedure
(render-spec? value) → boolean?
value : any/c
procedure
(render-spec-workers specification) → exact-positive-integer?
specification : render-spec?
procedure
(render-spec-worker-mode specification)
→ (or/c 'auto 'in-process 'subprocess) specification : render-spec?
procedure
(resolve-render-worker-policy source render) → render-worker-policy?
source :
(or/c module-binding-source? module-builder-source? scene-source? timeline-source? scene-program-source?) render : render-spec?
procedure
(render-worker-policy? value) → boolean?
value : any/c
procedure
(render-worker-policy-requested-mode policy)
→ (or/c 'auto 'in-process 'subprocess) policy : render-worker-policy?
procedure
(render-worker-policy-resolved-mode policy)
→ (or/c 'in-process 'subprocess) policy : render-worker-policy?
procedure
(render-worker-policy-restartable? policy) → boolean?
policy : render-worker-policy?
procedure
(render-worker-policy-reason policy) → symbol?
policy : render-worker-policy?
procedure
(render-spec-theme specification) → color-theme?
specification : render-spec?
procedure
(render-spec-typography specification) → typography-theme?
specification : render-spec?
procedure
(render-spec-with-theme specification theme) → render-spec? specification : render-spec? theme : color-theme?
procedure
(render-spec-with-typography specification typography) → render-spec? specification : render-spec? typography : typography-theme?
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-positive-integer? = 512 prefetch : exact-nonnegative-integer? = 3 audio? : boolean? = #f
procedure
(preview-spec? value) → boolean?
value : any/c
The raco animate command accepts the global prefix options –theme animate-light, –theme animate-dark, or –theme-file PATH before plan, render, or preview. The two options are mutually exclusive. A theme file contains the versioned datum accepted by datum->theme; it is read as data rather than evaluated. Its digest and decoded snapshot become part of the prepared render identity, so workers never reread the file midway through a render.
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
(prepare-project-label-layout3d project #:view view-id [ #:frames frames #:target target #:switch-penalty switch-penalty #:movement-penalty movement-penalty]) → prepared-label-layout3d? project : animate-project? view-id : symbol? frames : (or/c #f (listof exact-nonnegative-integer?)) = #f target : project-target? = (project-target-all) switch-penalty : nonnegative-real? = 0 movement-penalty : nonnegative-real? = 0
This is an explicit preparation operation: ordinary project rendering keeps direct per-frame layout unless the author supplies a table. Preparation measures 2D templates without constructing an optional live OpenGL renderer.
procedure
(prepared-project? value) → boolean?
value : any/c
procedure
(prepared-project-source-build-context prepared)
→ (or/c source-build-context? #f) prepared : prepared-project?
procedure
(prepared-project-source-preparation prepared)
→ (or/c source-preparation? #f) prepared : prepared-project?
procedure
(prepared-project-input-manifest prepared) → immutable?
prepared : prepared-project?
procedure
(prepared-project-preparation-manifest prepared)
→ (or/c immutable? #f) prepared : prepared-project?
procedure
(prepared-project-preparation-elapsed-milliseconds prepared)
→ nonnegative-real? prepared : prepared-project?
procedure
(prepared-project-worker-policy prepared)
→ render-worker-policy? prepared : prepared-project?
procedure
(check-project! plan) → project-check-report?
plan : project-plan?
procedure
(project-check-report? 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.