El ingeniero de hardware que publica bajo el usuario schlae subió a GitHub el proyecto BeavisUltrasound, un clon open source completo de la Gravis Ultrasound PnP, la legendaria tarjeta de sonido ISA de los años 90 basada en el chip AMD InterWave AM78C201. El repositorio no es un simple homenaje: incluye el esquemático completo en KiCad, el diseño de PCB de 4 capas y, lo más difícil de conseguir, el código fuente reversado del GAL que controla la lógica auxiliar de la tarjeta.
A diferencia de otros clones que circulan en foros de retrocomputación, BeavisUltrasound documenta hasta el bit a bit el contenido del EEPROM que configura el Plug and Play del chip InterWave, publicado bajo la licencia de hardware abierto CERN-OHL-P-2.0.
TL;DR
- El desarrollador schlae publicó BeavisUltrasound, un clon open source de la Gravis Ultrasound PnP en GitHub.- El repositorio incluye esquemático completo en KiCad, PCB de 208x107mm (4 capas) y el GAL reversado del hardware original.- El proyecto reversó el EEPROM 93C66 que configura el chip AMD InterWave AM78C201 vía Plug and Play.- El script pnp_reverse.py invierte el orden de los 16 bits de cada palabra del archivo ultrasound_pnp.bin.- La placa aún no fue fabricada ni probada: "Build this board at your own risk", advierte el README.- El proyecto se publica bajo licencia CERN-OHL-P-2.0, una licencia de hardware abierto de tipo permisivo.- El GAL U14, grabado en un 16V8 desde gr_gal.jed, controla el buffer IDE para la función opcional de CD-ROM.- El repositorio acumula 22 estrellas y 1 fork en GitHub al momento de esta publicación.
Introducción
La Gravis Ultrasound PnP fue una de las tarjetas de sonido ISA más queridas por la comunidad de trackers y demoscene de los años 90, gracias a su síntesis por muestras (wavetable) integrada en el chip AMD InterWave AM78C201. Tres décadas después, encontrar una unidad funcional es cada vez más difícil, y los pocos ejemplares que circulan en el mercado de segunda mano suelen tener componentes degradados o directamente inoperables. El proyecto BeavisUltrasound busca resolver ese problema documentando la tarjeta al nivel de esquemático, PCB y lógica programable, algo que ningún clon anterior había hecho de forma completa.
Qué pasó
El usuario de GitHub schlae publicó el repositorio BeavisUltrasound, descrito en su propio README como una réplica open source de la Gravis Ultrasound PnP. A diferencia de un simple reverse engineering de la placa base, el repositorio incluye el archivo de esquemático en formato KiCad (BeavisUltrasoundPnp.kicad_sch), el diseño de PCB (BeavisUltrasoundPnp.kicad_pcb) y su exportación en PDF, además de los archivos de librería de símbolos necesarios para reproducir el diseño desde cero.
El repositorio también incluye tres artefactos poco comunes en un clon de hardware: el contenido binario del EEPROM de configuración Plug and Play (ultrasound_pnp.bin), el archivo JEDEC del GAL de la tarjeta (gr_gal.jed) y un script en Python (pnp_reverse.py) que documenta cómo se invierte el orden de bits al programar ese EEPROM. Al momento de esta publicación, el repositorio acumula 22 estrellas y 1 fork en GitHub, con un único commit inicial que subió todos los archivos de una vez.
El propio autor advierte en el README que la placa todavía no fue fabricada ni probada: "I have not generated the fab package since I have not actually fabricated the board and tested it for functionality. Build this board at your own risk", escribió schlae. Es una aclaración poco frecuente en un proyecto de hardware abierto, pero honesta: el diseño existe y es descargable, pero su funcionalidad real todavía no está validada por el propio creador.
Contexto e historia de la Gravis Ultrasound PnP
Para entender por qué un clon de esta tarjeta específica genera interés hoy hay que volver a la guerra de tarjetas de sonido de la era ISA. Mientras la línea Sound Blaster de Creative Labs dominaba el mercado con síntesis FM, Advanced Gravis apostó por integrar la síntesis por muestras directamente en la tarjeta, con memoria RAM propia para cargar instrumentos digitalizados. Esa arquitectura la convirtió en la favorita de la escena de trackers (Scream Tracker, Impulse Tracker) porque el sonido resultante se acercaba mucho más a la fidelidad de un sampler dedicado que a la síntesis FM de sus competidoras.
La versión PnP simplificó radicalmente el diseño original al concentrar casi toda la lógica de síntesis, mezcla y control MIDI en un solo circuito integrado: el AMD InterWave AM78C201. Esa integración redujo el conteo de componentes de la tarjeta, pero también la hizo dependiente de un solo chip que, como toda la familia de silicio ISA de esa época, dejó de fabricarse hace mucho tiempo. Es precisamente esa dependencia de un componente descontinuado la que explica por qué un proyecto como BeavisUltrasound documenta tanto la parte analógica como la lógica programable, pero no puede resolver el problema de fondo: sin unidades de AM78C201 recuperadas de tarjetas originales, la réplica no tiene corazón.
El chip AMD InterWave AM78C201 concentra casi toda la síntesis wavetable original.
Detalles técnicos y rendimiento
El corazón de la BeavisUltrasound sigue siendo el AMD InterWave AM78C201, el mismo chip de la tarjeta original. Todo lo demás en el diseño existe para alimentarlo, configurarlo y exponer sus entradas y salidas al bus ISA. La tarjeta física mide 8.2 x 4.2 pulgadas (208 x 107 mm) y usa una PCB de 4 capas; el propio autor sugiere terminación ENIG para los dedos de contacto del borde en lugar de oro duro, que en sus palabras es "ludicrously expensive" (absurdamente caro) para esta aplicación.
La memoria de muestras (sample ROM) vive en la posición U8, que en la tarjeta original es un chip propietario IW78C21M1 de 1 MB. Si ese componente no aparece disponible, el README propone una alternativa práctica: descargar el contenido de la ROM de muestras que circula en la comunidad de preservación y grabarlo en un EPROM genérico 27C800, instalado preferentemente en un zócalo en la posición U80.
La configuración Plug and Play del chip vive en un EEPROM 93C66 (posiciones U6/U60), que debe programarse con el contenido exacto del archivo ultrasound_pnp.bin usando un programador como el TL866 o equivalente. Acá está el detalle más interesante del repositorio: el orden de los bits dentro del EEPROM está invertido, 16 bits a la vez. El propio README lo ilustra con un ejemplo: los primeros dos bytes reales son 1E 56, pero se almacenan físicamente como 6A 78. El script pnp_reverse.py documenta exactamente esa transformación, aunque no es estrictamente necesario para programar el chip si ya usás la utilidad original PNPMAP.EXE de Gravis/AMD.
La lógica detrás de esa inversión de bits es sencilla de reproducir en Python. Este primer ejemplo muestra la transformación mínima sobre una sola palabra de 16 bits:
def reverse16(value):
result = 0
for i in range(16):
if value & (1 0x6a78
Ejecutar esta función confirma el ejemplo del README: 0x1E56 reversado bit a bit da exactamente 0x6A78, el valor que efectivamente queda grabado en el EEPROM. El siguiente bloque aplica la misma lógica a un archivo binario completo, palabra por palabra, para generar el archivo listo para el programador:
import struct
def reverse16(value):
result = 0
for i in range(16):
if value & (1 **⚠️ Ojo:** el propio autor aclara que la placa nunca fue fabricada ni probada. No existe todavía un "fab package" generado, y construirla implica asumir el riesgo de encontrar errores no detectados en el esquemático o el ruteo del PCB.
> **💡 Tip:** si no necesitás la función de controladora IDE para CD-ROM, podés omitir por completo la programación del GAL U14 — esa lógica solo interviene en el puerto IDE, no en la síntesis de audio.
La réplica mide 208 x 107 mm y usa una PCB de 4 capas, según el repositorio.
flowchart TD
A["Bus ISA"] --> B["AMD InterWave AM78C201"]
B --> C["EEPROM 93C66 (config PnP)"]
B --> D["ROM de muestras U8"]
B --> E["Salida de audio analogica"]
A --> F["GAL U14"]
F --> G["Puerto IDE (CD-ROM)"]
subgraph Logica_programable
C
F
end
Para dimensionar qué representa exactamente este proyecto dentro de la familia Gravis Ultrasound, conviene comparar las tres variantes que un desarrollador podría considerar hoy:
VersiónCuándo usarlaVentajaLimitaciónGravis Ultrasound Classic (original)Coleccionismo y compatibilidad con software de época que depende del chip GF1 originalHardware original certificado por el fabricanteCada vez más escasa y cara en el mercado de segunda manoGravis Ultrasound PnP (original, AMD InterWave)Si ya tenés una unidad funcional y solo buscás repararlaTodo el sintetizador wavetable integrado en un solo chipProducción descontinuada hace décadas, sin stock nuevo del AM78C201BeavisUltrasound (réplica open source)Si querés fabricar tu propia unidad desde cero con documentación abiertaEsquemático, PCB y GAL completamente abiertos bajo CERN-OHL-P-2.0Diseño sin fabricar ni probar todavía; sigue dependiendo del AM78C201 original
## Cómo empezar (o probarlo)
Reproducir este proyecto no es una instalación de software convencional, pero el primer paso sí es idéntico en cualquier sistema operativo: clonar el repositorio y revisar los archivos de KiCad.
Windows (PowerShell)
git clone https://github.com/schlae/BeavisUltrasound.git
cd BeavisUltrasound
python pnp_reverse.py ultrasound_pnp.bin
macOS (Terminal)
git clone https://github.com/schlae/BeavisUltrasound.git
cd BeavisUltrasound
python3 pnp_reverse.py ultrasound_pnp.bin
Linux (Debian/Ubuntu)
sudo apt install git python3 -y
git clone https://github.com/schlae/BeavisUltrasound.git
cd BeavisUltrasound
python3 pnp_reverse.py ultrasound_pnp.bin
Con el repositorio clonado, KiCad (versión 7 o superior) permite abrir directamente `BeavisUltrasoundPnp.kicad_pro` para revisar el esquemático y el ruteo del PCB antes de mandarlo a fabricar. Como el autor no generó un paquete de fabricación (gerbers, drill files, pick-and-place), quien quiera construir la placa deberá exportarlo manualmente desde KiCad usando el plugin de fabricación de su proveedor de PCB preferido, prestando atención a las 4 capas y al acabado ENIG sugerido para los dedos de contacto.
Antes de soldar nada, hay dos componentes que conviene confirmar que existen en stock: el AM78C201, sin el cual la tarjeta no sirve, y, si se necesita la función de CD-ROM, un GAL de la familia 16V8 para grabar `gr_gal.jed`. Para la configuración PnP, el flujo es: programar el 93C66 con `ultrasound_pnp.bin` usando un TL866 (o equivalente), y verificar la escritura con el paso de "Verify" o lectura de comprobación que ofrece el propio software del programador, comparando el checksum del contenido leído contra el archivo original, byte a byte. Ese mismo paso de verificación aplica al GAL: después de grabar `gr_gal.jed`, la mayoría de los programadores de GAL permiten releer el patrón grabado y compararlo contra el archivo JEDEC fuente antes de instalar el chip en la placa.
## Impacto y análisis
El valor real de BeavisUltrasound no está en que alguien pueda comprar una Gravis Ultrasound PnP nueva mañana, porque el AM78C201 sigue descontinuado y el proyecto depende de conseguir unidades del chip rescatadas de tarjetas existentes. El valor está en que, por primera vez de forma pública, existe un esquemático completo, un PCB reproducible y el contenido programable (EEPROM y GAL) de una tarjeta que hasta ahora solo se documentaba de forma parcial en foros de retrocomputación. Eso convierte a un hardware cerrado y semiperdido en un diseño abierto bajo licencia CERN-OHL-P-2.0, que cualquiera puede modificar, fabricar o auditar sin pedir permiso.
El proyecto también es un caso de estudio honesto sobre los límites del open source hardware aplicado a la preservación: documentar el diseño no resuelve la escasez del componente central. Es la misma tensión que enfrentan otros proyectos de clonación de hardware retro cuando el cuello de botella no es la lógica digital, sino un chip propietario que ya no se fabrica. Quien evalúe construir esta placa debe entender que está resolviendo la mayor parte del problema (diseño, PCB, configuración) pero no la parte más difícil: conseguir el AM78C201.
> **💭 Clave:** reversar el GAL y el EEPROM de configuración es, en la práctica, más valioso a largo plazo que el propio PCB — el ruteo se puede rediseñar, pero la lógica programable de un chip descontinuado, si no se documenta, se pierde para siempre.
## Qué sigue
El repositorio, con un único commit y sin releases publicados todavía, está en una etapa temprana: el propio autor no ha confirmado si construirá una unidad física para validar el diseño. Lo más probable, siguiendo el patrón de otros proyectos de hardware abierto en GitHub, es que la validación real llegue de la comunidad: alguien con acceso a una Gravis Ultrasound PnP original para comparar señales, o con stock del AM78C201, terminará fabricando la primera unidad y reportando qué ajustes hicieron falta en el esquemático o el PCB. Hasta que eso ocurra, BeavisUltrasound sigue siendo, en palabras del propio README, un diseño para construir "bajo tu propio riesgo".
📖 Resumen en Telegram: [Ver resumen](#)
## Preguntas frecuentes
### ¿Qué es la Gravis Ultrasound PnP?
Es una tarjeta de sonido ISA de los años 90 fabricada por Advanced Gravis, célebre por su síntesis wavetable integrada en el chip AMD InterWave AM78C201, muy usada por la escena de trackers de la época.
### ¿Necesito el chip AM78C201 para construir la BeavisUltrasound?
Sí. Es el componente central del diseño y sigue descontinuado; el proyecto documenta el resto de la tarjeta pero no resuelve la escasez de ese chip específico.
### ¿La placa BeavisUltrasound ya fue fabricada y probada?
No. El propio autor, schlae, aclara en el README que no generó el paquete de fabricación ni construyó ni probó una unidad física todavía.
### ¿Qué licencia tiene el proyecto?
CERN-OHL-P-2.0, una licencia de hardware abierto de tipo permisivo que permite modificar, fabricar y redistribuir el diseño.
### ¿Necesito programar el GAL si no voy a usar la función de CD-ROM?
No es obligatorio. El GAL U14 solo controla el buffer y la selección de unidades del puerto IDE; la síntesis de audio no depende de él.
### ¿Dónde consigo la ROM de muestras para el chip U8?
El README sugiere obtener el contenido de la ROM de muestras original y grabarlo en un EPROM genérico 27C800 si el chip propietario IW78C21M1 no está disponible.
## Referencias
- [github.com/schlae/BeavisUltrasound](https://github.com/schlae/BeavisUltrasound) — repositorio principal del proyecto, con esquemático, PCB, GAL y binario del EEPROM PnP.- [README.md del repositorio](https://github.com/schlae/BeavisUltrasound/blob/main/README.md) — notas de fabricación y ensamblaje escritas por el autor, schlae.- [Esquemático en PDF](https://github.com/schlae/BeavisUltrasound/blob/main/BeavisUltrasoundPnp.pdf) — exportación completa del esquemático de KiCad.- [Licencia CERN-OHL-P-2.0](https://github.com/schlae/BeavisUltrasound/blob/main/LICENSE) — términos bajo los que se publica el diseño de hardware.- [Gravis Ultrasound — Wikipedia](https://en.wikipedia.org/wiki/Gravis_Ultrasound) — contexto histórico sobre la tarjeta de sonido original y su lugar en la escena de trackers de los 90.
📱 **¿Te gusta este contenido?** Únete a nuestro canal de Telegram [@programacion](https://t.me/programacion) donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.
Top comments (0)