El metro tiene 12 líneas. El bus tiene más de 100.
Cuando terminé el Mapa Sonoro del Metro me quedé con ganas de más. El metro tiene algo de orden casi musical de por sí: líneas fijas, frecuencias regulares, rutas que no cambian. Es un sistema contenido.
El bus de Barcelona es otra cosa. Más de 100 líneas, más de 1.000 vehículos en movimiento simultáneo por toda la ciudad, rutas que se adaptan al tráfico, frecuencias irregulares. Si el metro suena como un arpegio cambiante, el bus suena a algo mucho más caótico, más parecido al ruido real de la calle. Era exactamente lo que quería explorar a continuación.
Qué hace esta herramienta
La lógica es la misma que en el metro: cada vez que un autobús llega a una parada, suena una nota. La nota depende de la línea, mapeada a una frecuencia específica dentro de una escala predefinida. Sobre el mapa de Barcelona puedes ver los autobuses moviéndose en tiempo real, y cada punto que parpadea al llegar a su destino corresponde a un sonido concreto.
La diferencia respecto al metro es que aquí hay mucho más movimiento simultáneo. En hora punta, la densidad de llegadas puede ser tan alta que el sonido se acerca más a una textura de ruido que a una melodía reconocible. Que es, también, una forma honesta de retratar lo que está pasando en la ciudad en ese momento.
Como en el metro, tiene exportación de audio incorporada para que puedas grabar fragmentos directamente desde el navegador.
Los problemas que no esperaba
El metro fue complejo de conectar a la API. El bus fue directamente difícil en varios frentes al mismo tiempo.
Volumen de datos. Con más de 1.000 vehículos activos, el volumen de datos que devuelve la API es considerablemente mayor que en el metro. Si no filtras bien qué estás pidiendo y cuándo, el navegador empieza a trabajar a un ritmo que no es sostenible a largo plazo. Tuve que ser muy cuidadoso con qué datos pedía, con qué frecuencia y cuántos procesaba de golpe.
Programación de notas. En el metro, las llegadas son espaciadas por la naturaleza del sistema: un tren no llega dos veces al mismo sitio en cinco segundos. En el bus, pueden llegar múltiples vehículos a paradas cercanas casi simultáneamente. Si cada llegada dispara una nota de forma síncrona, el resultado es un bloque de sonido abrupto en vez de algo que se pueda escuchar. La solución fue usar setTimeout con pequeños desplazamientos para escalonar los disparos de notas, de forma que llegadas casi simultáneas suenen como una rápida sucesión en vez de como un único bloque ruidoso.
El contexto de audio en Safari. El mismo problema que en el metro, pero esta vez con más urgencia porque hay más eventos de audio que gestionar. Las reglas de Safari para activar el contexto de audio son estrictas y fáciles de violar sin querer si no las respetas desde el primer gesto del usuario.
Condiciones de carrera. Con tanto polling simultáneo para tantas líneas, el riesgo de que dos peticiones actualicen el mismo estado al mismo tiempo es real. Hubo que revisar bien dónde podían aparecer condiciones de carrera y añadir la lógica necesaria para evitarlas.
Por qué el bus suena diferente al metro
Esta es la parte que más me interesa de tener las dos herramientas funcionando en paralelo.
El metro suena a estructura. Hay un orden subyacente en cómo se mueven los trenes que acaba reflejándose en la música: patrones, repeticiones, silencios previsibles entre líneas. El bus suena a improvización. Hay demasiados vehículos moviéndose de formas demasiado distintas para que emerja un patrón claro. Es más ruidoso, más impredecible, más parecido al caos real de la ciudad en superficie.
Los dos juntos, el metro y el bus, dan dos retratos sonoros completamente distintos de la misma ciudad. Escucharlos el mismo día a la misma hora y comparar lo que suenan diferente es uno de esos experimentos que parece tonto hasta que lo haces.
Para qué lo puedes usar
Lo mismo que el metro: texturas generativas para producción, material de sonificación de datos, o simplemente la ciudad de fondo sonando diferente cada día. Pero con el bus tienes acceso a una densidad de eventos mucho mayor, lo que lo hace más útil para texturas más ricas y menos predecibles.
Si te interesa el lado técnico —cómo funciona el polling, cómo están mapeadas las líneas a frecuencias, cómo está construido el sistema de exportación— el código es parte de los proyectos que mantengo bajo nokko y puedo hablar de él con más detalle si hay interés.
Puedes probarlo en bynokko.com, sin cuenta, sin instalar nada. Abre las dos herramientas a la vez en dos pestañas y escucha Barcelona en sus dos capas al mismo tiempo.
¿Qué diferencia notas entre el sonido del metro y el del bus? Me interesa saber cómo lo percibe alguien que lo escucha por primera vez, sin saber nada de cómo está construido.
