Probablemente casi todos saben que con el lanzamiento de Windows Vista en 2007, seguido por todas las versiones posteriores de Windows, la API de sonido DirectSound3D fue eliminada de Windows. En su lugar, se comenzaron a utilizar nuevas APIs como XAudio2 y X3DAudio. Como resultado, los efectos de sonido EAX (efectos de sonido ambiental) se hicieron inaccesibles en los juegos antiguos. En este artículo, explicaré cómo devolver DirectSound3D/EAX a todos los viejos juegos que soportan estas tecnologías al jugar en Windows 7/8/10. Por supuesto, los jugadores experimentados ya lo saben, pero tal vez este artículo sea útil para algunos.
Los juegos antiguos no han quedado en el olvido, por el contrario, son muy demandados tanto por usuarios de generaciones mayores como por los más jóvenes. Los juegos antiguos se ven mejor en monitores modernos de alta resolución, y para muchos de ellos se lanzan mods que mejoran texturas y shaders; sin embargo, al principio hubo problemas con el sonido. Con el lanzamiento de la siguiente generación, Windows Vista, después de Windows XP, los desarrolladores de Microsoft decidieron que DirectSound3D estaba moralmente obsoleto: tenía una limitación a 6 canales de sonido, no soportaba compresión de sonido y dependía del procesador, por lo que fue reemplazado por XAudio2/X3DAudio. Y dado que la tecnología EAX de Creative no era una API independiente, como lo fue en su momento A3D de Aureal, sino una mera extensión de DirectSound3D, las tarjetas de sonido de Creative quedaron fuera de lugar. Si no se utilizan envolturas de software especiales, al jugar en Windows 7/8/10 en juegos antiguos, los elementos de menú que incluyen EAX no estarán activos. Y sin EAX, el sonido en los juegos no será tan rico, envolvente y posicional.
Para resolver este problema, la empresa Creative desarrolló un programa wrapper llamado ALchemy, que redirige las llamadas de DirectSound3D y EAX a la API multiplataforma OpenAL. Sin embargo, este programa funciona oficialmente solo con algunas tarjetas de sonido de Creative y no con todos los modelos. Por ejemplo, la moderna tarjeta Audigy Rx, que cuenta con un procesador DSP hardware CA10300, no funciona oficialmente. Para los propietarios de otras tarjetas de sonido, como la integrada Realtek, es necesario utilizar el controlador de software Creative Sound Blaster X-Fi MB, que tiene un costo. También se puede intentar con el programa nativo 3DSoundBack, pero este no fue terminado por la compañía Realtek — se quedó en una versión beta, funciona mal y no con todos los chips. Sin embargo, hay una mejor opción, es más fácil de usar y gratuita.
Primer método
Comenzaré con las tarjetas de sonido de la compañía ASUS. Las tarjetas de sonido ASUS DGX/DSX/DX/D1/Phoebus están basadas en chips de C-Media e incluso los chips ASUS AV66/AV100/AV200 son los mismos chips de C-Media renombrados. En las especificaciones de estas tarjetas se indica que soportan EAX 1/2/5. Todos estos chips heredaron de su predecesor CMI8738 el bloque DSP de EAX 1/2, y EAX 5 ya es completamente software.
Los propietarios de las tarjetas de la serie Xonar tienen suerte, todos han visto el botón GX en el panel del controlador, pero tal vez no todos saben qué hace. Mostraré mediante capturas de pantalla del programa AIDA64, así se ve la pestaña de sonido DirectX cuando el botón no está activo y para los propietarios de tarjetas de sonido integradas Realtek en Windows 7/8/10:

Todos los buffers de sonido son iguales a cero, todas las API están inactivas. Pero justo después de activar el botón GX, vemos

Es muy conveniente, no es necesario ejecutar programas adicionales como Creative ALchemy y copiar el archivo dsound.dll en cada carpeta de juego. Surge una gran pregunta, ¿por qué no hizo esto la empresa Creative en sus controladores? Además, en todos los nuevos modelos Sound Blaster Z/Zx/AE no utiliza el procesador DSP de hardware para procesar EAX, sino que lo hace de forma programática a través del controlador con algoritmos simplificados. Algunas personas creen que el procesamiento de sonido por software es suficiente, porque los modernos CPUs son mucho más potentes que los procesadores de tarjetas de sonido de hace 10 años que procesaban el sonido de manera hardware. Esto no es así. Un CPU está optimizado para procesar comandos x86, mientras que un DSP procesa el sonido mucho más rápido que el procesador central, al igual que una tarjeta gráfica produce la rasterización más rápido que el CPU. El procesador central es suficiente para algoritmos no complejos, pero una buena reverberación con múltiples fuentes de sonido consumiría demasiados recursos incluso de un CPU potente, lo que afectaría el FPS en los juegos. Esto ya lo ha reconocido Microsoft, y ha reintegrado el soporte para el procesamiento de sonido por procesadores DSP en Windows 8, así como Sony, que ha agregado un chip separado en su consola PS5 para el procesamiento de sonido 3D.
Segundo método
Esta opción es adecuada para los usuarios de la tarjeta de sonido integrada en la placa base, que son la mayoría. Hay un proyecto llamado — es una emulación programática de DirectSound3D y EAX utilizando OpenAL (OpenAL debe estar instalado en el sistema) que no requiere aceleración de hardware. Si su chip de sonido tiene alguna función de hardware para el procesamiento de sonido, se utilizarán automáticamente. El programa funciona tan bien que a través de él EAX funcionó en todos mis juegos antiguos donde hay una casilla de EAX en la configuración. Así se ve la ventana de AIDA64 si copias los archivos DSOAL en la carpeta del programa:

Si esto no sucede y tienes una imagen como en la primera captura de pantalla, significa que el nativo Windows dsound.dll no permite interceptar la API, como fue mi caso. Entonces, este método ayudará: tendrás que iniciar desde algún tipo de imagen de Windows Live-CD y eliminar el archivo dsound.dll con la ayuda de la utilidad Unlocker (haciéndo previamente una copia por si acaso) del directorio C:WindowsSysWOW64 y reemplazarlo por el mencionado dsoal-aldrv.dll y dsound.dll. Hice esto y tanto Windows como todos los juegos funcionaron sin problemas, y es incluso más cómodo: no es necesario copiar estos archivos en las carpetas de los juegos cada vez; en el peor de los casos, se pueden devolver a su lugar original. dsound.dll Este método es adecuado solo si no vas a utilizar otras tarjetas de sonido de ASUS o Creative, ya que en este caso DirectSound3D solo funcionará a través de DSOAL y no con el controlador original o ALchemy.
Puedes escuchar DSOAL en este video:

→ Descargar
Comparando cómo suena EAX en diferentes tarjetas de sonido, me sorprendió descubrir que en el Realtek integrado suena mejor que en las ASUS o en mi Audigy Rx. Si lees las hojas de datos, prácticamente todos los chips Realtek soportan DirectSound3D/EAX 1&2. Al ejecutar AIDA64 desde Windows XP se puede ver:

Resulta que los Realtek, a diferencia de las tarjetas de sonido ASUS y Creative, también soportan algún tipo de I3DL2 (no en cada hoja de datos de Realtek se menciona esto). I3DL2 (Interactive 3D Audio Level 2) es un estándar industrial abierto para trabajar con sonido 3D interactivo, una extensión para DirectSound3D que trabaja con reverberación y oclusión. Es, en esencia, un análogo de EAX, pero suena más agradable: reverberación más placentera en los juegos de pasos cuando un personaje corre por una cueva o castillo, un sonido envolvente más realista en los espacios. Por lo tanto, si un juego antiguo funciona en Windows XP, yo juego solo en XP, tal vez el motor de sonido pueda aprovechar I3DL2. DSOAL, aunque es un proyecto abierto y cualquiera puede mejorarlo, nunca podrá aprovechar I3DL2, ya que OpenAL no trabaja con I3DL2, sino solo con EAX 1-5. Pero hay una buena noticia: desde Windows 8, I3DL2 está incluido en . Así que el sonido en los nuevos juegos bajo Windows 10 será mejor que en Windows 7.
Y por último, quiero recordar que todas estas tecnologías de sonido 3D fueron desarrolladas para auriculares; con dos altavoces difícilmente escucharás 3D. Para disfrutar de un sonido detallado, los auriculares de nivel SVEN AP860 no son adecuados, entre los auriculares económicos necesitas empezar con Axelvox HD 241 ya habrá una diferencia con SVEN AP860, como el cielo y la tierra. Así que más o menos así deberías orientarte.
Fuente: habr.com
