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.
Vista general del Paquete Sampled (Parte 1 de 4)
sábado, 17 de octubre de 2009 | Publicado por Diego L. Ronda en 3:18
Suscribirse a:
Enviar comentarios (Atom)
0 comentarios:
Publicar un comentario