DMX fue una biblioteca de sonidos escrita por Paul Radek de Digital Expressions Inc. que fue utilizada en el motor de Doom para proporcionar sonido y reproducción de música bajo DOS. El controlador estaba desarrollado muy probablemente en lenguaje C y ensamblador Intel, aunque esto no se ha verificado.
Fue escrito para Cygnus Studios para potenciar el audio de sus juegos The Second Sword y Raptor: Call of the Shadows.
Características[]
- Soporte de efectos de sonido para altavoz del PC.
- Soporte GSS para efectos de sonido MIDI.
- Soporte para tarjetas de sonido Gravis Ultrasound y Sound Blaster compatibles para salida de audio digital estéreo de hasta 8 canales. La salida fue estrictamente a una frecuencia de muestreo de 11.025 Hz hasta la versión de la biblioteca utilizada en Doom v1.4, momento en el que fue aumentada a 22.050 Hz.
- Soporte para General MIDI, tabla de ondas Gravis y reproducción de música OPL compatible con AdLib, con una opción especial para OPL3.
- Soporte primitivo para sonido envolvente analógico con salida estéreo desfasada.
Uso en Doom[]
Las referencias a DMX se pueden encontrar en Doom (aunque no en el juego directamente): una variable de entorno DMXOPTIONS permite que se establezcan varias opciones de sonido, y el lump DMXGUS contiene datos de mapeo de instrumentos para el uso de la tarjeta Gravis UltraSound.
DMX da soporte a sus propios formatos de efectos de sonido nativos, dos de los cuales se utilizan en Doom:
- El formato 0 se utiliza para efectos de sonido de los altavoces del PC
- El formato 3 se utiliza para sonidos digitalizados.
Los formatos 1 y 2 están reservados para los efectos de sonido basados en MIDI, conocidos en la biblioteca DMX como GSS. DMX también puede reproducir efectos de formato Microsoft WAVE, pero Doom no utiliza el API requerido para ello.
Hasta la versión utilizada en Doom v1.5, DMX sólo acepta lumps de música en formato MUS. Después de ese punto, integró su propio conversor MIDI-MUS. Sin embargo, debido al proceso de conversión, las MIDIs que se deseen reproducir de esta manera están sujetos a todas las limitaciones del formato MUS, en particular, no deben exceder de 64 KB de tamaño después de la conversión ni pueden utilizar más de nueve canales.
Problemas[]
Diversas fuentes dan a entender que los programadores de Id Software estaban insatisfechos con la biblioteca DMX. John Romero fue citado en un post del grupo de noticias alt.games.doom como habiendo llamado a Radek un "imbécil", "idiota de sonido" e "incompetente". Carmack más tarde describió el uso de DMX como "un error" en las notas de la versión para el código fuente de Doom.
Producto de lo anterior, varias características de DMX se rompieron y luego se corrigieron durante el desarrollo de Doom, incluyendo cuestiones espurias con alto IRQ y pérdida temporal de soporte para Ultrasound por completo. Un cambio a la API de la función SFX_PlayPatch también dio lugar a la pérdida de variación de tono aleatoria para efectos de sonido, aunque los codificadores de id Software comparten culpa por este problema.
El uso de esta biblioteca externa hizo que, cuando el código fuente de Doom fue liberado más tarde, sólo pudo hacerse público el código fuente de la portación Linux Doom, ya que la divulgación de las API DMX con derechos de autor podría haber dado lugar a una demanda por violación.
A pesar de la falta de voluntad de Id para dar cualquier código relacionado con DMX, Raven Software tomó una actitud mucho más relajada con el tema, y el código relacionado con el DMX se incluye con las versiones de código de Heretic y Hexen (aunque no la biblioteca DMX en sí).
El único juego sin el motor de Doom que se sabe ha utilizado la biblioteca DMX es el ya mencionado Raptor: Call of the Shadows de Cygnus Studios.