... debo agregar que aunque el rendimiento se veía afectado, no es comparable a cómo se ve afectado el rendimiento en tarjetas de sonido normales.
En los dispositivos que usaban la puerta paralela, poner un sample en la salida implica ejecutar un simple OUT en el procesador, por optimización algunos programadores escribían en el mismo ejecutable, sin usar ningún tipo de buffer (Fast Tracker lo hacía así).
Pseudo código:
Y la rutina que genera el sonido escribía directamente en START + 1, sobre-escribiendo el valor 00
En cambio en las tarjetas de sonido normales lo que afecta es el protocolo para poner un byte en el parlante. No hay forma de escribir directamente, sino que todo se tiene que hacer a través de un buffer, lo que implica:
* Escribir en el buffer y mantener los indices necesarios para saber "donde voy"
* Programar una transferencia DMA hacia la tarjeta de sonido cuando el buffer esté listo
* Esperar el IRQ que se gatilla cuando la tarjeta de sonido dejó de procesar el buffer.
Eso hace que a medida que el buffer se achica, el tiempo ocupado en enviar el sonido a la tarjeta aumenta su proporción respecto al tiempo total. De todas formas se pueden usar técnicas de doble buffer, pero no eliminan por completo el problema.
El buffer es ideal para aplicaciones que quieren tocar música sin nada más, pero es más complejo de manejar para aplicaciones que necesitan funcionar en tiempo real.
Saludos