# Shapemaker's submodules In approximate order of dependency: - `geometry`: Types and operations that don't have an inherent graphical representation but are used to define more complex objects: `Point`, `Region`, etc - `graphics`: Types and operations for objects that can get rendered: all the `Object` variants (lines, circles, etc), the `Canvas`, `Layer`s, etc - `random`: Methods named `random_...` on various types, to help with semi-random procedural artworks - `rendering`: Traits that pertain to rendering graphical elements to an SVG tree and their various implementations on most structs from `graphics` - `synchronization`: Data structures and methods to synchronize various musical sources (audio files, MIDI files, etc) with the video - `video`: Data structure, user API (mainly adding hooks), rendering and encoding of `Canvas` "frames" into a H.264 MP4 video file - `vst`: A VST to interact with shapemaker within a DAW directly [wip] - `wasm`: WASM-specific code to provide a JS API to shapemaker, to, for example, make it interact with the WebMIDI API See the individual READMEs in each submodule for more information. ```mermaid graph TD geometry --> random graphics --> random geometry --> graphics graphics --> rendering rendering --> video synchronization --> video rendering --> wasm synchronization --> vst ```