{"id":195,"date":"2026-05-24T14:41:15","date_gmt":"2026-05-24T12:41:15","guid":{"rendered":"https:\/\/projects.dejvino.com\/w\/?p=195"},"modified":"2026-07-30T19:37:26","modified_gmt":"2026-07-30T17:37:26","slug":"music-video-gen-ai-built-music-visualizer-library","status":"publish","type":"post","link":"https:\/\/projects.dejvino.com\/w\/music-video-gen-ai-built-music-visualizer-library\/","title":{"rendered":"music-video-gen | AI-built music visualizer library"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">A small library of music video &#8220;generators&#8221; \u2014 self-contained pages with audio-reactive visuals, recorded alongside a finished track to produce a video for it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Five generators so far, each its own scene: party-stage (a modern virtual venue \u2014 DJ, crowd, lasers, light bars, and a projection screen running one of several shader visualizers picked at runtime), party-cathedral (a torch-lit medieval hall with illustrated performers), tv-player (a quieter in-room TV\/VCR scene with small ambient effects), magic-mirror, and sparkles, the original and simplest of the set.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Built almost entirely through AI pair-programming (Gemini) rather than by hand, and deliberately structured for that: every stage element and visualizer sits behind a small, uniform interface and a single registry, so the AI can extend one self-contained file at a time instead of reasoning about \u2014 and risking breaking \u2014 one big scene.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/projects.dejvino.com\/w\/wp-content\/uploads\/2026\/05\/image.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"583\" src=\"https:\/\/projects.dejvino.com\/w\/wp-content\/uploads\/2026\/05\/image-1024x583.png\" alt=\"\" class=\"wp-image-196\" srcset=\"https:\/\/projects.dejvino.com\/w\/wp-content\/uploads\/2026\/05\/image-1024x583.png 1024w, https:\/\/projects.dejvino.com\/w\/wp-content\/uploads\/2026\/05\/image-300x171.png 300w, https:\/\/projects.dejvino.com\/w\/wp-content\/uploads\/2026\/05\/image-768x437.png 768w, https:\/\/projects.dejvino.com\/w\/wp-content\/uploads\/2026\/05\/image-100x57.png 100w, https:\/\/projects.dejvino.com\/w\/wp-content\/uploads\/2026\/05\/image-150x85.png 150w, https:\/\/projects.dejvino.com\/w\/wp-content\/uploads\/2026\/05\/image-200x114.png 200w, https:\/\/projects.dejvino.com\/w\/wp-content\/uploads\/2026\/05\/image-450x256.png 450w, https:\/\/projects.dejvino.com\/w\/wp-content\/uploads\/2026\/05\/image-600x342.png 600w, https:\/\/projects.dejvino.com\/w\/wp-content\/uploads\/2026\/05\/image-900x513.png 900w, https:\/\/projects.dejvino.com\/w\/wp-content\/uploads\/2026\/05\/image.png 1129w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Status: Finished, and growing whenever a new song needs a video.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Project page: https:\/\/git.dejvino.cz\/dejvino\/music-video-gen<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A small library of music video &#8220;generators&#8221; \u2014 self-contained pages with audio-reactive visuals, recorded alongside a finished track to produce a video for it. Five generators so far, each its own scene: party-stage (a modern virtual venue \u2014 DJ, crowd, &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"more-link\" href=\"https:\/\/projects.dejvino.com\/w\/music-video-gen-ai-built-music-visualizer-library\/\"> <span class=\"screen-reader-text\">music-video-gen | AI-built music visualizer library<\/span> Read More &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[87,65],"tags":[34,48,46,50,88,29],"class_list":["post-195","post","type-post","status-publish","format-standard","hentry","category-music","category-software","tag-ai","tag-glsl","tag-javascript","tag-music","tag-three-js","tag-visualisation"],"_links":{"self":[{"href":"https:\/\/projects.dejvino.com\/w\/wp-json\/wp\/v2\/posts\/195","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/projects.dejvino.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/projects.dejvino.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/projects.dejvino.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/projects.dejvino.com\/w\/wp-json\/wp\/v2\/comments?post=195"}],"version-history":[{"count":1,"href":"https:\/\/projects.dejvino.com\/w\/wp-json\/wp\/v2\/posts\/195\/revisions"}],"predecessor-version":[{"id":197,"href":"https:\/\/projects.dejvino.com\/w\/wp-json\/wp\/v2\/posts\/195\/revisions\/197"}],"wp:attachment":[{"href":"https:\/\/projects.dejvino.com\/w\/wp-json\/wp\/v2\/media?parent=195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/projects.dejvino.com\/w\/wp-json\/wp\/v2\/categories?post=195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/projects.dejvino.com\/w\/wp-json\/wp\/v2\/tags?post=195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}