terça-feira, 12 de agosto de 2008

3 Conceitos Principais - Mixer

Muitas APIs que trabalham com som fazem uso da noção de dispositivo de áudio. Um dispositivo geralmente é uma interface de software para um dispositivo físico de entrada e saída.
Na API Java Sound, dispositivos são representados por objetos da classe Mixer. O propósito de um mixer é manipular um ou mais streams de entrada ou saída de áudio. Tipicamente, o mixer mescla múltiplos streams de entrada em um stream de saída.

Na API Java Sound, um componente tal como um microfone conectado a uma placa de som não é considerado um dispositivo (como o mixer), mas é chamado de porta (port) entrando ou saindo do mixer. Tipicamente, uma porta provê um único stream de áudio para dentro ou para fora do mixer. O Mixer pode ter vários tipos de portas. Por exemplo, um mixer que representa a capacidade de saída de uma placa de som pode misturar vários streams de áudio juntos e então enviar o sinal mixado para qualquer uma das várias portas de saída conectadas ao mixer. Estas portas de saída podem ser, por exemplo, um fone de ouvido ou um alto falante.

A imagem abaixo ajuda a compreender a noção de mixer na API Java Sound (inclusive, algumas imagens que estou colocando aqui foram tiradas do Java Sound Programmer Guide) e mostra o console de um mixer físico.Imagine um show ao vivo que está sendo gravado em modo estéreo. Cabos vindos de muitos microfones e instrumentos elétricos do palco são plugados nas entradas do aparelho de mixagem. Cada entrada possui um canal específico no mixer. O engenheiro de som decide sobre as configurações de ganho, pan, e controles de reverb. A saída de todos os canais e a unidade de reverb são mixadas juntamente em 2 canais. Estes canais vão para duas saídas no mixer por cabos que estão plugados a um gravador e que também podem ser enviados, via um amplificador, para alto-falantes.

Agora imagine um estúdio de gravação em que cada instrumento é gravado em uma trilha particular de uma fita de gravação multi-trilhas. Após instrumentos e vocais serem gravados, o engenheiro de som executa um "mixdown" para combinar todas as trilhas gravadas em uma gravação de 2 canais. Novamente o engenheiro pode decidir os valores de ganho, pan e reverb para cada trilha.

Estes 2 exemplos ilustram dois diferentes usos de um mixer:
  1. capturar múltiplos canais de entrada, combiná-los em algumas trilhas
  2. executar múltiplas trilhas enquanto as mixamos em poucas trilhas.

Na API Java Sound, um mixer pode ser usado tanto para captura de áudio quanto para playback. No primeiro caso, a origem do áudio para o mixer é fornecida por uma ou mais portas de entrada. O mixer envia o áudio capturado e mixado para um target (um objeto com um buffer onde o programa pode recuperar as informações do áudio mixado). No caso de playback, as origens de áudio do mixer são objetos contendo buffers e os targets são as portas de saída.

Nenhum comentário: