Sonido digital en el PC-Speaker

Como ya comente en el post anterior, hoy voy a hablar de como es posible reproducir sonido digital por el PC Speaker.

Ibm PC 5150

Ibm PC 5150

Cuando IBM estaba diseñando su modelo 5150, el primer PC de la historia, lo que tenia en mente era reducir costes y lanzar un computador economico y competitivo para la empresa:

Lotus123

Sonido? Un pitido para los errores y gracias!

Asi, el incluir en el mismo algun tipo de hardware de sonido especifico no estaba contemplado, eso subiria los costes de produccion.

En su lugar, conectaron un altavoz al timer interno, y mediante programacion del PIC 8254 para que generara una onda cuadrada que proporcionara sonido. Un sonido simple, realmente simple, pero que seria de sobra suficiente para indicar cuando hemos metido mal una celda de nuestra hoja de calculo.

5v y 0v, quien necesita mas?

5v y 0v, quien necesita mas?

Poco a poco, el PC fue acaparando mercado y con el fueron creciendo las necesidades ludicas del mismo. Como cabia esperar, sus capacidades sonoras estaban completamente desfasadas ya en su tiempo, limitandose a una serie de pitidos que para muchas personas resultaban poco menos que molesto:

Musica Silpheed

Con el tiempo fueron refinando el uso de este ‘pitador’, creando asi composiciones tan decentes como la intro del Maniac Mansion:

Maniac Mansion

pero aun asi, no estaban ni de lejos a la altura del resto de plataformas de juegos.

Con estas limitaciones en mente (un altavoz que solo permite dos estados, 0 y 5v, onda cuadrada), a alguien se le ocurrio una idea realmente ingeniosa.

Si pensamos en la mecanica de un altavoz veremos que este no es mas que un electroiman conectado a una membrana que vibra cuando se le aplica una corriente electrica en funcion del voltaje de la misma en un momento dado. En otras palabras, un PC Speaker se reduce a dos estados:

  1. 0v, en reposo. La membrana esta en su posicion original.
  2. 5v, en tension. La membrana esta en la posicion de tension maxima.

Pero, ¿que ocurre con los estados intermedios? El PC no es capaz de mostrar los estados 1v, 1.5v, 2v, 2.5v … por la limitacion del hardware en si. Pero el altavoz si 🙂

Solo hay que medir el tiempo que tarda la membrana en pasar de reposo a tension total y dividirlo en fracciones para representar esos estados que necesitamos.

Asi, reprogramando el timer, haciendo que nos avise (saltando una Interrupcion hardware) cada una de esas fracciones, conseguiremos poner el valor especifico en cada momento dado para que el resultado no sea otro que un sonido digital.

El resultado creo que no puede ser mejor:

Aspar GP Master

No obstante esta forma de reproducir sonido tiene sus desventajas, y es que el tiempo de CPU necesario para calcular el momento exacto en el que reproducir cada muestra hace que quede poca potencia de proceso para el resto de tareas, tales como mostrar cosas por pantalla.

Aun asi, podemos ver autenticas joyas de la programacion, que hacen uso intensivo de esta tecnica, y no por ello ralentizan la ejecucion del programa, como comentaba en el anterior post del Digger.

Con la llegada de sistemas mas potentes (>8mhz) se pudo emplear esta tecnica de sonido de forma mas generalizada, muestra de ello es que algunas empresas decidieran hacer suya esta tecnica y patentandola. Access Software llamo a esta tecnica ‘Real Sound’, y lo lanzo con su nuevo juego, Crime Wave:

Sea como fuere, las tarjetas de sonido ya estaban en el mercado, con lo que el ‘Real Sound’ paso casi desaparcebido, siendo la tecnica usada durante algunos años mas sin problemas.

4 pensamientos en “Sonido digital en el PC-Speaker

  1. estupendo reportaje, muy curioso lo de los estados del speaker, es algo parecido a la tecnica usada en el spectrum para conseguir la “polifonia”, la cuestion ¿es en cual de los dos sistemas se implemento antes?

  2. Illo, está genial la idea, leí por ahí, (creo de cuando portaste el duke nukem al PC-XT) que John Carmack quiso hacer una librería con este tipo de sonido para Duke Nukem 3d, pero que abandonó la idea.

    La verdad es que mola un huevo y está muy bien pensando, me recuerda a mi cuando se me rompe una cuerda, siempre intento seguir tocando, ya que al enfrentarte a una limitación, te fuerzas a encontrar un camino diferente =)

  3. A mi también me recordó a la conferencia de Gominolas donde explicaba esa técnica para el Spectrum.

    Es alucinante ver cómo se resolvian las cosas cuando había tantas limitaciones técnicas.

    Yo recuerdo cuando llegó a mis “discos” un reproductor de “wav” para XT, eran segmentos de segundos de música, y la PC quedaba TOTALMENTE muerta mientras los reproducía (ahora entiendo porqué!!) y en su momento fueron el alucine, aunque mas como una curiosidad que por su utilidad…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *