Resuscitar un mesclador de vídeo dels anys 90 amb tecnologia web moderna sona a caprici d'enginyer, però és exactament el tipus de repte que revela com el software ben dissenyat pot honrar el maquinari sense pretendre copiar-lo. El Panasonic WJ-MX50 va ser un equip de sobretaula per a edició A/B en S-VHS, amb dos busos, 287 patrons de transició, clau de crominància, memòria de vuit esdeveniments i un joystick que els VJs de clubs techno van convertir en instrument musical visual. Ara, gràcies a WebGPU, TypeScript i una obsessió pel comportament original, aquell instrument torna a la vida al navegador. I en el procés, deixa lliçons que qualsevol empresa de desenvolupament d'aplicacions a mida hauria d'escoltar.
El projecte web-mx-50 no és un emulador a l'ús. No busca replicar cada píxel del circuit NTSC de 1992, perquè els formats de vídeo actuals ja no tenen entrellaçat ni submostreig cromàtic. En lloc d'això, reprodueix el comportament observable de l'aparell: quin LED parpelleja quan prem un botó, com es comporta el joystick en aplicar l'efecte mosaic, quants fotogrames dura un fundit quan ajusteu el control d'Auto Take (de 0 a 510, en passos de dos). Això és el que converteix un mesclador en un instrument expressiu, i això és exactament el que s'ha portat al món digital.
L'arquitectura del projecte és un exemple de com s'hauria de fer el desenvolupament d'aplicacions a mida quan la fidelitat al domini importa. Tot comença amb el manual d'usuari de Panasonic, 40 pàgines que descriuen amb precisió gairebé quirúrgica les transicions d'estat del panell. Aquell manual es va convertir en el programa: no es va escriure codi fins que les 536 històries de Gherkin (escrites en llenguatge natural) van estar a punt per fallar al test si l'ordre dels colors del matís no coincidia amb el document original. Aquesta disciplina d'especificació primer, codi després, és la mateixa que apliquem a Q2BSTUDIO quan abordem projectes d'automatització de processos, intel·ligència artificial o ciberseguretat: entendre el comportament del sistema abans de tocar una línia de codi.
El cor del mesclador és un únic valor JSON serialitzable que representa l'estat complet del panell. Cada canvi passa per un reducer pur, sense classes ni observables. Això fa trivial la memòria d'esdeveniments: clonar l'estat i guardar-lo en un dels vuit slots és una simple crida a structuredClone. També facilita la persistència al navegador, el control remot per MIDI o gamepad, i la integració amb sistemes externs. Al fons, és la mateixa filosofia que seguim a els nostres serveis cloud a AWS i Azure: tenir un únic origen de veritat evita que les dades es dispersin i que les transicions d'estat es tornin fràgils.
La part gràfica corre sobre WebGPU. Els 287 patrons de transició no són una llista gegant, sinó una àlgebra: set famílies, cadascuna amb quatre variants, més modificadors apilables (compressió, diapositiva, múltiple, aparellament, persianes) i una taula de legalitat. El shader de transició tracta cada família com un camp de distància signada analítica. Un sol shader, un bloc d'uniformes, set camps. La decisió de renderitzar en espai lineal (sRGB amb correcció gamma) evita els enfosquiments a les vores de les transicions, un problema que el maquinari original no tenia perquè la seva sortida era analògica, però que el software ha de resoldre explícitament.
El temps és un altre capítol interessant. El MX50 original mesurava els fundits en fotogrames de vídeo, no en mil·lisegons. El codi actual utilitza un rellotge lògic de pas fix: un acumulador converteix el temps real en ticks de fotograma sencer, i tota la lògica dependent del temps llegeix només aquests ticks. Un fundit de 300 frames dura exactament 300 ticks tant en un monitor de 60 Hz com en un de 144 Hz. Això és crucial per als VJs que necessiten aterrar una transició just a l'inici d'una frase musical. I és també un exemple de com un sistema d'informació ben dissenyat ha d'abstreure el temps real per garantir determinisme, una cosa que apliquem en projectes d'intel·ligència artificial i agents autònoms on la sincronització entre esdeveniments és crítica.
Un dels aspectes més originals del projecte és que no es va intentar emular el circuit de sincronització de fotogrames (frame synchronizer) perquè aquest problema ja no existeix als fluxos de vídeo moderns. En lloc d'això, es van aprofitar els efectes laterals que aquell circuit generava: els fotogrames emmagatzemats per bus que permeten els modes Still, Strobe, Multi i Trail. En compartir un únic framebuffer per bus, les regles d'exclusió mútua (Still i Strobe no poden estar actius alhora; Trail es munta sobre Still) cauen pel seu propi pes. És un exemple de com entendre les restriccions originals del maquinari facilita el disseny del software.
Des de la perspectiva d'una empresa com Q2BSTUDIO, aquest projecte il·lustra diverses lliçons transferibles a qualsevol desenvolupament de software empresarial. La primera: l'especificació ha de ser executable. El manual de Panasonic, transformat en escenaris Gherkin, actua com a test de regressió continu. Quan algú modifica el codi i trenca l'ordre de parpelleig d'un LED, el test falla. Això és exactament el que implementem als nostres serveis de Business Intelligence amb Power BI: validar que els dashboards reflecteixin fidelment les regles de negoci abans de desplegar-los. La segona lliçó: l'arquitectura d'un sol estat serialitzable simplifica totes les funcionalitats que semblen complexes —memòria d'esdeveniments, persistència, control remot— i evita que l'estat es fragmenti entre components. Aquesta mateixa arquitectura l'apliquem en sistemes de ciberseguretat on cada acció ha de ser auditada i reproducible.
El projecte també toca temes d'intel·ligència artificial, tot i que de forma indirecta. El panell del MX50 té vuit memòries d'esdeveniments que poden ser programades i després disparades amb un sol botó. Això és, en essència, un sistema d'automatització de seqüències visuals. A Q2BSTUDIO desenvolupem agents d'IA que prenen decisions seqüencials sobre dades en temps real, i la lògica d'esdeveniments del mesclador és un cosí llunyà d'aquests sistemes. La capacitat de mapar un controlador MIDI o un gamepad al mateix llenguatge de comandos que els botons físics obre la porta a interfícies d'usuari alternatives, una cosa que investiguem en projectes d'automatització industrial.
L'estat actual del projecte és un prototip complet i verificat, amb 536 escenaris Gherkin i 208 tests unitaris convencionals. El codi font està publicat a GitHub, i els propers passos inclouen un component web que permeti incrustar el mesclador en qualsevol lloc, una interfície que repliqui el panell original i suport per a múltiples pestanyes i finestres. També s'explorarà l'ús del mesclador com a eina per a art visual en temps real dins de pàgines web, combinant-lo amb fonts de vídeo generades per IA o amb dades de sensors.
En definitiva, resucitar el Panasonic WJ-MX50 amb WebGPU no és només un homenatge a una peça de maquinari icònica. És una demostració de com el software ben construït —amb especificacions executables, estat únic i abstracció del temps— pot capturar l'essència d'un instrument físic i traslladar-lo al web sense perdre la seva expressivitat. A Q2BSTUDIO apliquem aquesta mateixa filosofia cada dia, ja sigui desenvolupant aplicacions a mida, desplegant infraestructura cloud, assegurant sistemes contra ciberatacs o construint agents d'intel·ligència artificial. Perquè al final, el que importa no és la tecnologia, sinó el comportament que aquella tecnologia permet.




