{"$schema":"https://ejfox.com/schema/page-twin@1.json","kind":"project","url":"https://ejfox.com/projects/websdr-vcv","json_url":"https://ejfox.com/projects/websdr-vcv.json","generator":"ejfox.com/json-twin@1","data":{"cacheVersion":"2026-05-13-gear-cards","html":"<p class=\"\">A VCV Rack / Cardinal plugin — a C++ Eurorack module — that streams real radio from KiwiSDR servers into a modular synth.</p>\n<p class=\"\">I was kind of just doing recordings of WebSDR and integrating them into my music. But I love the organic, generative method of modular synthesis, and incorporating some real-life data — as my broken brain is prone to do — sparked a lot of joy for me. So: what if we controlled a synth from a live frequency turned into CV data? Unlocking hidden ambient music in the structures of unseen information floating all around us.</p>\n<figure role=\"figure\" aria-label=\"The WebSDR module patched into a modular synth rack\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/projects/websdr-vcv/rack.png\" alt=\"The WebSDR module patched into a modular synth rack\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/projects/websdr-vcv/rack.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/projects/websdr-vcv/rack.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/projects/websdr-vcv/rack.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/projects/websdr-vcv/rack.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"The WebSDR module patched into a modular synth rack\" width=\"1572\" height=\"1156\" style=\"--splay-rot:0.6deg;\" data-dimensions=\"1572×1156\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">The WebSDR module patched into a modular synth rack</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"The Eurorack module in C++ — presets and KiwiSDR resampling\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/projects/websdr-vcv/code.png\" alt=\"The Eurorack module in C++ — presets and KiwiSDR resampling\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/projects/websdr-vcv/code.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/projects/websdr-vcv/code.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/projects/websdr-vcv/code.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/projects/websdr-vcv/code.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"The Eurorack module in C++ — presets and KiwiSDR resampling\" width=\"1400\" height=\"980\" style=\"--splay-rot:-0.6deg;\" data-dimensions=\"1400×980\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">The Eurorack module in C++ — presets and KiwiSDR resampling</figcaption>\n</figure>","title":"WebSDR VCV","metadata":{"title":"WebSDR VCV","date":"2025-08-01T00:00:00.000Z","category":"Hardware","featured":false,"url":"https://github.com/ejfox/websdr-vcv","tech":["C++","VCV Rack","Cardinal"],"state":"deployed","ai-involvement":"ai-assisted","tags":["audio","radio","hardware"],"words":120,"images":2,"imageDetails":{"total":2,"cloudinary":2,"withDimensions":0},"links":2,"codeBlocks":0,"headers":{},"toc":[],"type":"post"}},"_links":{"self":"https://ejfox.com/projects/websdr-vcv.json","html":"https://ejfox.com/projects/websdr-vcv","index":"/projects.json"}}