# ¿A qué suena tu fotografía?

Abraham Esli / Big Maybe · Experimento 01 · 30 de octubre de 2026

La fotografía puede convertirse en una partitura. Sus píxeles permiten una traducción matemática reproducible; los personajes, la atmósfera y las referencias culturales permiten una interpretación compuesta. La segunda capa exige criterio y contexto. No hay una frecuencia musical verdadera escondida en un color ni es posible recuperar el sonido original de una escena a partir de una foto fija.

La propuesta más fértil es un instrumento con dos capas: **una huella visual medible y una lectura musical explícita**. Cambiar la foto cambia los datos; cambiar la lectura cambia la música. Esta primera entrega contiene tres maquetas de 64 segundos, una fotografía por camino, ejecutadas con tres herramientas diferentes.

## Los tres caminos elegidos

| Camino / herramienta ejecutada | Qué convierte | Por qué la elegí para este experimento | Límite |
|---|---|---|---|
| Sonificación con Python, NumPy y SciPy | Matriz de luz/color → osciladores, envolventes y timbre | Permite saber exactamente qué parte del sonido procede de la imagen y exportar una receta reproducible | Una traducción literal puede ser una textura más que una canción |
| Composición por patrones con Tone.js 15.1.22 | Bordes, franjas y posiciones → eventos musicales | Síntesis, secuencias, efectos y reproducción en navegador; es la base más directa para una futura galería interactiva | Hay que escribir el analizador visual y el criterio musical |
| Partitura contextual en Python/MIDI interpretada por sfizz | Lectura de escena + rasgos medidos → arreglo con instrumentos muestreados | Mayor contraste tímbrico frente a los sintetizadores; se controla cada nota, duración y articulación | sfizz es un sampler, no entiende imágenes: la lectura cultural pertenece al compositor |

Esta selección es para las tres necesidades del proyecto, no un ranking universal de motores. [SciPy](https://docs.scipy.org/doc/scipy/reference/signal.html) documenta procesamiento de señales; [Tone.js](https://tonejs.github.io/) ofrece instrumentos, transporte y efectos; [sfizz](https://sfz.tools/sfizz/) interpreta instrumentos SFZ y permite integrarlos en software propio.

También investigué [SuperCollider](https://docs.supercollider.online/Guides/Non-Realtime-Synthesis.html), excelente para síntesis programada e instalaciones, con exportación offline; [Csound](https://csound.com/), con un amplio sistema de síntesis y versiones embebibles; [Strudel/Tidal](https://strudel.cc/learn/getting-started/), especialmente atractivo para patrones y performance de live coding; y [Sonic Pi](https://sonic-pi.net/), accesible para componer y tocar con código. Estos cuatro fueron investigados, no utilizados en los audios de esta entrega.

## Fundamento y distinciones

Un antecedente concreto es **The vOICe**, de Peter B. L. Meijer: posición horizontal → tiempo, vertical → frecuencia y brillo → amplitud. Su documentación muestra fórmulas, ejemplos y código. Este proyecto escribe una implementación propia inspirada en ese principio y añade decisiones musicales; no afirma reproducir íntegramente su sistema ni ofrecer una ayuda de accesibilidad validada. [Fuente primaria](https://www.seeingwithsound.com/im2sound.htm).

Para un píxel o celda con coordenadas normalizadas x,y y luminancia L, una regla posible es:

```
tiempo = inicio + duración × x
frecuencia = f_min × (f_max / f_min)^(1 − y)
amplitud = L^gamma
sonido(t) = suma de las voces moduladas por cada columna
```

La luminancia aquí se calcula después de convertir sRGB a luz lineal: L = 0.2126R + 0.7152G + 0.0722B. La versión musical puede cuantizar las alturas a una escala; esa escala es una decisión del compositor. El matiz no se convierte en frecuencia electromagnética reducida por octavas: eso daría una analogía elegida, no una equivalencia perceptiva universal.

La capa cultural puede incluir el pie de foto, la serie, el lugar, la fecha verificada, los objetos, los gestos y las relaciones espaciales. Conviene distinguir observación, metadatos e interpretación. No se infiere una tradición musical, identidad o época por apariencia física. En estas tres imágenes no había fecha de captura EXIF disponible; la fecha de un archivo o de la página no se tomó como fecha de la escena.

## 01 · Luz en suspensión

**Foto:** figura de espaldas entre humo, luz naranja y arquitectura interior; primera imagen de la [serie Streetphoto](https://www.abrahamesli.com/street). Título de trabajo para la pieza, no título original atribuido a la fotografía.

**Por qué:** fuerte separación entre penumbra y masa luminosa, gradientes amplios y una figura que interrumpe el campo. Es útil para escuchar cómo una imagen se convierte en espectro.

**Regla ejecutada:** 24 bandas verticales de altura × 96 columnas. Cada banda activa una voz. Un barrido horizontal de 56 segundos recorre la foto desde 0.8 s; arriba se sitúan las notas agudas. La amplitud sigue la luminancia suavizada elevada a 0.65. La diferencia rojo–azul modifica el segundo armónico y el croma modifica el tercero. Un motivo espaciado sigue el centro de luminosidad de cada columna. La bruma es ruido sintetizado, no sonido grabado en el lugar.

**Decisiones musicales:** paleta de re menor pentatónica, amplitud y registro acotados, apariciones de metal sintético, colas y espacio. No se presenta esa paleta como tradición del lugar fotografiado. La luz aumenta la presencia sonora y la oscuridad retira voces, aunque una zona negra no produce necesariamente silencio total porque hay capas simultáneas y reverberación.

**Escucha propuesta:** aparición lenta → figura luminosa → apertura → desaparición. Es una pieza ambiental, la más cercana a escuchar directamente una organización visual.

## 02 · Revolución

**Foto:** andén con el rótulo Revolución, franja azul, dos personas en el centro y otras dos a los lados; imagen 16 de la [serie Streetphoto](https://www.abrahamesli.com/street).

**Por qué:** repeticiones arquitectónicas claras y pequeñas diferencias humanas dentro de una cuadrícula. La foto ya contiene una relación entre repetición y excepción.

**Regla ejecutada:** 16 columnas de la franja azul determinan los acentos metálicos. La energía de bordes determina acentos adicionales de percusión. Los cuatro centros humanos fueron anotados manualmente; su posición horizontal se convierte en entrada rítmica cuantizada y panorámica. No se usó un detector automático de personas ni se atribuyeron emociones como dato medido.

**Decisiones musicales:** 112 BPM, bajo sintético, percusión, voces FM y acordes en torno a re menor con extensiones. El tempo, la armonía y los grados asignados a cada personaje son autorales. 507 eventos programados en Tone.js; introducción, desarrollo, pausa, retorno y salida. La lectura urbana pertenece a la composición; no se usaron grabaciones del Metro ni se pretende reconstruir su ambiente.

**Potencial:** este camino permite que un visitante toque una zona de una foto y escuche la capa correspondiente. Tone.js es mi primera elección para la futura experiencia de galería, junto con un analizador visual que prepare sus datos.

## 03 · Detrás de la persiana

**Foto:** rostro atravesado por franjas horizontales, mirada hacia cámara y dominante amarilla/verdosa; imagen de [Stillphoto](https://www.abrahamesli.com/copia-de-metrocam).

**Por qué:** combina un patrón repetido muy medible con una figura parcialmente oculta. Permite probar una traducción narrativa sin abandonar completamente la estructura visual.

**Regla ejecutada:** la oscuridad media de ocho bandas horizontales determina los acentos de guitarra. La lectura de ocultamiento organiza aparición, interrupción y regreso del motivo. Se conserva en los datos qué elemento fue medido y qué elemento fue escrito por criterio.

**Decisiones musicales:** miniatura de cámara a 72 BPM, guitarra de acero, acordeón y bajo eléctrico; centro en re menor, una interrupción de semitono y cierre abierto. El motivo principal es propio. La interpretación remite al suspenso cinematográfico y al imaginario noir, sin identificar actor, película, fecha ni historia real del personaje. El acordeón es una elección de color, no evidencia de procedencia geográfica. La época de la escena queda sin asignar. La documentación del [BFI sobre film noir](https://www.bfi.org.uk/features/infographic-what-makes-film-noir) se consultó como marco visual general, no como autoridad para atribuir esta foto a un género.

**Motor real:** sfizz mediante pysfizz, con 124 eventos de nota y una partitura MIDI. Cada evento tiene inicio, duración, instrumento, altura, intensidad, posición y motivo de asignación. Se adaptó el registro de guitarra a las notas realmente disponibles en sus muestras.

## Qué demuestra la prueba y qué falta comparar

Las tres piezas demuestran tres procedimientos ejecutables, no que una herramienta sea musicalmente superior. Al cambiar simultáneamente foto y método no se pueden aislar sus efectos. Por eso se incluyen tres controles de ocho segundos con **el mismo mapeo, escala logarítmica sin cuantización y ganancia**, uno por fotografía. Sirven para contrastar qué cambia cuando sólo cambia la imagen. No son las tres obras principales.

El experimento siguiente para comparar métodos con más rigor sería una matriz 3 × 3: cada una de las tres fotos interpretada por cada camino, a volumen comparable. Para explorar la capa cultural, se mantendrían los mismos datos visuales y se cambiaría sólo el texto contextual verificado. No se produjo esa matriz de nueve obras en este encargo de tres piezas.

## Procedencia de instrumentos

- **Guitarra de acero:** Meta Open Sound / Meta Creative Audio, WAV de instrumentos CC0. Se conservaron las muestras efectivamente incluidas en el parche y sus hashes. No se usó el paquete de efectos Oculus, que tiene otra licencia. [Colección](https://github.com/facebookincubator/Meta-open-sound), [release](https://github.com/facebookincubator/Meta-open-sound/releases/tag/meta-steel-guitar-v1.0.0).
- **Acordeón Hohner:** Jeff Stauffer; procesamiento por michael02022; FreePats, CC0. [Ficha](https://freepats.zenvoid.org/Organ/accordion.html).
- **Bajo Yamaha RBX:** Andrea Biasior; integración de Roberto / FreePats, CC0. [Colección y licencia](https://github.com/freepats/electric-bass-YR).
- Las fotografías son de Abraham Esli, tomadas de las galerías indicadas para esta transformación expresamente solicitada. Se guardan originales descargados, URL y SHA-256. No se les asigna una licencia abierta.
- Las dos primeras piezas usan síntesis; no contienen grabaciones externas. La tercera contiene muestras de instrumentos, no fragmentos de canciones. Ninguna pieza se produjo con un servicio de texto-a-música.

Las bibliotecas instrumentales ya estaban disponibles en el SSD; se copió una selección al nuevo proyecto sin modificar los proyectos de origen. Las páginas y licencias se revisaron para esta entrega. El uso de instrumentos muestreados no equivale a una banda interpretando la obra en vivo.

## Entrega y revisión

- `Escuchar.html`: sala local con las tres fotos completas, reproductores y reglas. No está publicada.
- `audio/`: tres WAV de 24 bits / 48 kHz y tres MP3 de 320 kbps, de 64 segundos. Los archivos `*-raw.wav` son renders previos al ajuste de nivel.
- `production/`: análisis, composición y render ejecutados; Tone.js fijado a 15.1.22; eventos JSON y MIDI para las piezas 02 y 03; instrumentos SFZ de la pieza 03.
- `stems/01` y `stems/03`: capas alineadas y ajustadas con la misma ganancia de sus mezclas. La pieza 02 conserva el programa y los eventos; no se entregan stems separados de esa pieza.
- `analysis/`: características visuales, mapeos, controles y mediciones de los archivos exportados.
- `sources/`: fotografías originales, procedencia y manifiesto de muestras con hashes.

Se usó ganancia constante para aproximar las tres piezas a −21 LUFS, sin comprimir su evolución. Las mediciones exactas están en `analysis/audio-qa.json`. Se comprobaron duración, decodificación MP3, señal finita, ausencia de clipping, colas, compatibilidad mono y suma de stems donde existen. **No se realizó escucha directa por parte del agente:** la revisión artística, el balance perceptual y la eficacia emocional quedan pendientes de escucha con Abraham. Son maquetas ejecutadas, no masters aprobados.

## Reconstrucción

Ejecutar `production/compose.py`, después `production/render-tone.cjs` y por último `production/finish.py`. Los renders originales de capas se preservan en `production/stem-renders`; el último programa crea las entregas con su ganancia. Se utilizan Python 3.12, NumPy, SciPy, Pillow, SoundFile, imageio-ffmpeg, pysfizz, Node, Playwright y Chrome. Las rutas a dependencias existentes están explícitas en los programas; para otra máquina hay que adaptarlas o instalar versiones compatibles. El paquete de escucha incluye código, fotos, MP3 y WAV; las bibliotecas instrumentales y los stems se conservan en la carpeta completa del SSD.

La reproducción de los MP3 y de la sala local no requiere instalar estas herramientas. Los navegadores pueden pedir una acción de reproducción del usuario. No se activó ningún servicio de cómputo externo.

## Registro de decisión

RUN: ACS-RUN-20261030-FOTOGRAFIA-SONORA-001. TRACE LEVEL: 1. Régimen autoral. CAPABILITY LENS: ACS-21 / music_composer, contrato activo 1.1.0. Objetivo: investigar y producir tres pruebas audibles de fotografía a música por código. Autoridad: solicitud directa de Abraham. Decisión: separar datos medidos, anotaciones humanas y decisiones musicales, conservar fuentes y ejecutar tres motores. Resultado: tres maquetas y un control común, con revisión técnica. Incertidumbre: fecha y contexto narrativo de las fotos, evaluación auditiva pendiente. Siguiente movimiento: escuchar con Abraham y decidir qué correspondencias se sienten propias. No hubo delegación ni revisión independiente.
