Every section, every parameter, with values and ranges. The same names are used by templates, MIDI/CC mappings, setlist cues, and the external API.
Every section, every parameter, with values and ranges. The same names are used by templates, MIDI/CC mappings, setlist cues, and the external API.
bg_color — solid background colour (#hex). Behind any image/video.
bg_image_data / bg_image_name — uploaded image asset (PNG/JPG). bg_image_opacity 0–1.
bg_video_data / bg_video_name — uploaded video asset (MP4/WebM). bg_video_opacity 0–1.
Background sits at the back of the canvas and is not part of the draggable section stack.
Mode — app_mode
abstractquadratcurviclucid
particlecloudfusionmatrix
vectorfeedbackflowfieldmetaballs
wireframescopehudtopograph
lidardatamoshcustom
pattern 0–19 — pattern index (free/groupie 0–9, artist+ 0–19)
shape 0–9 — shape index
color_mode 0–50 — colour palette index (see below)
particle_size 1–50 — particle size
speed_x −2…2 — horizontal speed
speed_y −2…2 — vertical speed
speed_z −2…2 — depth speed
opacity 0–1 — visual opacity
emission 0–20 — emission/glow
velocity 0.1–3 — pulse velocity multiplier
ambience 0–9 — ambient overlay layer
visual_x, visual_y −100…100 — visual offset (%)
Color Mode reference (0–50)
0 White Add1 Rainbow2 Heat3 Ocean4 Aurora5 Plasma
6 Sunset7 Cyber8 Ember9 Mint10 Magma11 Forest
12 Amber13 Indigo14 Coral15 Pastel16 Neon17 Steel
18 Violet19 Lime20 Bronze21 Sky22 Rose23 Mono
24 Gold25 Toxic26 Glacier27 Crimson28 Aqua29 Honey
30 Iris31 Slate32 Peach33 Jade34 Pearl35 Inferno
36 Lagoon37 Citrus38 Magenta39 Olive40 Cobalt41 Pumpkin
42 Mauve43 Tangerine44 Teal45 Sand46 White Fade47 Gunmetal
48 Silver49 Ash50 Smoked
custom_generator_id — id of the user's saved Python generator. Active when app_mode = "custom".
Generators live at /hazr/customvisuals with their own respond(note, velocity, active_notes) hooks.
strobe_enabled bool — section on/off
strobe_shape 0–13 — shape index (see below)
strobe_fill_color 0–50 — colour mode (same scale as Visuals)
strobe_opacity 0–1
strobe_size 5–200 (%)
strobe_rotation 0–360 (°)
strobe_flip_h bool
strobe_flip_v bool
Shape reference (0–13)
0 Square1 Circle2 Diamond3 Triangle
4 Star5 H-Bar6 V-Bar7 Cross
8 Rectangle9 Heart10 Spade11 Fast Fwd
12 Arrow13 Pause
Beat-synced flashing reacts to audio-input audio-beat events and to keys 0–9 when active.
Section 1 (legacy) uses logo_* columns. Sections 2+ ride on the extra_logos JSONB array. Free/Groupie tier capped at 2 sections.
enable bool
image_data / image_name — uploaded asset (PNG/JPG/SVG)
position tl/tc/tr/ml/mc/mr/bl/bc/br
animation none, fade, slide-left/right/up/down, pulse, glow, shake, scroll-h/v, flicker, bounce, wave, rotate, zoom, blur
orientation horizontal | vertical
direction ltr | mirror | upside-down
size 10–1000 (px wide)
speed 0.3–12 (s, animation duration)
opacity 0–1
fill-color #hex — overrides SVG path colour in 3D
stroke-color #hex — outline colour in 3D
stroke-width 0–20 — outline thickness in 3D
Section 1 uses dp_* columns. Sections 2+ ride on the extra_texts JSONB array.
enable bool
text string — display content
family Google Font name (50+ choices)
weight 300/400/600/700/900
decoration none/underline/line-through
align left/center/right/justify
orientation horizontal/vertical
direction ltr/rtl/mirror/upside-down
spacing −5…40 (letter-spacing px)
color #hex
stroke-color #hex
stroke-width 0–20
size 12–200 (px)
speed 0.3–12 (s, animation duration)
opacity 0–1
position tl/tc/tr/ml/mc/mr/bl/bc/br
animation none, fade, slide-*, pulse, glow, shake, scroll-h/v, flicker, bounce, wave, rotate, zoom, typewriter, blur
Stored in threed_state.text_1 for section 1, or merged into each extra_texts[N] entry. Text content/family/weight/etc. come from the parent Text section.
3d-enable bool — switch the section to 3D
3d-material plastic/metal/glass/gold/chrome/matte/neon
3d-animation none/spin/float/pulse/wobble/swing
3d-depth 2–80 — extrusion depth
3d-pos-x/y/z −400…400 — position offset (world units)
3d-rot-x/y/z −180…180 — rotation (°)
Stored in threed_state.logo_1 or per extra_logos[N]. Requires the uploaded asset to be an SVG file. Same param set as 3D Text.
3d-enable bool
3d-material, 3d-animation, 3d-depth
3d-pos-x/y/z −400…400
3d-rot-x/y/z −180…180
Logo's native fill-color overrides SVG fills
stroke-color + stroke-width add a 3D outline mesh
Drawer state lives in threed_state.drawer. Each placed shape is an entry in drawer.shapes[]; the section also has global transforms.
Per-shape
type square/rectangle/circle/triangle/diamond/pentagon/hexagon/star/plus
color #hex
w, h — width/height (world units)
depth 4–80 — extrusion
material plastic/metal/glass/gold/chrome/matte/neon
animate none/spin/float/pulse/wobble/swing
opacity 0.1–1
gx, gy — grid coordinate (10×10)
Global (drawer-wide)
enabled bool
globalColorMode 0–50 — hue-shift all shapes
globalOpacity 0–1 — multiplies per-shape opacity
globalPos { x,y,z } −400…400
globalRot { x,y,z } −180…180
shapes array of placed shapes
cam_scale 10–200 (%)
cam_pos_x, cam_pos_y 0–100 (%)
cam_opacity 0–1
cam_fill_mode fit / fill / stretch
BG removal — AI body keying via MediaPipe Tasks Vision
Webcam selection + permission are session-only and not persisted in templates.
visual_x, visual_y −100…100 — pan the visual canvas (camera offset for Three.js modes; CSS translate for DOM modes).
canvas_aspect film (16:9) | social (9:16) — canvas aspect ratio.
threed_state.section_order — array of group keys (visuals/custom/strobe/logo/text/threed/camera) reflecting the sidebar drag order. Top of the list = back of canvas (lower z-index); bottom = front. Background is fixed at the back; Templates/Setlist/Stream/Recording fixed at the bottom.