Capítulo 8. Sonido y audio

Tabla de contenidos
Teoría
Órdenes y propiedades relativas al audio
Una incursión en el mundo de los sonidos
El juego de simón
Síntesis de voz
Efectos sobre la marcha
Creación de efectos sobre audio con una aplicación externa
MIDI
Casos de estudio: sobre la utilización de elementos sonoros
Ejercicios y actividades

Percepción, características, estándares, formatos de ficheros.

Teoría

Hablar de audio manejado por un computador significa hablar de una digitalización de un medio continuo. En estos términos, a la hora de codificarlo en un formato de fichero u otro, se van a tener que escoger (explicítamente o no) entre los parámetros que hacen posible esta codificación digital, la cual viene dada por:

Estos elementos deben ser esogidos en un equilibrio entre calidad de la representación y espacio ocupado por la misma. En la mayoría de las aplicaciones multimedia se utiliza el auido como elemento de apoyo y poco más se hace con él que reproducirlo con sus valores originales sin alterar.

Figura 8-1. Trabajo sobre audio: replicar la apariencia de XWaveTools.

Para poner en práctica el tema que nos ocupa vamos a realizar un ejemplo que permita a MetaCard/Revolution capturar (y reproducir) audio en la plataforma Linux, que en la versión actual se realiza a partir de QuickTime que no es una aplicación fácilmente disponible en esta plataforma (en el momento de escribir esto).

Puestos a diseñar esta aplicación se ha pensado en realizar una copia de la aplicación XWaveTools (xwavr) realizada sobre Tcl/Tk que imite su apariencia y comportamiento y que se muestra en la figura siguiente:

Figura 8-2. Trabajo sobre audio: mcAudio.

En el código de la única tarjeta se ha incluido la inicialización correspondiente, como en el código de Tcl. Los botones tienen la misma funcionalidad, excepto el de salir de la aplicación de MetaCard que ha sido sustituido por el más sencillo de recordar (a mi entender). En, aproximadamente veinte minutos se ha construído la pila, se ha probado y se ha documentado con este texto e ilustraciones. El tamaño de los fuentes es comparable: 3331 bytes para XWaveTools) y 3378 bytes de nuestro mcAudio.

Obsérvese que se ha empleado una variable propia (Custom Propertie en cada grupo, llamada contingut, para almancenar el valor escogido en cada parámetro. Para facilitar este tratamiento, los nombres de los botones son el valor del parámetro, mientras que la etiqueta contiene valores que hacen más legible e intuitivo el uso del interfaz desarrollado. De este modo, el código de los mismos es mínimo e idéntico, lo que lo ha hecho aprovechable para construir los tres a partir del primero.

Figura 8-3. Código de la aplicación desarrollada mcAudio.

## La tarjeta
on openCard
  put "prova.wav" into fld "fitxer"
  put "10" into fld "temps"

  send mouseUp to button "8" of group "Frecuencia de mostreig"
  send mouseUp to button "1" of group "Canals"
  send mouseUp to button "44100" of group "Tamany de la mostra" 
end openCard

##group "Canals"
on mouseUp
  set the contingut of me to the short name of target
end mouseUp

##group "Tamany de la mostra"
on mouseUp
  set the contingut of me to the short name of target
end mouseUp

##group "Frecuencia de mostreig"
on mouseUp
  set the contingut of me to the short name of target
end mouseUp

##button "Grabar mostra
on mouseUp
  set cursor to busy

 # Per comprovar el que fa: vejes-ho primer, que aço es educatiu!
  put  ("wavr" && "-f" && fld "fitxer" &&\
      "-r" && the contingut of group "Frecuencia de mostreig" &&\
      "-c" && the contingut of group "Canals" &&\
      "-d" && the contingut of group "Tamany de la mostra" &&\
      "-l" && fld "temps")
  
  put shell ("wavr" && "-f" && fld "fitxer" &&\
      "-r" && the contingut of group "Frecuencia de mostreig" &&\
      "-c" && the contingut of group "Canals" &&\
      "-d" && the contingut of group "Tamany de la mostra" &&\
      "-l" && fld "temps") into varAux
  
end mouseUp

## button "Reproduir mostra"
on mouseUp
  set cursor to busy
  put shell ("wavp" && fld "fitxer") into varAux
end mouseUp

##button "Parar"
on mouseUp
  put shell( "killall -9 wavr") into varAux
  put shell( "killall -9 wavp") into varAux
end mouseUp

##button "Llançar el mesclaor"
on mouseUp
  put shell( "xmix" ) into varAux
end mouseUp

#button "Eixir"
on mouseUp
  close this stack
end mouseUp
                        

Dejo para el lector experimentar con estas aplicaciones y con su, espero que lo tenga funcionando, equipo básico de audio: un micrófonos y unos auriculares, aunque estos últimos se pueden sustituir, si sus vecinos se lo consienten, por unos altavoces.