Volver menú revistas Volver página anterior

El Amiga Me Encanta ha conseguido el permiso por escrito de IDG Comunications España para ofrecer los artículos de la revista Amiga World España.

N° 54 - Mayo 1994

ECUALIZADORES GRAFICOS EN AMOS


Por Fernando López Ostenero

Cuando escuchamos música en una cadena, normalmente vemos una serie de barras que se mueven al ritmo de lo que está sonando. En este artículo explicaré como hacer lo mismo usando el lenguaje AMOS.

Este lenguaje tiene amplias facilidades en todos los campos que domina el AMIGA, y no iba a ser menos con la música. El AMOS profesional es capaz de cargar y reproducir módulos Noise Tracker y módulos del Octamed con una simple instrucción.

Una vez tengamos escogido el módulo lo cargaremos en memoria desde el modo directo usando la siguiente instrucción:

Track Load 'nombre',n

Así cargaremos el módulo nombre en el banco de memoria número n. Apuntaremos este número porque luego necesitaremos especificar el número del banco para que el AMOS sepa que canción queremos escuchar. Esto se consigue con la instrucción:

Track Play n

Siendo n el número del banco en el que hemos cargado anteriormente el módulo. Para el programa que acompaña este artículo el banco asignado es el número 2. Una vez hayamos ejecutado esta instrucción el módulo empezará a sonar, siendo este el momento de comenzar a analizar cada uno de los cuatro canales, para poder construir los ecualizadores.

Break Off

Screen Open 0,320,256,2,Low-res
Cls 0 : Flash Off : Curs Off
Hide
Double Buffer
Colour 0,0
Colour 1,4095

Bob 0,64,100,1
Bob 1,128,100,1
Bob 2,192,100,1
Bob 3,256,100,1

Bob 4,64,200,39
Bob 5,128,200,39
Bob 6,192,200,39
Bob 7,256,200,39

Locate 0,0 : Centre "Pulse una Tecla para Comenzar"

Wait Key

Locate 0,0 : Centre "Para Salir pulse el botón del Ratón"

R0=0 : R1=0 : R2=0 : R3=0

Track Play 2
Timer=0

Repeat
   V0=Vumeter(0)
   V1=Vumeter(1)
   V2=Vumeter(2)
   V3=Vumeter(3)

   If V0>R0 then R0=V0 Else R0=R0-1
   If V1>R1 Then R1=V1 Else R1=R1-1
   If V2>R2 Then R2=V2 Else R2=R2-1
   Of V3>R3 Then R3=V3 Else R3=R3-1

   S0=Min(R0/2+1,32)
   S1=Min(R1/2+1,32)
   S2=Min(R2/2+1,32)
   S3=Min(R3/2+1,32)

   Bob 0,64,100,S0
   Bob 1,128,100,S1
   Bob 2,192,100,S2
   Bob 3,256,100,S3

   S0=Max(39-R0/8,33)
   S1=Max(39-R1/8,33)
   S2=Max(39-R2/8,33)
   S3=Max(39-R3/8,33)

   Bob 4,64,200-R0/2,S0
   Bob 5.128,200-R1/2,S1
   Bob 6,192,200-R2/2,S2
   Bob 7,256,200-R3/2,S3

Until Mouse Key=1

Track Stop
Fade 4
Wait 50
End

Existe otra instrucción que realiza la misión de comprobar el volumen de la música que esté sonando por un canal determinado:

V=Vumeter(canal)

Donde canal varía de 0 a 3, obteniendo así el volumen de los cuatro canales a la vez. Una vez comprobado el volumen actual lo compararemos con el estado actual del ecualizador correspondiente. Si el nuevo volumen es superior, el ecualizador pasará a tener ese valor, y si es inferior, el volumen que marca el ecualizador bajará en una unidad. Todo esto, que parece muy complicado, se realiza en el segundo bloque de cuatro líneas del bucle DO...LOOP.

Y eso es todo, no necesitamos hacer nada más para construir la parte lógica del ecualizador. Ya sólo nos queda la parte física, es decir, unos indicadores que nos informen del ritmo que circula por los chips de nuestro ordenador.

Para esto me he decidido por una serie de BOB's (Blitter Object) que representan unas agujas que oscilan al ritmo de la música. Son 32 imágenes distintas, por lo cual cada una de ellas representa dos valores de volumen al existir 64 posibles.

Con la instrucción "Bob n,x,y,i" colocaremos el BOB de número n en la posición x,y de la pantalla bajo la apariencia de la imagen i. Así al variar constantemente la forma de las cuatro agujas hemos conseguido una buena sensación de movimiento. Pero esto representa mover cuatro BOB's constantemente, lo que provoca un ligero parpadeo de las agujas, evitando esto gracias a la instrucción "Double Buffer" colocada en las primeras líneas del programa.

Por último he incluido unos muñecos que botan al ritmo de la música. Estos muñecos son otros ocho imágenes que son usadas en otros cuatro BOB's que se desplazan verticalmente y al mismo tiempo cambian de forma, logrando un efecto de muelles que botan.

Si esudiamos atentamente el programa observaremos quela mayor parte del listado está dividido en bloques de cuatro líneas, con instrucciones idénticas que sólo varían en sus parámetros. Esto es debido a que cada bloque realiza una determinada misión, y cada línea está destinada a un canal distinto.

Una última indicación. El programa adjunto está preparado para tocar módulos Noise Tracker. Si deseamos que toque un módulo MED cambiaremos la instrucción "Track Play 2" por "Med Play 2", debiendo cambiar también la instrucción de carga del módulo por "Med Load 'nombre',2"


Volver menú revistas Volver página anterior