.

CREATIVE SYSTEMS STUDIO

Exploring music, AI, procedural systems, interactive media and emerging technologies through a multidisciplinary creative practice.

(() => { const root = document.getElementById("statik-net01"); root.innerHTML = ""; const canvas = document.createElement("canvas"); const ctx = canvas.getContext("2d"); root.appendChild(canvas); const w = root.clientWidth; const h = root.clientHeight; canvas.width = w; canvas.height = h; const nodes = []; const links = []; const NODE_COUNT = 34; const WORDS = [ "electronic music", "industrial", "techno", "bass music", "breaks", "garage", "sound design", "sampling", "sequencing", "live set", "DJ systems", "voice AI", "conversation design", "dialogue systems", "prompt systems", "agent systems", "RAG", "tool calling", "speech synthesis", "phoneme systems", "language models", "Unreal", "MetaHuman", "TouchDesigner", "Blender", "Houdini", "digital humans", "motion design", "shader systems", "interactive media", "realtime graphics", "procedural worlds", "VJing", "Resolume", "DMX", "lasers", "LED walls", "projection mapping", "media servers", "pixel mapping", "stage visuals", "generative visuals", "CNC", "3D printing", "laser cutting", "toolpaths", "fabrication", "computational carving", "indigenous design", "linguistics", "language technology", "cultural technology", "digital heritage", "creative systems", "procedural design", "generative systems", "modular design", "cross-domain design", "signal flow" ]; for (let i = 0; i < NODE_COUNT; i++) { nodes.push({ x: Math.random() * w, y: Math.random() * h, vx: (Math.random() - 0.5) * 0.42, vy: (Math.random() - 0.5) * 0.42, size: 2 + Math.random() * 2, phase: Math.random() * 6.283, word: WORDS[Math.floor(Math.random() * WORDS.length)], wordAlpha: 0, showWord: Math.random() < 0.32, wordPhase: Math.random() * 6.283, wordTimer: 60 + Math.random() * 120 }); } for (let i = 0; i < NODE_COUNT; i++) { let b = Math.floor(Math.random() * NODE_COUNT); let c = Math.floor(Math.random() * NODE_COUNT); if (i !== b) { links.push({ a: i, b: b, phase: Math.random() * 6.283, bend: 0, alpha: Math.random() * 0.18, targetAlpha: 0.05 + Math.random() * 0.16, fadeSpeed: 0.006 + Math.random() * 0.012, phaseLife: Math.random() * 6.283 }); } if (i !== c) { links.push({ a: i, b: c, phase: Math.random() * 6.283, bend: 0, alpha: Math.random() * 0.18, targetAlpha: 0.05 + Math.random() * 0.16, fadeSpeed: 0.006 + Math.random() * 0.012, phaseLife: Math.random() * 6.283 }); } } function move(n) { n.x += n.vx; n.y += n.vy; if (n.x < 25 || n.x > w - 25) n.vx *= -1; if (n.y < 25 || n.y > h - 25) n.vy *= -1; } function randomWord() { return WORDS[Math.floor(Math.random() * WORDS.length)]; } function activateNodeWord(n) { n.word = randomWord(); n.showWord = true; n.wordTimer = 45 + Math.random() * 95; n.wordPhase = Math.random() * 6.283; } function retargetLink(link) { let a = Math.floor(Math.random() * NODE_COUNT); let b = Math.floor(Math.random() * NODE_COUNT); if (a === b) { b = (b + 1) % NODE_COUNT; } link.a = a; link.b = b; link.alpha = 0; link.targetAlpha = 0.05 + Math.random() * 0.16; link.phase = Math.random() * 6.283; link.phaseLife = Math.random() * 6.283; link.fadeSpeed = 0.006 + Math.random() * 0.012; activateNodeWord(nodes[a]); if (Math.random() < 0.75) { activateNodeWord(nodes[b]); } } function updateWord(n) { n.wordTimer -= 1; if (n.showWord) { n.wordAlpha += (0.82 - n.wordAlpha) * 0.06; if (n.wordTimer <= 0 && Math.random() < 0.07) { n.showWord = false; n.wordTimer = 35 + Math.random() * 80; } } else { n.wordAlpha += (0 - n.wordAlpha) * 0.05; if (n.wordTimer <= 0 && Math.random() < 0.045) { n.word = randomWord(); n.showWord = true; n.wordTimer = 45 + Math.random() * 95; n.wordPhase = Math.random() * 6.283; } } } function draw(time) { const t = time * 0.001; ctx.fillStyle = "rgba(0,0,0,0.17)"; ctx.fillRect(0, 0, w, h); for (let i = 0; i < nodes.length; i++) { move(nodes[i]); updateWord(nodes[i]); } ctx.save(); ctx.globalCompositeOperation = "lighter"; for (let i = 0; i < links.length; i++) { const link = links[i]; const a = nodes[link.a]; const b = nodes[link.b]; const life = 0.5 + 0.5 * Math.sin(t * 0.85 + link.phaseLife); link.targetAlpha = life * 0.18; link.alpha += (link.targetAlpha - link.alpha) * link.fadeSpeed; if (link.alpha < 0.018 && Math.random() < 0.08) { retargetLink(link); } const pulse = 0.5 + 0.5 * Math.sin(t * 1.1 + link.phase); const alpha = link.alpha * (0.75 + pulse * 0.25); const mx = (a.x + b.x) / 2; const my = (a.y + b.y) / 2; ctx.strokeStyle = "rgba(255,255,255," + alpha + ")"; ctx.lineWidth = 0.65; ctx.beginPath(); ctx.moveTo(a.x, a.y); ctx.quadraticCurveTo( mx + link.bend, my - link.bend, b.x, b.y ); ctx.stroke(); } for (let i = 0; i < nodes.length; i++) { const n = nodes[i]; const pulse = 0.5 + 0.5 * Math.sin(t * 1.4 + n.phase); ctx.beginPath(); ctx.arc(n.x, n.y, n.size + pulse * 0.7, 0, Math.PI * 2); ctx.fillStyle = "rgba(255,255,255,0.82)"; ctx.fill(); ctx.beginPath(); ctx.arc(n.x, n.y, n.size * 4 + pulse * 3, 0, Math.PI * 2); ctx.strokeStyle = "rgba(255,255,255,0.055)"; ctx.lineWidth = 1; ctx.stroke(); } ctx.restore(); ctx.save(); ctx.font = "11px monospace"; ctx.textAlign = "center"; ctx.textBaseline = "middle"; for (let i = 0; i < nodes.length; i++) { const n = nodes[i]; if (n.wordAlpha < 0.02) continue; const flicker = 0.82 + 0.18 * Math.sin(t * 2.2 + n.wordPhase); const alpha = n.wordAlpha * flicker; ctx.fillStyle = "rgba(255,255,255," + alpha + ")"; ctx.fillText(n.word, n.x, n.y - 18); } ctx.restore(); requestAnimationFrame(draw); } draw(0); })();

Roster

• The Lotus Separators (Dark Pop / Indie Electronic)
• Morningstar (Post-Pop / Indie Electronic)
• Garden of Despair (Darkwave / Goth / Retrowave)
• Autumnveil (Witch House / Occult Trap)

About

Kytherean Recordings is an independent electronic label founded in 2023, focused on dark pop, indie electronic, darkwave and experimental electronic music.The label releases music from artists exploring the darker and more atmospheric side of modern electronic and alternative sound.

Contact

For bookings and general enquiries, use the form below.
Demo submissions are welcome via private streaming links.

Thank you

Message received.
We'll be in touch soon.