quinta-feira, 3 de março de 2011

O conceito de plug-in de software

Plug-in é um conceito herdado do hardware, em que um circuito complementar (plug-in) poderia ser fisicamente encaixado num circuito principal. Em software, plug-in é todo programa projetado para estender as funcionalidades de outro, denominadado "host" (hospedeiro). O host provê serviços que o plug-in pode utilizar, incluindo o registro e troca de informações. Os plug-ins normalmente dependem desses serviços e não funcionam sozinhos, enquanto os hosts não dependem de plug-ins para funcionar. A exceção são os plug-ins com versão stand-alone, que funcionam tanto dentro do host quanto fora dele, com diferentes abordagens.

O uso de plug-ins começou ainda nos anos 1970, quando o editor de texto EDT, rodando no sistema operacional Unisys VS/9, usando o mainframe Univac 90/60, permitia que um programa fosse rodado de dentro do editor. Os primeiros softwares a utilizarem plug-ins em computadores pessoais foram o HyperCard (banco de dados) e o QuarkXPress (editoração gráfica), ambos lançados em 1987 sob a plataforma Macintosh.

Atualmente, os plug-ins são implementados como bibliotecas compartilhadas e precisam estar em uma pasta pré-determinada pelo host para serem carregados. São usados normalmente para implementar funções específicas em softwares que desempenham atividades gerais. Um exemplo são os softwares de edição de imagem: o host se encarrega de ferramentas como pincel e borracha, e os filtros para imagem (foco, baixo-relevo, negativo) são implementados pelos plug-ins. Outro tipo de uso é em jogos, onde os plug-ins podem trazer novos ambientes, personagens ou ferramentas.

Vantagens da arquitetura baseada em plug-ins

Pode-se dizer que o desenvolvimento de software com arquitetura baseada em plug-ins traz vantagens a todos. Os desenvolvedores do host podem se concentrar exclusivamente em questões referentes à interface com o usuário e com o sistema operacional, além de reduzir a complexidade e o número de funcionalidades do software, o que torna o gerenciamento mais eficiente. O desenvolvedor de plug-ins se preocupa unicamente com seu algoritmo, sem precisar se ocupar das interfaces de comunicação com o sistema. E, por fim, o usuário é poupado de um programa grande e complexo, com várias funcionalidades não utilizadas; pelo contrário, este só possui o essencial para o trabalho em vista.


Plug-ins para áudio: uma face da transição do analógico para o digital



A década de 1990 trouxe a revolução do áudio digital. Nos estúdios de gravação, os rolos de fita e as enormes mesas analógicas de 48 ou até 64 canais foram substituídas por poderosos computadores equipados com softwares de gravação. Um dos pioneiros neste mercado foi o Pro Tools. O software, assim como outros similares, possui basicamente dois modos de operação: o primeiro simula um mixer analógico, mostrando os canais verticalmente, com suas entradas, saídas e inserções (Figura 1); o segundo, que representa a grande mudança de paradigma, dispõe os canais horizontalmente, mostrando a forma de onda do áudio (Figura 2).

As opções de edição de áudio então se multiplicaram. Era possível observar a forma de onda e trabalhar diretamente no domínio do tempo, de forma não linear, tornando trivial uma tarefa outrora muito trabalhosa. As edições tornaram-se mais dinâmicas quando, por exemplo, uma nota errada poderia ser substituída por outra em apenas alguns cliques. No entanto, os estúdios ainda dependiam muito de efeitos analógicos para o processamento do áudio, como reverberador, compressor e equalizador. Foi então que os plug-ins para áudio começaram a entrar em cena. Como podemos ver em muitos softwares atuais, por vezes o próprio fabricante do hardware lança o seu equivalente virtual na forma de plug-in, com interface que simula o equipamento real como o exemplo da Figura 3. Nela, vemos o 1176LN, exemplo de processador de dinâmica da UAD fabricado em versão hardware e software (plug-in).



Entretanto, a grande revolução do processamento de áudio se deu quando esses plug-ins passaram a ser capazes de trabalhar em tempo real, ou seja, atuar no sinal da mesma forma que os equipamentos atuam, sem demandar um tempo de espera para ouvir o material processado. O primeiro marco nesse tipo de processamento foi o sistema Pro Tools TDM, que desbancou os ADATs na seqüência da revolução digital, como já vimos em outra oportunidade.

Um exemplo: imagine se queremos amenizar os graves de uma voz através de filtros. Sem o processamento em tempo real, temos que ouvir uma previsão do processamento desejado e, após a definição dos parâmetros desejados, esperar que o áudio original se transforme no áudio processado. No caso, esperar que a voz com excesso de graves se transforme em um arquivo sem essas freqüências, para depois ser executado. Dá para perceber somente com esse exemplo que os plug-ins só se tornaram relevantes no cotidiano do estúdio na medida em que passaram a atuar de forma online. Na próxima seção esse assunto será retomado.



Com a cada vez maior migração do processamento em hardware para o processamento controlado por software (plug-ins), tornou-se viável a criação de estúdios de menor porte e mais tarde os home studios, estúdios de pequeno porte que podem ser compostos de apenas um computador, com entrada e saída de áudio. Nesses estúdios digitais, muitas vezes caseiros, é possível atingir boa qualidade sonora com baixíssimo investimento, quando comparados a um estúdio de grande porte com todo o processamento feito com hardwares analógicos.

Esta qualidade é alcançada em grande parte devido à enorme quantidade de plug-ins existentes hoje no mercado. As aplicações vão desde as simulações de analógicos, como amplificadores valvulados, compressores e reverbs, até inovações e possibilidades do áudio digital que permitem afinar ou mudar o timbre de uma voz. Além de plug-ins de efeitos, são também muito utilizados os plug-ins sintetizadores, chamados de instrumentos virtuais. Estes recriam com perfeição a sonoridade de instrumentos antigos, como órgão Hammond, ou difíceis de encontrar para gravação, como uma orquestra sinfônica.

Um aspecto interessante dos plug-ins para áudio é que, ao contrário de outros tipos, eles em geral não são específicos para apenas um software. Isto deriva possivelmente do fato de que a tarefa de um plug-in de áudio é bem definida: receber amostras de áudio do host, processá-las e devolvê-las ao host. Com isso, foram criados alguns protocolos de comunicação entre plug-in e host. Cada plug-in então pode ser utilizado em todos os hosts compatíveis com o seu protocolo. Os protocolos mais usados no mercado são o VST, Audio-unit, RTAS, Audio-Suite, Direct-X e o Ladspa.

O protocolo VST apresenta algumas vantagens sobre seus concorrentes. De todos os listados, o VST é o único capaz de rodar tanto em MacOS quanto em Windows ou Linux.



Além disso, é um protocolo aberto, ou seja, qualquer desenvolvedor pode baixar o Software Development Kit (SDK), disponível no site do fabricante [http://www.steinberg.net], e começar a desenvolver plug-ins. Estas duas características fazem com que exista uma maior quantidade de plug-ins gratuitos em VST, feitos por pequenas fábricas de software ou desenvolvedores amadores. Os plug-ins fabricados pelas grandes empresas normalmente têm versão RTAS, VST e AU. Com isso, abrangem as três maiores DAWs disponíveis no mercado: Pro Tools, Cubase e Logic, respectivamente.

Você pode baixar aqui o VST SDK, kit gratuito para os programadores (figura 4).

http://www.kvraudio.com/get/502.html


Formas de utilização: on-line x offline

O funcionamento dos plug-ins de áudio pode ser resumido de forma bem simples: o host (software hospeiro) tem as amostras do áudio digital armazendas, passa-as para o plug-in, que as processa e devolve ao host. Este procedimento pode ocorrer de duas maneiras: on-line, isto é, o processamento ocorre enquanto o host toca o áudio, e offline, quando o processamento é feito antes que o host toque o áudio. Para os usuários de Pro Tools, plug-ins RTAS são exemplos de processamento on-line, e AudioSuite, offline.

Para que um plug-in funcione de forma online, é preciso que o processamento de cada bloco de amostras seja mais veloz do que o tempo de latência da DAW. Com isso, o processamento pode ser concluído antes que amostras sejam colocadas na saída. Além disso, o plug-in on-line só tem à sua disposição as amostras de áudio que já passaram, portanto não pode utilizar amostras futuras. Por exemplo, um plug-in que faça a reversão do sinal não pode ser on-line, pois a primeira amostra da saída é a última a entrar. O processamento precisa do sinal inteiro para ser executado.

Os plug-ins que funcionam on-line têm diversas vantagens. Talvez a maior delas seja a facilidade no ajuste de parâmetros. Imaginemos um equalizador: em um plug-in online, a cada mudança no ganho de uma banda ouvimos o resultado simultaneamente. Caso o funcionamento fosse offline, a cada mudança do parâmetro, o áudio seria processado, e depois teríamos que tocar para perceber o resultado da mudança. Outra vantagem do processamento on-line é que o áudio original é preservado, já que o resultado da aplicação do plug-in é enviado apenas para a saída de áudio, e o áudio não processado permanece inalterado. No caso do offline, contudo, arquivos de áudio são gerados para armazenar o resultado final do processamento.

É claro que essas vantagens têm um preço muito bem definido: memória e poder de processamento. Cada plug-in on-line aberto irá consumir uma fatia de processamento da CPU (ou DSP) e de memória RAM a cada vez que apertarmos o botão play. Com isso, a tendência é que o computador se recuse a tocar caso haja muitos plug-ins on-line abertos. A desvantagem dos plug-ins offline, que é a criação de arquivos e consequente ocupação de espaço em disco rígido, torna-se uma solução quando atingimos a capacidade máxima de processamento e memória de nosso sistema, pois para esse caso não há gastos de memória e CPU após a criação dos arquivos. Começamos a compreender, então, que o trabalho, principalmente de mixagem, em uma workstation digital, será mediado pelo compromisso entre capacidade do sistema e espaço em disco.

Caso você encontre problemas com gerenciamento de memória e processamento por causa de plug-ins, uma opção é manipular uma trilha de cada vez. Quando estiver satisfeito com a sonoridade de determinada trilha, aplique os plug-ins de forma offline nela. Com isso você irá processar os áudios definitivamente e na próxima vez em que reproduzir, os plug-ins não precisarão mais trabalhar. Alguns softwares possuem recursos de processamento offline temporários, como o elegante freeze do software Logic Pro.

Ainda em relação ao compromisso entre utilização de plug-ins on-line e offline, perceberemos que alguns fatores mais avançados entram em questão em uma mixagem. A disponibilidade de plug-ins em uma versão ou outra, a necessidade de alteração constante dos parâmetros (imagine o caso de um equalizador em um bumbo, em que dificilmente teremos o ajuste de parâmetros inalterado durante toda a mixagem), a necessidade de ajuste contínuo de um parâmetro durante a execução (automação) e a cadeia/fluxo de processamento. Esse último aspecto é bastante importante, pois há diferença de sonoridade de acordo com o local na cadeia de processamento no qual inserimos um efeito. Os plug-ins onl-ine fornecem mais variáveis para o mixador, uma vez que ao processar em tempo de execução, podemos trabalhar com endereçamentos mais complexos, mandadas auxiliares, processamento em cascata, entre outros recursos. Todavia, vale lembrar que há casos em que a implementação offline é a única possível, como o já citado reverse, que precisa de amostras futuras não concedidas em tempo de execução.

Conclusões importantes

Entendendo o comportamento de uma DAW e seus respectivos componentes, como vimos em artigo anterior, podemos localizar de forma fácil o papel dos plug-ins nesse contexto. Um software de áudio realiza funções de manipulação das amostras e de processamento, se comunicando com os componentes do computador e seus periféricos. Entretanto, algumas funções que não são realizadas por esse software, chamado de hospedeiro (host), podem ser realizadas por outros programas. Sendo assim, esses softwares que são executados dentro de um software principal, para realizar tarefas complementares às desse último, são chamados de plug-ins.

Como vimos, um plug-in não é privilégio dos softwares de áudio. São vários os exemplos de softwares que utilizam plug-ins, muitas vezes programados por desenvolvedores diferentes, para complementar as funcionalidades. No caso do áudio, a principal utilização de plug-ins é o processamento; isto é, um hospedeiro pode ter funções de reverberação, equalização, compressão, modulação, pitch shift, entre outras, que não necessariamente estão integradas a ele inicialmente. O plug-in, portanto, se comporta como uma caixa-preta, ou seja, o hospeiro entrega as amostras ao plug-in e, ao recebê-las de volta, não sabe o que aconteceu por dentro desses softwares (ver Figura 5). Vale aqui então sublinhar a importância da qualidade dos plug-ins. De nada adianta um software hospedeiro de qualidade se, ao receber o áudio de um desses plug-ins, o som está degradado ou com imperfeições. Tal fato não é incomum de acontecer, principalmente em versões não originais - as chamadas piratas.

Mesmo com os softwares hospedeiros não sabendo o que os plug-ins fazem por dentro, isso não significa que nós usuários não tenhamos que saber. É justamente nessa empreitada que entraremos a partir do próximo artigo. Vamos começar com os reverberadores, suas características e suas implementações.

Nenhum comentário:

Postar um comentário

Obrigado por comentar e expor sua opinião.Volte sempre e nos ajude a ajudar!