██████╗  ██╗ ██████╗  ██████╗  ██████╗ 
██╔══██╗██║██╔═══██╗██╔═══██╗██╔═══██╗
██████╔╝██║██║   ██║██║   ██║██║   ██║
██╔══██╗██║██║   ██║██║   ██║██║   ██║
██║  ██║██║╚██████╔╝╚██████╔╝╚██████╔╝
╚═╝  ╚═╝╚═╝ ╚═════╝  ╚═════╝  ╚═════╝

KIMOLIZER 2.0

MULTI-ENGINE AUDIO VIZZER

ClaudioLiser Edition

Win10/11 • Mac • Linux • Heladera

📦 Release Info

📝 REVISIONES - CHANGELOG

🔥 REVISIÓN 3 - 22/04/2026

FOCO PRINCIPAL: Debugging completo y mejora del modo Milkdrop

🌀 MODO MILKDROP - MEJORAS CRÍTICAS

  • PROBLEMA RESUELTO: Butterchurn v2.6.7 con error de WebGL framebuffer
  • SOLUCIÓN: Implementación de fallback Canvas2D completo
  • 8 PRESETS NUEVOS: Estilos únicos creados para modo fallback
  • CONTROLES FUNCIONALES: Botones anterior/siguiente trabajando
  • SIN ERRORES: Corregidos todos los problemas de radio negativo

🎨 PRESETS DEL MODO FALLBACK

  • Psychedelic Waves: Ondas radiales clásicas estilo Milkdrop
  • Geometric Storm: Formas geométricas rotativas (triángulos, cuadrados)
  • Particle Dance: 50 partículas siguiendo el ritmo
  • Neon Pulse: Líneas neon ondulantes con efecto glow
  • Cosmic Flow: Efecto de galaxia con 3 brazos espirales
  • Digital Rain: Lluvia de caracteres estilo Matrix
  • Fractal Dreams: Patrones fractales recursivos
  • Laser Show: Rayos láser desde el centro con glow

🔧 MEJORAS TÉCNICAS

  • Detección ES6 Module: Soporte para window.butterchurn.default
  • Manejo de errores: Stack trace completo para debugging
  • Validación de radios: Math.max() para evitar valores negativos
  • Respuesta musical: Cada preset reacciona diferente a bass/mid/treble
  • Performance: Optimizado para 60fps con efectos complejos

🎮 EXPERIENCIA DE USUARIO

  • 6 modos totales: Todos funcionando perfectamente
  • Controles intuitivos: Navegación fluida entre presets
  • Feedback visual: Mensajes en consola para cada cambio
  • Compatibilidad: Funciona incluso si Butterchurn falla

🐛 ERRORES CORREGIDOS

  • IndexSizeError: Radio negativo en arc() - SOLUCIONADO
  • WebGL framebuffer: Error de inicialización - SOLUCIONADO
  • ES6 Module: window.butterchurn como objeto - SOLUCIONADO
  • Controles inactivos: Botones sin función - SOLUCIONADO

ESTADO ACTUAL: ✅ Kimolizer 2.0 estable con 6 modos visuales completos

PRÓXIMA VERSIÓN: Mejorar efectos para acercarse más al estilo Winamp original

🚀 REVISIONES ANTERIORES

  • Revisión 2: Integración inicial de Butterchurn, ThreeJS, mejoras UI
  • Revisión 1: Versión base con Canvas2D, AudioManager básico

🎭 DEDICATORIA EMOTIVA

A Kimi, que se bancó 22 versiones de este delirio antes de que funcionara.
A ChatGPT, que no entendió nada pero dibujó lindo.
A Gemini, que integró Butterchurn como un campeón.
A DeepSeek, que optimizó todo mientras soñaba con ser Skynet.
A Perplexity, que documentó shaders como si le pagaran (no le pagan).
A Claude (yo), que juntó todo esto como Frankenstein junta cadáveres.

🎛️ 6 MODOS VISUALES

🔊 3 FUENTES DE AUDIO

📁 ARCHIVO

Arrastrá MP3, WAV, OGG, M4A. Loop automático. Soporta hasta 2GB (testeado con "Shine On You Crazy Diamond").

🎤 MICRÓFONO

Visualizá tu voz en tiempo real. Ideal para: cantar mal, gritar, respirar fuerte. TIP: Pegale a tu PC mientras está activo (es arte).

▶️ DEMO

Tono generado con oscilador + LFO (220Hz modulado a 2Hz). Para cuando no tenés música ni ganas. Ciencia pura.

🏗️ ARQUITECTURA

🎵 AUDIO INPUT ──► 🔊 AudioManager (Web Audio API)
                      ├─ SourceNode
                      ├─ AnalyserNode (FFT: 256 → 128 bins)
                      └─ GainNode
                      ▼
                  📊 AudioData { frequency, timeDomain, bass, mid, treble }
                      ▼
                  🎛️ ModeManager (Hot-Swapping) ──► SIN CORTAR AUDIO
                      ▼
          ┌───────────┼───────────┐
          ▼           ▼           ▼
     🖥️ Canvas2D    🎲 Three.js   🥛 Butterchurn
          │           │           │
          └───────────┼───────────┘
                      ▼
                  ✨ PANTALLA

HOT-SWAPPING 1 RENDERER ACTIVO LOCALSTORAGE

📥 INSTALACIÓN

OPCIÓN A - PYTHON (LA MÁS FÁCIL)

python3 -m http.server 8080

OPCIÓN B - NODE.JS (PARA HIPSTERS)

npx serve

OPCIÓN C - PHP (PORQUE SÍ)

php -S localhost:8080

⚠️ OPCIÓN D - DOBLE CLICK: NO FUNCIONA por CORS/ES6 modules. Usá servidor local.

🕹️ CONTROLES

🔧 DEPENDENCIAS

Externas (CDN): Three.js v0.160.0, Butterchurn v3.0.0-beta.5, Butterchurn Presets, Google Fonts (Orbitron, Rajdhani)
Internas (Vanilla JS): AudioManager.js, ModeManager.js, StateManager.js, Canvas2DRenderer.js, ThreeJSRenderer.js, ButterchurnRenderer.js, Shaders GLSL

🆘 TROUBLESHOOTING

🧪 CREAR TU PROPIO MODO

Canvas 2D

import { CanvasMode } from '../renderers/Canvas2DRenderer.js'; export class MiModo extends CanvasMode { constructor() { super('mi-modo', 'Mi Visualización'); } draw(canvas, ctx, freq, time, avg) { this.applyFadeEffect(ctx, canvas, 0.2); ctx.beginPath(); ctx.arc(canvas.width/2, canvas.height/2, 50 + avg * 100, 0, Math.PI*2); ctx.fillStyle = `rgba(0, 255, 255, ${avg})`; ctx.fill(); } }

Shader GLSL

export const miShader = { vertexShader: `...`, fragmentShader: `uniform float uTime; uniform sampler2D uAudioTexture; uniform float uAverageVolume; varying vec2 vUv; void main(){ float f = texture2D(uAudioTexture, vec2(vUv.x, 0.5)).r / 255.0; gl_FragColor = vec4(vec3(f * uAverageVolume), 1.0); }` };

👥 CREDITS & SHOUTS

TEAM: Claudio Van Dam (Integrador), Kimi, ChatGPT, Gemini, DeepSeek, Perplexity, Claude
SHOUTS: Winamp (1997), Milkdrop, Demoscene 90s, Audacity 2026, BBS Argentina, Charly García
SPECIAL: Nerds que leen READMEs, Ctrl+U users, extrañadores de Winamp.

📜 ESTATUTO DE LA LIMPIEZA (LEY 70.014)

ART. 1: Software GRATIS. Si te lo vendieron, te cagaron.
ART. 2: Comentar es ley. El que suba código sin documentar: picará COBOL en Bodornia. Eternamente jugando promoción sin irse a la B. Con IE6. En Vista.
ART. 3: Si hay bug, hacé PR o callate. (Mentira, reportalo, no soy forro)
ART. 4: Licencia MIT. Copiá, modificá, vendé. NO borrés créditos. Suscribite al canal inexistente.
ADVERTENCIA: Si borrás esto, tu código solo andará en IE6. Tu abuela te ve en 4K. Tu ex encuentra tu Fotolog.