Guía: Sonido (Parte 3 de 4)

¿Qué es MIDI?

El paquete javax.sound.midi contiene APIs para transportar y secuenciar eventos MIDI, y para sintetizar sonido desde estos eventos.

Como el sonido muestreado es una representación del sonido mismo, los datos MIDI pueden ser vistos como una receta para crear sonido, especialmente un sonido musical. los datos MIDI, en contraposición a los datos de audio, no describen un sonido directamente. En vez de eso, describen eventos que afectan al sonido (o acciones) presentado por un instrumento o dispositivo MIDI, como un sintetizador. Los datos MIDI son análogos a un teclado con interfaz gráfica de usuario y a los eventos de ratón. En el caso de MIDI, los eventos pueden ser pensados como acciones sobre un teclado musical, junto a las acciones de varios pedales, sliders, switches y perillas de dicho instrumento. Estos eventos en realidad no necesitan ser originados con un instrumento musical físico; ellos pueden ser simulados por un software, y pueden ser guardados en archivos MIDI. Un programa que pueda crear, editar y representar estos archivos es llamado secuenciador. Muchas tarjetas de sonido para computador incluyen chips de sintetizadores musicales con control MIDI para que tales secuenciadores puedan enviar sus eventos MIDI. Los sintetizadores pueden también ser implementados completamente en el software. Los sintetizadores interpretan los eventos MIDI que reciben y producen una salida de audio. Usualmente el sonido sintetizado desde datos MIDI es un sonido musical (en comparación con un discurso, por ejemplo). Los sintetizadores MIDI son capaces también de generar varios tipos de efectos de sonido.

Algunas tarjetas de sonido contienen puertos de entrada y salida MIDI para que los distintos dispositivos (tales como sintetizadores u otros intrumentos) puedan ser conectados. Desde un puerto MIDI, una aplicación puede recibir eventos generados por un intrumento musical equipado con MIDI. El programa podría ser capaz de tocar un instrumento externo, o controlar otros dispositivos externos tales como un equipo de grabación. El siguiente diagrama ilustra las relaciones funcionales entre los componentes mayores en una posible configuración MIDI basada en la Java Sound API. (como con el audio, Java Sound API permite instalar e interconectar una variedad de dispositivos MIDI. El sistema mostrado aquí es solo un potencial escenario.) El flujo de datos entre componentes está señalado por flechas. Los datos pueden estar en un formato estándar de archivos, ó (como está señalado por la leyenda en la esquina inferior derecha del diagrama), pueden ser mensajes de audio, bytes MIDI sin editar, o temporizados.




Una posible configuración MIDI.

En este ejemplo, la aplicación prepara una presentación musical por medio de la carga de una partitura musical que está guardada como un archivo MIDI estándar en un disco (lado izquierdo del diagrama). Los rchivos MIDI contienen pistas, cada una de eskkas es una lista de eventos MIDI temporizados. la mayoría de los eventos representan notas musicales (flexiones y ritmos). Este archivo MIDI es ledído y luego "presentado" por un secuenciador. Un secuenciador presenta su música por medio del envío de mensajes MIDI a algún otro dispositivo, como sintetizador interno o externo. El sintetizador por si mismo podría leer un archivo de banco de sonidos que contiene la información para emular los sonidos de ciertos intrumentos musicales. De no ser así, el sintetizador reproducirá las notas guardadas en el archivo MIDI usando cualquier sonido de instrumento que ya esté cargado dentro de él.

Como se muestra, los eventos MIDI deben ser traducidos a un MIDI sin editar (no temporizado) antes de ser enviados a través de un puerto de salida MIDI a un instrumento MIDI externo. De manera similar, los datos MIDI sin editar que entran al computador desde una fuente MIDI externa (en el diagrama, un teclado (piano)) son traducidos a mensajes MIDI temporizados que pueden controlar a un sintetizador, o que un secuenciador puede guardar para usos posteriores.

traducido desde http://java.sun.com/docs/books/tutorial/sound/index.html
Copyright © 1995-2009 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, California 95054, U.S.A. All rights reserved.

Guía: Sonido (Parte 2 de 4)

¿Qué es un audio muestreado?

EL paquete javax.sound.sampled maneja datos de audio digital, alos cuales la API de sonido Java se refiere como audio muestreado. Las muestras son imágenes instantáneas de una señal. El el caso del audio, la señal es una onda de sonido. Un micrófono convierte la señal acústica en una correspondiente señal eléctrica, y un convertidor analogo-digital transforma esa señal análoga a una forma digital muestreada. La siguiente figura muestra un breve momento en la grabación de un sonido.



Una onda de sonido muestreado


La gráfica traza la presión del sonido (amplitud) en el eje vertical, y el tiempo en el eje horizontal. La amplitud de la onda de sonido análoga es medida períodicamente a cierto ritmo, resultando en las muestras discretas (los puntos de datos rojos en la figura) que comprenden la señal de audio. La línea horizonal indica amplitud cero; los puntos por encima de la línea son muestras positivas, y los puntos por debajo son negativos. La exactitud de la aproximación digital de la señal análoga depende de su resolución en el tiempo (ritmo de muestreo) y de su cuantificación, o resolución en amplitud (el número de bits usados para representar cada muestra). Como punto de referencia, el audio grabado para el almacenamiento en discos compactos es mostrado 44,100 veces por segundo y representado con 16 bits por muestra.

El término "Audio Muestreado" es usado ligeramente aquí. Una onda de sonido puede ser muestreada en intervalos diferenciados mientras es dejada en una forma análoga. Sin embargo, Para los propósitos de la API de Sonido Java, "Audio Muestreado" es equivalente a "Audio Digital".

Típicamente, el audio muestreado de un computador es traído desde una grabación, pero además, el sonido puede sintéticamente creado (por ejemplo, los tonos al tocar las teclas de un teléfono). El término "audio muestreado" se refiere al tipo de dato, no a su origen.

La API de Sonido Java no asume una configuración de hardware específica; esto fue diseñado para permitir que diferentes componentes de audio sean instalados en un sistema y que la API pueda acceder a ellos. La API de Sonido Java soporta funcionalidades comunes como la salida y la entrada desde una tarjeta de sonido (por ejemplo, para grabar y reproducir archivos de sonido) como también la mezcla de múltiples flujos de audio. Este es un ejemplo de una típica arquitectura de audio:



Una típica arquitectura de audio


En este ejemplo, un dispositivo como una tarje de sonido tiene varios puertos de entrada y de salida, y la mezcla es provista por el software. Es posible que el mezclador reciba los datos que han sido leídos desde un archivo, muestreados desde una conexión, generado en el arranque de una aplicación, o producido por un sintetizador MIDI. El mezclador combina todas la entradas de audio en un solo flujo, el cual puede ser enviado a un dispositivo de salida para presentarlo.

traducido desde http://java.sun.com/docs/books/tutorial/sound/index.html
Copyright © 1995-2009 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, California 95054, U.S.A. All rights reserved.