Skip to content

Apendice F. El generador de sonido. Notas tecnicas

sevioptero edited this page Jan 15, 2021 · 1 revision

Apéndice F

El generador de sonido: notas técnicas

Estas notas van dirigidas a los lectores más interesados en detalles técnicos y a aquellos que quieran acceder al sistema operativo del ordenador Amstrad. Por supuesto, no dan una revisión completa del contenido de las ROM, sino solamente unas sugerencias para quienes deseen descifrar las complejidades del generador de sonidos.

El generador incluido en el Amstrad es el circuito integrado General Instruments AY-3-8912, que genera ondas cuadradas. El tono generado depende del período de la onda, el cual varía a incrementos de 8 microsegundos.

Las envolventes de volumen se pueden controlar por programa o directamente por los circuitos (por hardware). El control por programa ha sido el objeto de este libro. La alternativa es acceder directamente a los registros 11, 12 y 13 del generador. La selección de canales se realiza mediante los registros de control de amplitud (8 a 10). Si se va a utilizar una envolvente en el canal seleccionado, se debe poner a 1 el bit 4 del correspondiente registro de control de amplitud. Si, por el contrario, este bit está a 0, el volumen será controlado por los bits 0 a 3 del registro.

El registro 13 (bits 0 a 3) controla la forma de la envolvente. Por hardware se pueden controlar ocho envolventes. Sus características son las siguientes:

  • 8: Ataque rápido y caída suave, repetidos.
  • 9: Ataque rápido y caída suave, seguida de sostenimiento a amplitud cero.
  • 10: Ataque rápido, seguido de caídas y ataques suaves repetidos.
  • 11: Ataque rápido, caída suave, ataque rápido y sostenimiento a amplitud máxima.
  • 12: Ataque suave y caída rápida, repetidos.
  • 13: Ataque suave y sostenimiento a amplitud máxima.
  • 14: Ataque y caída rápidos, repetidos.
  • 15: Ataque suave, caída rápida y sostenimiento a amplitud cero.

El período de la envolvente determina la duración de las pendientes. El período es un número de 16 bits; los 8 bits menos significativos se guardan en el registro 11; los restantes, en el 12. Estos períodos son los intervalos de tiempo entre etapas de la envolvente; se miden en unidades de 128 microsegundos.

El registro 7 determina si se ha de incluir ruido en el sonido. Los bits 0 a 2 inhiben el tono en los canales A a C; los bits 3 a 5 inhiben el ruido en los canales A a C.

El generador de ruido produce un ruido pseudoaleatorio; su registro es el 6. Los registros 0 a 5 son los generadores de tono. Cada canal tiene dos registros de tono: uno es el de aproximación y el otro el de sintonía fina.

A continuación damos una lista de las direcciones de llamada de algunas rutinas del sistema operativo que pueden tener interés para el usuario.

Dirección Función
BCA7 Inicializa el generador de sonido y borra todas las colas.
BCAA Envía un sonido a una cola.
BCAD Comprueba si hay espacio libre en una cola de sonido.
BCB0 Cuando la cola no está llena, activa una rutina.
BCB3 Libera el sonido en los tres canales.
BCB6 Retiene los sonidos.
BCB9 Reanuda los sonidos retenidos por BCB6.
BCBC Define una envolvente de volumen.
BCBF Define una envolvente de tono.
BCC2 Determina la posición de memoria en que se encuentran los datos de una envolvente de volumen.
BCC5 Análoga a la anterior, pero referida a envolventes de tono.