Para empezar de una forma muy inesperada, permítanme presentarles el CZP-1, una implementación por software de la síntesis por distorsión de fase como un instrumento completo en una página web.
Usando el CZP-1 podrías . . .
. . . y cualquier otra cosa que se te ocurra.
La “Síntesis por distorsión de fase” es el proceso de generación de sonido que Casio ideó a principios de los años 80 y aplicó en productos como el CZ-101. Nunca he estado cerca de un sintetizador de la serie CZ de forma consciente, pero siempre he querido jugar con un sinte de distorsión de fase, así que ¿qué va a hacer un desarrollador en 2026? Construir uno con agentes, obviamente.
No, esto no fue programado por puro instinto en un solo intento. Si lo haces así, no sonará del todo bien y la interfaz será un desastre, pero te permite avanzar sorprendentemente mucho. La cuestión con estas cosas es cómo hacerlas utilizables para otras personas y terminarlas.
Ve a la página web y enciéndelo. Luego toca las teclas o usa el teclado de tu ordenador para tocar algunas notas.
Si no escuchas nada, puede que el volumen esté bajo o que tu teléfono esté en modo silencio.
Los sonidos están organizados en bancos (grupos de sonidos) y programas (sonidos individuales) en el panel Library. El banco existente de “Factory Presets” debería estar seleccionado, y los diferentes sonidos que hay allí muestran parte de su potencial.
Así que has creado un sonido genial y quieres que tu amigo pueda usarlo . . . ¡no hay problema! Puedes enviar un enlace web a un CZP-1 con tu sonido particular. Aquí tienes uno que hice antes.
Copia/pega en tu mensajero preferido, guárdalos en documentos, lo que sea. Los datos del sonido están en el propio enlace, no hay nada en ningún servidor.
El soporte MIDI debería ser bastante sencillo para cualquiera familiarizado con MIDI, lo que permite el uso de teclados externos o controlarlo desde un secuenciador. Hay soporte para pedal y rueda mapeado a los controladores habituales. El pedal de expresión afecta a los aspectos sensibles a la velocidad del programa.
Para más detalles sobre absolutamente todo lo demás, consulta el Manual del CZP-1
Habiendo probado, y abandonado, varios proyectos de audio a lo largo de los años, había llegado a considerarlo uno de los campos más difíciles de la programación; una prueba adecuada para la moda actual de la programación con agentes.
Mi proceso de trabajo consiste en contrastar varios agentes entre sí. (Al menos se utilizaron Claude Code, DeepStik en Pi y Codex). Por la razón que sea, parecen tener puntos ciegos mutuamente excluyentes, lo que lleva a iterar hacia un resultado mucho más exitoso de lo que cualquiera lograría de forma independiente.
Empecé pidiéndole a Claude que implementara un sintetizador de distorsión de fase en JavaScript en una página web. Ese primer esfuerzo fue sorprendente, incluso decidió usar automatización del navegador para comparar la salida de audio con un audio de referencia que obtuvo de… no sé de dónde. Los problemas eran que no sonaba bien, los parámetros se interpretaban mal y la interfaz de usuario era pésima. Pero en realidad funcionaba algo, incluso con los presets increíblemente erráticos que Claude alucinó en su lugar.
En consecuencia, lo pasé a DeepSeek con comentarios sobre el motor de audio que había escrito Claude, e este se puso a investigar y logró establecer que varios aspectos de las formas de onda fundamentales estaban mal, las funciones de mezcla estaban mal, etc., y completó una pasada corrigiéndolos.
Este intercambio continuó durante aproximadamente una semana, con ellos minando progresivamente básicamente cada fuente de información sobre el tema de la implementación de la síntesis por distorsión de fase, iterando cada vez más cerca de una posición que ninguno podría mejorar significativamente.
Esto es lo que permitió que el motor de audio funcionara como lo hace ahora, con menos de un puñado de interjecciones muy específicas.
Pero luego está toda la interfaz de usuario y montones de funciones orientadas al usuario, como la polifonía (la capacidad de tocar varias notas a la vez), la modulación, el deslizamiento legato con portamento. Todo esto tiene que ser discutido, diseñado, implementado y depurado individualmente según sea necesario. Nada de eso fue automático, y a menudo era necesario conocer el algoritmo preciso a utilizar, como la asignación round robin de voces para la polivalencia, y pedir exactamente eso para terminar la función.
Las grandes lecciones fueron:
Si tuviera que hacer esto de nuevo, tendría el manual en marcha desde el momento en que comienza el trabajo de la interfaz de usuario, ya que demostró ser un punto útil para mantener la consistencia conceptual.
Para enfatizar lo loca que es la situación del trabajo de bajo nivel, mientras hacía esto me llevé una sorpresa y, como prueba, decidí portar los juegos web que hice en Luduxia desde su renderizador WebGL2 personalizado escrito a mano a WebGPU, una tarea que había pospuesto debido a iOS Safari, entre otras cosas. Esto se completó con la asistencia de agentes y se desplegó en unas 24 horas bastante relajadas. Cuanto más familiarizado estés con WebGL y WebGPU, más impactante será. (Como parte del trabajo en CZP-1, el propio sistema de construcción de Luduxia fue portado por agentes y es el que realiza la compilación final del sinte).
Vivimos en una nueva era en la que conocer las cosas de bajo nivel es útil para fines de diseño, pero serás superado por las máquinas cuando se trate de la implementación. Luchar contra esa tendencia es simplemente el camino hacia mucho dolor, pero va a molestar a mucha gente.
Hay mucha inspiración genial que extraer de los sintetizadores de los 80, como la interoperabilidad MIDI entre distintos fabricantes, la capacidad de representar y generar sonidos interesantes usando cantidades minúsculas de memoria y relativamente poco cómputo, y la fe en que los usuarios aprenderán algo complejo y esotérico si les ayuda a lograr sus objetivos o simplemente a divertirse. Espero que haya más sobre esto en otra ocasión.