Esto fue diversión pura. Durante semanas estuve mirando el reproductor y pensando que le vendría bien ese tipo de distracción visual a pantalla completa que recuerdo de las sesiones nocturnas con Winamp hace veinte años. Este fin de semana dejé de pensarlo y lo construí.
Zenteek ahora tiene un visualizador Milkdrop, impulsado por projectM-4, el sucesor de código abierto del motor original de Milkdrop. Lee los mismos archivos .milk que la gente ha compartido en internet desde siempre, y Zenteek solo le entrega una señal de audio y una ventana donde dibujar.
Se abre desde Window -> Visualizer, o con el atajo de toda la vida, si tus dedos todavía lo recuerdan.
Hay una barra de estado delgada en la parte inferior con flechas de anterior/siguiente y un selector de presets. Presiona el nombre y aparece una lista desplazable con todo lo disponible, con el preset activo resaltado en el color de acento. Las teclas de flecha también van cambiando, una vez que la ventana tiene el foco.
El conjunto incluido es pequeño y muy bien elegido: una selección de lo mejor del proyecto projectM. Si quieres más, copia tus propios archivos .milk en tu carpeta MilkdropPresets dentro de Application Support y aparecerán la próxima vez que abras el selector. Sin reiniciar, sin botón de reescaneo. Incluso puedes reemplazar presets incluidos por nombre si tienes tu propia versión del mismo archivo.
Hay dos detalles de los que me siento particularmente satisfecho.
- Primero: la toma de audio está antes de la cadena DSP y del control de volumen, así que los golpes de graves siguen siendo golpes de graves aunque escuches bajo. Las visuales nunca se quedan planas solo porque bajaste el volumen de la música.
- Segundo: cuando la ventana del visualizador está oculta o completamente tapada, la toma de audio se apaga y el renderizado se pausa. No se gastan ciclos de GPU en una imagen que nadie está mirando.
No todo salió perfecto. Algunos de los presets más elaborados hacen referencia a texturas bitmap -ruido aleatorio, patrones fractales- que no vienen incrustadas en el preset. Si projectM no encuentra una, el ciclo de renderizado se bloquea. La solución fue por partida doble: el preset problemático se pone en cuarentena automáticamente en el siguiente inicio y desaparece del selector, así nunca te quedas atrapado en un bucle de errores. Si quieres hacer funcionar bien los que dependen de texturas, hay una carpeta MilkdropTextures que puedes llenar.
Fue el tipo de proyecto de fin de semana en el que la mitad del trabajo fue cableado aburrido y la otra mitad fue quedarme mirando remolinos durante una hora y llamar a eso investigación.