¿Qué es una Línea?
La metáfora de una consola físca de mezcla es también útil para entender el concepto de línea de la API Java Sound.
Una línea es un elemento "filtro" del audio digital- esto es, una senda para mover el audio dentro o fuera del sistema. Usualmente una línea es una senda dentro o fuera del mezclador (a pesar de que técnicamente el mezclador por si mismo ya es un tipo de línea).
La puertos de entrada y salida de audio son líneas. Estos son análogos a los micrófonos y parlantes conectados a una consola de mezcla física. Otro tipo de línea es la senda de datos a través de la cual una aplicación puede obtener audio de entrada desde, o enviar audio de salida a, un mezclador. Estas sendas de datos son análogos a las pistas de una grabadora multipista conectada a la consola de mezcla física.
Una de las diferencias entre las líneas en la API Java Sound y estas en un mezclador físico es que los datos de audio que fluyen a través de una línea en la API Java Sound pueden ser mono o multicanal (por ejemplo, estéreo). En contraste, cada uno de las entradas y salidas del mezclador físico es típicamente un canal simple de sonido. Para obtener dos o más canales de salida desde un mezclador físico, dos o más salidas físicas se usan normalmente (por lo menos en el caso del sonido análogo: un enchufe hembra de salida digital es a menudo multicanal). En la API Java Sound, el número de canales en una línea es especificado por el AudioFormat de los datos que actualmente fluye a través de la línea.
Vamos a exmaninar ahora algunos tipos específicos de líneas y mezcladores. El siguiente diagrama muestra diferentes tipos de líneas en un sistema de salida de audio simple que podría ser aprte de una implementación de la API Java Sound:
Una posible configuración de líneas para la salida de audio
traducido desde http://java.sun.com/docs/books/tutorial/sound/sampled-overview.html
Copyright © 1995-2009 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, California 95054, U.S.A. All rights reserved.
Vista general del Paquete Sampled (Parte 4 de 4)
lunes, 19 de octubre de 2009 | Publicado por Diego L. Ronda en 6:16 0 comentarios
Vista general del Paquete Sampled (Parte 3 de 4)
¿Qué es un Mezclador?
Muchas interfaces de programación de aplicaciones (APIs) para el sonido usan la noción de un dispositivo de audio. Un dispositivo es a menudo una interfaz de software a un dispositivo de entrada/salida. por ejemplo, un dispositivo de entrada de sonido quizás represente las capacidades de entrada de una tarjeta de sonido, incluyendo una entrada de micrófono, una entrada análoga de nivel de línea, y posiblemente una entrada de audio digital.
En la API Java Sound, los dispositivos son representados por objetos Mixer. El propósito de un mixer es manejar uno o más flujos de entrada de audio y uno o más flujos de salida de audio. En el caso típico, en realidad mezcla múltiples flujos de llegada juntos en un solo flujo que sale. Un objeto Mixer puede representar las capacidades de mezcla de sonido de un dispositivo físico como lo es una tarjeta de sonido, la cual quizás necesite mezclar el sonido de llegada en el computador desde varias entradas, o el sonido que viene desde aplicaciones y que va a las salidas.
Alternativamente, un objeto Mixer puede representar las capacidades de mezcla de sonido que son implementadas enteramente en el software, sin ningún interfaz inherente a los dispositivos físicas.
En la API Java Sound, un componente como una entrada micrófono en una tarjeta de sonido no es por si mismo considerado un dispositivo - esto es, un mixer - pero es más bien un puerto dentro o fuer del mixer. Un puerto típicamente provee un flujo simple de audio dentro o fuera del mixer (a pesar de que el flujo puede ser multicanal, como estéreo). El mezclador quizás tenga varios puertos. Por ejemplo, un mixer que representa las capacidades de salida de una tarjeta de sonido quizás mezcle varios flujos de audio juntos, y luego enviar la señal mezclada a ninguno a todo de los varios puertos de salida conectados al mixer. Estos puertos de salida podrían ser (por ejemplo) un jack de audífonos, un parlante incorporado, o una salida de nivel de línea.
Para entender la noción de un mixer en la API Java Sound, ayuda visualizar una consola de mezcla física, como las usadas en los conciertos en vivo y en los estudios de grabación.
Una consola de mezcla física
Un mezclador físico tiene "franjas" (tambien llamadas "slices"), cada una representa una senda a través de la cual una señal simple de audio irá dentro del mezclador para procesarse. Una franja tiene perillas y otros controles con los cuales puedes controlar el volumen y el balance (lugar en la imagen estéreo) de la señal en dicha franja. Además, el mezclador puede tener un bus separado para efectos como reverberación, y este bus puede ser conectado a una unidad de reverberación interna o externa. Cada franja tiene un potenciómetro que controla cuanto de aquella señal va dentro de la mezcla reverberada. La mezcla reverberada ("humeda") es luego mezclada con la señal "seca" desde las franjas. un mezclador físico envía esta mezcla final a un bus de salida, el cual típicamente va a una grabadora (o a sistema de grabación basado en discos) y/o parlantes.
Imaginemos un concierto en vivo que está siendo grabado en estéreo. Los cables (o conexiones inalámbricas) llegan desde muchos micrófonos e instrumentos eléctricos en escena que están conectados dentro de las entradas de la consola de mezcla. Cada entrada va a una franja separada del mixer, como en la ilustración, El ingeniero de sonido decide la configuración de la ganancia, balance, y controles de reverberación. La salida de todas las franjas y la unidad de reverberación son mezcladas juntas en dos canales. Estos dos canales van a dos salidas del mixer,
dentro del cual los cables que conectan la entrada la grabadora estéreo están enchufados. Los dos canales son posiblemente enviados vía un amplificador a los parlantes en el salń, dependiendo del tipo de música y el tamaño del salón.
Ahora imagina un estudio de grabación, en el cual cada instrumento o cantante es grabado en una pista separada de una grabadora multipista. Después de que los instrumentos y cantantes han sido grabados, En ingeniero en grabación presenta un "mixdown" para combinar todas las pistas en cinta dentro de una grabación de dos canales (estéreo) que puede ser distribuida en discos compactos. En este caso, la entrada de cada una de las franjas del mixer no es un micrófono, pero sí una pista de la grabación multipista. una vez más, el ingeniero puede usar controles en las franjas para decidir cada volumen de las pistas, balance, y monto de reverberación. Las salidas del mixer van una vez mas a una grabadora y a los parlantes estéreo, como en el ejemplo del concierto en vivo.
Estos dos ejemplos muestras dos usos diferentes de un mixer: capturar múltiples canales de entrada, combinarlas dentro de menos pistas, y salvar la mezcla, o reproducir múltiples pistas mientras se mezclan a menos pistas.
En la API Java Sound, un mixer puede similarmente ser usado para la salida (audio de captura) o entrada (audio de reproducción). En el caso de la entrada, la fuente desde la cual el mezclador obtiene el audio para la mezcla es una o más puerto de entrada. El mixer envía los flujos de audio capturados y mezclado a su objetivo, el cual es un objeto con un buffer desde el cual una aplicación puede recuperar estos datos de audio mezclado. En el caso de la salida de audio, la situación es inversa. La fuente de audio del mixer es uno o más objetos que contienen buffers dentro de los cuales una o más aplicaciones escriben sus datos de sonidos; y el objetivo del mezclador es uno o más puertos de salida.
traducido desde http://java.sun.com/docs/books/tutorial/sound/sampled-overview.html
Copyright © 1995-2009 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, California 95054, U.S.A. All rights reserved.
sábado, 17 de octubre de 2009 | Publicado por Diego L. Ronda en 15:28 0 comentarios
Vista general del Paquete Sampled (Parte 2 de 4)
¿Qué son los Datos de Audio con Formato?
Los Datos de Audio con Formato se refieren al sonido que está en cualquier formato de un número de formatos estándar. La API Java Sound distingue entre formatos de datos y formatos de archivo.
Formatos de Datos
Un formato de datos te dice como interpretar una serie de bytes de datos de audio muestreado "sin refinar", como muestras que ya han sido leídas desde un archivo de sonido, o muestras que han sido capturadas desde la entrada de micrófono. Quizás necesites saber, por ejemplo, cuántos bits constituyen una muestra (la representación del instante mas corto de sonido), y similarmente quizás necesites saber la velocidad de la muestra de sonido (qué tan rápido las muestras se supone que se encuentran unas con otras). Cuando se configura una reproducción o captura, especificas el formato de datos del sonido que estás capturando o reproduciendo.
En la API Java Sound, un formato de datos es representados por un objeto AudioFormat, el cuál incluye los siguientes atributos:
PCM es un tipo de codificación de la onda de sonido. La API Java Sound incluye 2 codificaciones PCM que usan cuantización linear de amplitud, y valores enteros con y sin signo. Cuantización linear quiere decir que el número guardado en cada muestreo es directamente proporcional (excepto por cualquier distorsión) a la presión del sonido original en dicho instante-y similarmente proporcional al desplazamiento de un altavoz o tímpano que está vibrando con el sonido en el mismo instante. Los discos compactos por ejemplo, usan un sonido codificado PCM lineal. la codificación mu-law y la codificación a-law son codificaciones comunes no lineales que proveen un version mas comprimida de datos de audio; estas codificaciones son típicamente usadas para la telefonía o grabaciones de conversaciones. Una codificación no lineal traza un mapa de la amplitud del sonido original para al valor guardado usando una función no lineal, la cual puede ser designada para dar mayor resolución de amplitud a sonidos suaves mas que a sonidos fuertes.
Un marco contiene los datos de todos los canales en un tiempo particular. Para los datos codificados en PCM, el marco es simplemente el conjunto de muestras simultáneas
en todos los canales, para un dado intante en el tiempo, sin ninguna información adicional. En este caso, la velocidad de marco es igual a la velocidad de muestra, y el tamaño de marco en bytes es el número de canales multiplicado por el tamaño de muestra en bits, dividido por le número de bits en un byte.
Para otros tipos de codificación, un marco debe contener información adicional junto a las muestras, y la velocidad de marco quizás sea completamente diferente de la velocidad de muestra. Por ejemplo, consideremos la codificación MP3 (MPEG-1 Audio Layer 3), la cual no esta explícitamente mencionada en la versión actual de la API Java Sound, pero la cual prodría ser soportada por medio de una impletancion de la API Java Sound o por prestación de servicios por parte de terceros. En MP3, cada marco contiene un fardo de datos comprimidos por una serie de muestras, no solo una muestra por canal, debido a que cada marco encapsula una serie complete de muestras, la velocidad de marco es menor a la velocidad de muestra. El marco contiene además una cabecera. A pesar de la cabecera, el tamaño del marco en bytes es menor al tamaño en bytes del número equivalente de marcos PCM. (Después de todo, el propósito de MP3 es ser más compacto que los datos PCM.) Para tal codificación, la velocidad de muestra y el tamaño de muestra se refeieren a los datos PCM que el sonido codificado eventualmente serán convertidos antes de ser entregados a un convertidos análogo-digital (DAC, en inglés).
Formatos de Archivo
Un formato de archivo especifica la estructura de un archivo de sonido, incluyendo no solo el formato de los datos de audio sin refinar en el archivo, sino que también otra información que puede ser almacenada en el archivo. Los archivos de sonido vienen en varios estándares, como los es WAVE (también conocido como WAV, y a menudo asociado a los PCs), AIFF (a menudo asociado con los Macintosh), y AU (a menudo asocioado con los sistemas UNIX). Los diferentes tipos de archivos de audio tienen diferentes estructuras. Por ejemplo, quizás tengan un arreglo de datos distinto en la "cabecera" del archivo. Una cabecera contiene información descriptiva que típicamente precede a las muestras de audio del archivo actual, a pesar de que algunos formatos de archivo permitan "pedazos" sucesivos de datos de audio y descipción. La cabecera incluye un especificación del formato de datos que fue usado para almacenar el audio en el archivo de sonido. Cualquiera de estos tipos de sonido puede contener varios formatos de datos (a pesar de que usualmente hay solo un formato de dato dentro de un archivo dado), y el mismo formato de datos puede ser usado en archivos que tengan distintos formatos de archivo.
En la API Java Sound, un formato de archivo es representado por un objecto AudioFileFormat el cual contiene:
La clase AudioSystem provee de métodos para lee y escribir sonidos en diferentes formatos de archivo, y para convertir entre distintos formatos de datos. Algunos de los métodos que te dejan acceder a los contenidos del archivo a través de un tipo de flujo llamado un AudioInputStream. Un AudioInputStream es una subclase de la clase InputStream, la cual encapsula una serie de bytes que pueden ser leídos secuencialmente. A su superclase, la clase AudioInputStream agrega conocimiento del formatos de datos de audio de los bytes (representado por un objeto AudioFormat). Gracias a la lectura de un archivo de sonido como un AudioInputStream, obtiene acceso inmediato a las muestras, sin tener que preocuparte acerca de la estructura del archivo de sonido (su cabecera,trozos,etc.). Una simple invocación de método te da toda la información que necesitas acerca de el formato de datos y el tipo de archivo
traducido desde http://java.sun.com/docs/books/tutorial/sound/sampled-overview.html
Copyright © 1995-2009 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, California 95054, U.S.A. All rights reserved.
Publicado por Diego L. Ronda en 5:16 0 comentarios
Vista general del Paquete Sampled (Parte 1 de 4)
El paquete javax.sound.sampled es fundamentalmente corcernido con el transporte de audio — en otras palabras, la API Java Sound se enfoca en la reprocucción y la captura. La tarea cental que la API Java Sound dirige es como mover bytes o datos de audio formateados dentro y fuera del sistema. Esta tarea envuelve abrir los dispositivos de entrada y salida y administrar los buffers que llegan llenos con los datos de sonido en tiempo real. Esto también puede envolver mezclar múltiples flujos de audio dentro de un solo flujo (de entrada o salida). El transporte del sonido dentro o fuera del sistema tiene que ser correctamente manejado cuando el usuario pida que el flujo de sonido sea iniciado, pausado, resumido, o detenido.
Para dar soporte a este foco en la entrada o salida básica de audio, la API Java Sound provee métodos de conversión entre varios formatos de datos de audio, y para leer y escribir tipos comunes de archivos de sonido. Sin embargo, esto no intenta ser un exhaustivo juego de herramientas de archivos de audio. Una implementación particular de la API Java Sound no necesita soportar un amplio conjunto de tipos de archivo o conversiones de formato de datos. El servicio de prestación por parte de terceros puede suplir módulos que se "enchufan" a una implementación existente para soportar tipos de archivos adicionales y conversiones.
*La API Java Sound puede manejar el tranporte de audio en un flujo, en modo con buffer, y en un modo de memoria interna, sin buffer*. "Flujo" es usado aquí en el sentido general para referise al manejo en tiempo real de bytes de audio; no se refiere a lo específico, el famoso caso de enviar audio en internet en cierto formato. En otras palabras, un flujo de audio es simplemente un conjunto continuo de bytes de audio que llegan mas o menos a la misma velocidad a la que están siendo manejados (reproducidos, grabados, etc.). Las operaciones en los bytes comienzan antes de que todos los datos hayan llegado. En el modelo de flujo, particularmente en el caso de la entrada de audio más que en la salida, no vas conocer necesariamente en avance cuán largo es el sonido y cuando terminará de llegar. Simplemente manejas un buffer de datos de audio a la vez, hasta que la operación sea detenida. En el caso de la salida de audio (reproducción), también necesitas un buffer para los datos si el sonido qur quieres reproducir es muy largo para cuadrarlo en la memoria todo de una vez. En otras palabras repartes tus bytes de audio al motor de sonido en trozos, y este tendrá el cuidado de reproducir cada muestra al tiempo que corresponda. Los mecanismos que proveen esto hacen fácil el saber cuantos datos entregar en cada trozo.
La API Java Sound también permite el transporte sin buffer en el caso de la reproducción solamente, asumiento que ya tienes todos los datos de audio a mano y que ellos no son tan largos para ajustarlos en la memoria. En esta situación, no hay necesidad para la aplicación de dar buffer al audio, aunque con buffer, el enfoque en tiempo real sigue disponible si se desea. En vez de esto, el sonido entero puede ser precargado de una vez dentro de la memoria para una reproducción interna, debido a que todos los datos de sonido son cargados en avance, la reproducción puede comenzar inmediatamente — por ejemplo, tan pronto como el usuario presione el botón de inicio. Esto puede ser una ventaja comparado con el modelo con buffer donde la reproducción tiene que esperar al primer buffer que se llene. además, el modelo -de memoria interna- sin buffer permite a los sonidos ponerlos fácilmente en búcle (ciclo) o configurar posiciones arbitrarias en los datos.
Para reproducir o capturar sonido usando la API Java Sound, neceseitas por lo menos tres cosas; datos de audio formateado, un mezclador, y una línea. Lo que viene provee una vista general de estos conceptos.
traducido desde http://java.sun.com/docs/books/tutorial/sound/sampled-overview.html
Copyright © 1995-2009 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, California 95054, U.S.A. All rights reserved.
Publicado por Diego L. Ronda en 3:18 0 comentarios
Guía: Sonido (Parte 4 de 4)
Interfaz de Prestación de Servicios
Los paquetes javax.sound.sampled.spi y javax.sound.midi.spi contienen APIs que permiten a los desarrolladores de software crear nuevos recursos de audio o MIDI que puedn ser proveídos por separado al usuario y "enchufados" a una implementación existente de la API Java Sound. Estos son algunos ejemplos de servicios (recursos) que pueden ser añadidos en esta manera:
En algunos casos, los servicions son interfaces de software para las capacidades de dispositivos físicos, como tarjetas de sonido, el prestador de servicios debería ser el mismo que el vendedor del hardware. En otros casos, los servicios existen puramente en el software. Por ejemplo, un sintetizador o mezclador podría ser una interfaz a un chip en una tarjeta de sonido, o podría ser implementado sin ningún soporte en hardware en absoluto.
Una implementación de la API Java Sound contiene un conjunto básico de servicios, pero los paquetes de la interfaz de prestación de servicios (SPI en inglés) permiten a terceras partes crear nuevos servicios. Estar terceras partes son integradas al sistema de la misma forma que los servicios incorporados. la clase AudioSystem y la clase MidiSystem actúan como coordinadores de que dejan a las aplicaiones acceder a los servicios de manera explícita o implícita. A menudo la existencia de una servicio es totalmente transparente a una aplicación que la usa. El mecanismo prestador de servicios beneficia a los usuarios de aplicaciones basadas en la API Java Sound, por que nuevas características de sonido pueden ser añadidas a un programa sin requerir una nueva salida al mercado del JDK o del entorno en tiempo de ejecución, y en muchos casos, incluso sin requerir una nueva salida al mercado de la aplicación misma.
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.
Publicado por Diego L. Ronda en 2:29 1 comentarios
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.
jueves, 6 de agosto de 2009 | Publicado por Diego L. Ronda en 1:25 0 comentarios
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.
miércoles, 5 de agosto de 2009 | Publicado por Diego L. Ronda en 12:19 0 comentarios
Guía: Sonido (Parte 1 de 4)
La API de sonido Java es una API de bajo nivel para generar y controlar la entrada y salida de medios de sonido, incluye datos de audio y datos de la Interfaz Digital de Instrumentos Musicales (MIDI). La API de sonido Java provee control explícito sobre las aptitudes que comúnmente se requieren para la entrada y salida de sonido, dentro de una plataforma que estimula la extensibilidad y la flexibilidad.
La API de sonido Java cumple con las necesidades de un amplio rango de desarolladores de aplicaciones. Las potenciales áreas de aplicación incluyen:
La API de sonido Java provee del mínimo nivel de soporte de sonido dentro de la plataforma Java. Provee programas con una gran cantidad de control sobre las operaciones de sonido, y es extensible. Por ejemplo, la API de sonido Java suministra mecanismos para instalar, acceder y manipular recursos del sistema como mezcladores de audio, sintetizadores MIDI y otros dispositivos MIDI, lectores y escritores de archivos, y convertidores de formato de sonido.
La API de sonido Java no incluye editores de sonido sofisticados o herramientas gráficas, pero provee las capacidades sobre las cuales tales programas pueden ser contraídos. Hace énfasis en el control a bajo nivel más allá que de lo comúnmente esperado por el usuario final.
La API de sonido Java incluye soporte para audio digital y datos MIDI. Estos dos modulos mayores de funcionalidad son provistos en paquetes separados:
Este paque especifica interfaces para la captura, mezcla, y reproducción del audio digital.
Este paquete provee interfaces para la síntesis MIDI, secuencia y transporte de eventos.
Otros dos paquetes permiten proveer servicios (as opposed to application developers) para crear componentes a medida, que extienden las capacidades de una implementación de la API de sonido Java:
Esta página introduce al sistema flujo de sonido, al sistema MIDI, y a los paquetes SPI. Cada paquete será discutido con mayor detalle a lo largo del tutorial.
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.
jueves, 2 de julio de 2009 | Publicado por Diego L. Ronda en 11:53 0 comentarios