La física tras los pitidos del PC Speaker

PC Speaker

Si utilizaste un PC durante los años ochenta o principios de los noventa, probablemente recuerdes el sonido característico del PC Speaker, aquel pequeño altavoz interno que tenía fama de producir únicamente pitidos; pitidos al arrancar, pitidos de error, pitidos en los videojuegos y, en general, pitidos para cualquier cosa que el ordenador quisiera comunicar al usuario. Comparado con una Sound Blaster o una AdLib, era poco más que una broma tecnológica.

Lo sorprendente es que, técnicamente, aquel insignificante altavoz era capaz de hacer bastante más de lo que parecía. De hecho, algunos programadores consiguieron reproducir voces digitalizadas, efectos de sonido complejos e incluso fragmentos musicales que parecían completamente imposibles para un dispositivo tan rudimentario. Y lo hicieron sin añadir hardware adicional.

Para entender el truco hay que comprender primero cómo funcionaba realmente el PC Speaker. A diferencia de una tarjeta de sonido moderna, no podía generar muestras digitales de audio ni reproducir varios canales simultáneamente. Estaba conectado a un temporizador programable Intel 8253 o 8254 presente en la placa base del PC, el cual generaba una onda cuadrada que encendía y apagaba el altavoz a una frecuencia determinada. Si configurabas una frecuencia de 440 Hz obtenías una nota La; si seleccionabas otra frecuencia distinta obtenías otra nota diferente.

PC Speaker

Por eso los primeros juegos de PC sonaban como sonaban, porque el ordenador simplemente ordenaba al temporizador generar una frecuencia concreta y el altavoz vibraba siguiendo ese patrón. El resultado, pues, era esa onda cuadrada de la que hablamos, muy simple, rica en armónicos y bastante desagradable para los estándares actuales. Sin embargo, para una máquina de principios de los ochenta era una solución extraordinariamente barata y eficaz.

La limitación más importante era evidente, y es que el PC Speaker sólo conocía dos estados: encendido o apagado. No existían niveles de volumen, ni mezcla de sonidos, ni tonalidades complejas. A primera vista parecía imposible reproducir voz humana utilizando un dispositivo tan binario. Pero ahí entró en juego la creatividad de los programadores.

Algunos desarrolladores descubrieron que el cono del altavoz no respondía instantáneamente a los cambios eléctricos, sino que, como cualquier sistema mecánico, poseía una cierta inercia física. Si se activaba y desactivaba lo suficientemente rápido, el cono no llegaba a completar todo su recorrido y adoptaba posiciones intermedias, en otras palabras, aunque electrónicamente sólo existieran dos estados, mecánicamente podían obtenerse desplazamientos parciales. La técnica consistía en controlar aquel temporizador miles de veces por segundo y, en lugar de generar una simple nota musical, el programa modificaba constantemente la duración de los impulsos enviados al altavoz, cambiando con enorme rapidez el tiempo durante el cual permanecía activado o desactivado y haciendo posible simular diferentes amplitudes de señal. Este principio es muy parecido al que utilizan ciertas técnicas modernas de modulación por ancho de pulsos o PWM.

PC Speaker

Desde el punto de vista matemático, lo que se hacía era aproximar una onda analógica mediante una sucesión extremadamente rápida de impulsos digitales. Cuanto mayor era la frecuencia de actualización, más convincente resultaba la ilusión acústica y, además, el oído humano actuaba como un filtro natural, integrando todas esas pequeñas variaciones en una forma de onda aparentemente continua. Por supuesto, aquello tenía un precio, y es que reproducir audio digitalizado mediante el PC Speaker consumía una cantidad enorme de tiempo de CPU. Mientras una Sound Blaster disponía de hardware específico para manejar el sonido, aquí era el propio procesador quien debía alimentar constantemente el flujo de datos y, por ejemplo, durante la reproducción de voz, una parte importante de la potencia de cálculo del ordenador quedaba dedicada exclusivamente a producir sonido.

¿Y por qué consumía tantos recursos? Pues básicamente por dos aspectos. El primero era la generación de interrupciones masivas (high overhead), pues para simular diferentes niveles de voltaje, la CPU tenía que cambiar el estado del altavoz (encendido/apagado) a frecuencias extremadamente altas (por ejemplo, a 8 kHz o a 11 kHz para audio digital de baja calidad). Esto significaba que el procesador debía interrumpir lo que estaba haciendo miles de veces por segundo solo para actualizar un bit del puerto. El segundo aspecto, se refería a los ciclos de reloj desperdiciados, ya que los procesadores de la época (como el Intel 8088 a 4,77 MHz del IBM PC original) no tenían potencia suficiente para procesar los gráficos de un juego y, al mismo tiempo, calcular los tiempos exactos de la onda de sonido. La CPU se veía obligada a entrar en bucles de espera (busy-waiting) midiendo los pulsos de máquina exactos para que el audio no se distorsionara, y los desarrolladores tenían que entrelazar el código del juego con el código de sonido de forma milimétrica, haciendo que cada instrucción de renderizado gráfico se calculara para que durara exactamente los ciclos de reloj idóneos entre pulso y pulso del altavoz.

Todo ello se traducía en congelaciones de juegos y ralentizaciones extremas la mayoría de las veces. Muchos usuarios descubrieron estas capacidades y sufrieron sus consecuencias gracias a juegos y demostraciones técnicas de la época en títulos como Castle Wolfenstein (versión de PC, en 1984), Space Quest III: The Pirates of Pestulon (1989), Pinball Dreams (1992), algunas conversiones de Prince of Persia (1989) o Street Fighter II para PC (1992). También diversas demos de la escena PC y numerosos programas shareware lograron reproducir voces sorprendentemente reconocibles utilizando únicamente el altavoz interno; escuchar una frase hablada salir de aquel pequeño transductor era casi magia para quien entendía las limitaciones del sistema. En España, el ejemplo más notable fue el de La abadía del crimen (1987), con su canto religioso del Ave María durante los rezos o aquel «Pirata, pirata…» enlatado cuando el juego detectaba que estabas ejecutando una copia ilegal o alterada.

La abadía del crimen

Lo más fascinante es que el truco no explotaba una característica diseñada expresamente para ello, pues los ingenieros de IBM nunca imaginaron que aquel humilde altavoz destinado a emitir códigos de error terminaría reproduciendo frases digitalizadas, sino que fue una consecuencia inesperada de combinar física, electrónica y una alta cantidad de ingenio. Los desarrolladores observaron las limitaciones del hardware, comprendieron cómo vibraba realmente el altavoz y encontraron una manera de engañar tanto al dispositivo como al oído humano.

Hoy, cualquier teléfono móvil barato incorpora circuitería de audio millones de veces más sofisticada. Sin embargo, resulta difícil no sentir cierta admiración por aquellos programadores capaces de arrancar voces humanas a un componente diseñado básicamente para hacer «bip». Porque la historia del PC Speaker es, en el fondo, una de las historias más representativas de la informática clásica, aquella que dice que cuando el hardware era insuficiente, alguien siempre encontraba una forma ingeniosa de hacer lo imposible.

1 comentario a “La física tras los pitidos del PC Speaker”

Escribe tu comentario

V I R I I

Un thriller ciberpunk retrotecnológico de conspiraciones, resistencia digital y ciudades ahogadas en neón, humedad rancia y corrosión.

[Jonathan Préstamo Rodríguez]

COMPRAR EN AMAZON

Prontuario Anarquista de Resistencia Digital: Manifiesto de hacktivismo pasivoagresivo

Vivimos en una época donde cada clic deja rastro, cada palabra se convierte en dato y cada gesto digital puede ser observado, analizado y utilizado. En este escenario, la libertad ya no depende sólo de las leyes o de las calles, también se juega en las redes, en los servidores y dentro de los algoritmos.

[Jonathan Préstamo Rodríguez]

COMPRAR EN AMAZON