SynthEdit – construindo plug-ins

Por | 2 de junho de 2010

O mundo mudou, e muitas coisas estão mais fáceis e mais baratas. Não só por causa do avanço da tecnologia, da disponibilidade muito maior de informações e recursos através da internet, mas também pela maior facilidade de comércio que temos hoje em nosso país para a aquisição de livros, componentes eletrônicos e produtos em geral – sem mesmo ter que sair de casa! A internet também viabilizou o surgimento de fóruns, redes sociais, comunidades tecnológicas, grupos de discussão, wikis, etc. O advento do software livre e do código aberto, do shareware e do freeware também tem influenciado muito o desenvolvimento tecnológico.

O fato é que hoje o artista comum, com poucos recursos financeiros, pode dispor de uma série de recursos para produzir sua música. Há uma ampla variedade de softwares de sequenciamento e gravação, plug-ins de processadores e sintetizadores, vários deles gratuitos e de boa qualidade. Nunca se criou tanto software, graças às ferramentas de programação cada vez mais poderosas e acessíveis. Essa tendência fez com que surgissem também os softwares que criam aplicativos, como é o caso do SynthEdit, que iremos explorar nestes artigos.

SynthEdit

O SytnhEdit foi desenvolvido por um grupo de programadores da Nova Zelândia (viva a Internet!), e é um gerador de plug-ins para áudio e música baseado no padrão SEM (SynthEdit Music Plugin Standard), uma API especial para implementação de plug-ins de MIDI e de áudio.

Você pode baixar o SynthEdit diretamente da página do desenvolvedor: www.synthedit.com. Ele é distribuído na forma de shareware, e a cópia de distribuição tem poucas limitações práticas, permitindo a você testar o software efetivamente. As limitações são removidas ao registrá-lo, mediante o pagamento de US$ 50. O software já vem com vários módulos básicos necessários para compor aplicativos para diversas finalidades, mas você pode também criar seus próprios módulos programando em C++ por meio do kit de desenvolvimento (SDK), disponível na mesma página citada acima.

O Help do SynthEdit ajuda a entender o conceito e várias aplicações, e contém três tutoriais com exemplos bastante explicativos sobre como como criar funções elementares. Há um grupo de discussão no Yahoo e fóruns de colaboradores que oferecem outros módulos adicionais. Existe até um livro sobre programação de plug-ins VSTi com o SynthEdit. Em resumo, é uma comunidade técnica espalhada pelo mundo, compartilhando as mesmas ideias e informações.

Você pode criar diversos tipos de aplicativos com o SynthEdit, desde sintetizadores simples, instrumentos baseados em SoundFonts e drum machines, até processadores de efeito e analisadores de áudio. A qualidade e o desempenho do dispositivo vai depender dos algoritmos usados na programação dos módulos (e da interface de áudio, é claro). Assim, os usuários mais exigentes que tenham conhecimento de programação poderão criar módulos mais poderosos ou mais apropriados do que os fornecidos com o software.

Conceitos

Como já mencionamos, o SynthEdit é uma ferramenta para criação de aplicativos em software, mas que não requer do usuário um conhecimento de programação de software, uma vez que quase todo o processo é efetuado num ambiente gráfico, por meio de ícones. Isto permite que você se concentre no seu objetivo, que é montar um sintetizador ou um processador de efeitos, sem ter que se preocupar com variáveis, comandos, sintaxe, e toda a complexidade de uma linguagem de programação. Um projeto implementado com o SynthEdit pode conter poucos dispositivos, como um simples controle de graves e agudos, ou envolver grande complexidade, como um sintetizador com vários osciladores, filtros, geradores de envoltória e controle via MIDI.

Você pode testar as funcionalidades de seu projeto à medida que elas vão sendo incluídas. Isto dá uma boa ideia de cada parte, e também permite avaliar como cada uma delas está atuando. O processo é trabalhoso, mas nem por isto tão difícil. A melhor maneira de aprender a usar o SynthEdit é praticando primeiro os exemplos apresentados nos tutoriais do Help.Depois de montar e testar seu projeto no SynthEdit, você deverá convertê-lo num plug-in padrão VST (um arquivo com extensão .dll), que poderá então ser inserido num software sequenciador (ProTools, Sonar, Reaper, etc.) ou qualquer outro software que tenha suporte a plug-ins VST.

__________________________________________________________________________

O que é o VST

O VST (Virtual Studio Technology) foi desenvolvido pela Steinberg em 1996 e é um padrão de interface de programação que permite integrar processadores e instrumentos virtuais a softwares de gravação. Usando a interface VST, um software de áudio pode ampliar a sua funcionalidade, adicionando-se novas unidades de processamento em tempo real, incluindo recursos de automação.

A partir da versão 2.0, a tecnologia VST passou a dar suporte também a eventos de MIDI, e assim permitiu o controle da geração de sons em instrumentos virtuais, dando início à geração de instrumentos VST (ou VSTi). A Steinberg disponibiliza gratuitamente o kit de desenvolvimento (SDK) para quem quiser desenvolver aplicativos compatíveis.

Mais detalhes: Steinberg

__________________________________________________________________________

 

O ambiente de trabalho no SynthEdit é praticamente todo gráfico, requerendo poucas configurações por valores numéricos. Você constrói seus aplicativos inserindo blocos funcionais, e conectando-os apropriadamente. Conforme as funções que você desejar, os blocos vão sendo unidos em estruturas, que finalmente darão forma ao aplicativo final. Para tornar essa estrutura humanamente controlável, você implementa um painel onde ficam os controles (faders, botões, teclas, etc.) que atuam sobre os parâmetros dos blocos funcionais. Vejamos então quem são esses componentes:

Module – É o componente básico na construção de aplicativos; o SynthEdit oferece uma variedade de módulos com funções diferentes, tais como Controls (teclado, faders, knobs, etc.), Conversion (convertem grandezas lógicas em numéricas, numéricas em sinais de áudio, etc.), Filters (filtros de sinal), MIDI (entrada, saída, trigger-to-MIDI, MIDI-to-CV, etc.), Logic (portas lógicas), Math (fazem operações aritméticas), Waveform (osciladores, gerador de envoltória, etc.) e vários outros tipos.

sythedit_fig_1

Figura 1 – Exemplo de interligação de módulos básicos

No exemplo da Fig.1 podemos ver um arranjo bem simples contendo cinco módulos. O módulo Oscillator gera um sinal com a forma-de-onda selecionada pelo módulo List Entry; o sinal gerado é enviado a um amplificador (VCA), cujo ganho é controlado pelo módulo Slider; o sinal da saída do amplificador é então enviado para a saída de áudio, associada à interface de áudio instalada no computador. Você pode visualizar um quadro com as propriedades de qualquer módulo clicando nele com o botão direito, e alguns parâmetros adicionais podem ser configurados nesse quadro.

Plug – As conexões entre os módulos são efetuadas graficamente, clicando no parâmetro de um módulo e arrastando até o parâmetro de destino (se os parâmetros não forem compatíveis, não é possível fazer a conexão). O SynthEdit possui oito tipos de conexões, representados por linhas com cores diferentes: Voltage Plug (azul; usado para transferir sinal de áudio ou sinal de controle), List Plug (verde claro; usado para selecionar uma dentre as opções disponíveis no módulo), Float Plug (azul claro; usado principalmente para interligar com módulos de interface gráfica), MIDI Plug (marrom esverdeado; usado para transferir eventos MIDI), Text Plug (vermelho; serve para passar parâmetros de texto, tais como nomes de arquivos ou sub-títulos para controles do painel), GUI Plug (usado para interligar módulos de interface com o usuário) e Spare Plug (conexão adicional disponível em módulos que possam ter mais entradas e saídas).

Prefab / Container – Você pode juntar vários módulos básicos num “módulo” funcional maior, e salvar esse novo conjunto na forma de um Prefab ou Container, para que possa ser usado em outras aplicações. Dependendo do caso, isto pode economizar trabalho. O SynthEdit já vem com alguns Prefabs prontos.

Structure – É o conjunto de interconexões de Modules, Containers e Prefabs. Uma estrutura pode ser bastante simples, como o exemplo da Fig.1, ou bem complexa, como no caso do sintetizador de exemplo que vem com o SynthEdit (veja Fig.2).

sythedit_fig_2

Figura 2 – Estrutura do exemplo “Poly Synth”, fornecido com o SynthEdit

Panel – Obviamente, à medida que as estruturas ficam mais complexas, como a ilustrada na Fig.2, vai ficando cada vez mais difícil de se encontrar o parâmetro que se quer editar. Além disto, como o objetivo é construir um aplicativo usável na forma de um plug-in, dentro de um outro software, é essencial que se seja criada uma interface para o usuário (UI – user interface) adequada e com uma estética razoável. Para solucionar isto existe o Panel, que expõe somente os controles que podem ser acessados pelo usuário.

A Fig.3 mostra o painel de controles do exemplo “Poly Synth” (cuja estrutura está ilustrada na Fig.2). Embora os controles rotativos e deslizantes disponíveis tenham este design, não é muito difícil editar as características gráficas para obter componentes um pouco diferentes.

sythedit_fig_3

Figura 3 – Painel de controles do exemplo “Poly Synth”

À medida que a estrutura vai ficando complexa, cheia de módulos e conexões, é possível grupar os módulos de um bloco funcional para formar um container, e ativar nele um bloqueio para evitar que seja editado acidentalmente.

Configurações

Outro conceito importante do SynthEdit diz respeito à polifonia, isto é, o número de canais de áudio que estão sendo produzidos num plug-in de sintetizador, por exemplo. Embora a estrutura que aparece no ambiente de trabalho mostre o fluxo de um único sinal, na verdade essa estrutura é multiplicada pelo número de vozes de polifonia que existem no projeto. Por padrão, ao se inserir um módulo de entrada do tipo MIDI-to-CV, é configurada inicialmente uma polifonia de oito vozes. Isto significa que a entrada de MIDI poderá reconhecer até oito notas simultâneas, e produzir e processar simultaneamente oito sinais de áudio correspondentes obedecendo àquela estrutura. Felizmente, você pode configurar a polifonia para até 128 vozes, mas lembre-se de qu isto irá consumir mais processamento do computador.

Um recurso muito útil é a automação. Você pode definir parâmetros de automação globais ou específicos para cada patch (programa) do plug-in, e eles podem ser configurados para serem acessados via parâmetros VST ou via MIDI (control change).

sythedit_fig_4

Figura 4 – Configurando os parâmetros de automação e controle

Depois de concluir toda a estrutura, configurar o painel e os recursos de automação, você pode então salvar o projeto na forma de plug-in VST, definindo o nome do arquivo (.dll) que será criado, bem como as características essenciais para que ele possa ser reconhecido apropriadamente pelos softwares de gravação e sequenciamento.

Apesar de ser um software “enxuto”, o SynthEdit permite que você faça configurações em relação ao ambiente de trabalho, na opção de menu Preferences. É possível selecionar os dispositivos de áudio e de MIDI a serem usados pelo software durante o processo de edição e testes, bem como determinar em que pastas deverão ser salvos os projetos e os plug-ins.

Se você quiser ter uma ideia do que dá para fazer usando o SynthEdit, visite a página www.dskmusic.com. São instrumentos relativamente simples, mas com sonoridades bem interessantes e bastante usáveis.

__________________________________________________________________________

Outra opção

Uma alternativa ao SynthEdit é o SynthMaker, desenvolvido na Inglaterra. Ele segue o mesmo conceito, mas com algumas diferenças. A mais marcante é a interface com o usuário, com um ambiente de trabalho muito mais elegante. Ele já vem com inúmeros blocos e módulos já prontos, e é possível criar uma grande variedade de aplicações na forma de plug-ins VST e também como softwares autônomos (standalone), que não precisam ser executados dentro de um outro software (host).

sythedit_fig_5

Fig.5 – SynthMaker

Apesar da interface gráfica mais elegante, a elaboração do aplicativo me pareceu um pouco mais confusa e menos intuitiva do que no SynthEdit, mas o visual dos plug-ins podem ficar bem mais atraentes. Vale a pena testar também.

Você pode baixar uma cópia do SynthMaker para testes diretamente da página do fabricante (www.synthmaker.co.uk). A cópia expira em 30 dias e os plug-ins criados com ela produzem um ruído periódico. Para liberar essa limitação, você terá que adquirir o software, que é comercializado em duas versões: Standard Edition (US$ 225), que permite ao usuário comercializar livremente os produtos criados com o software, e Personal Edition (US$ 133), que não dá direito ao usuário de comercializar os produtos criados, mas somente distribuí-los de forma gratuita e identificados com a marca SynthMaker.

__________________________________________________________________________

 

Construindo um sintetizador básico

Como a ideia aqui é dar uma visão geral, não nos aprofundaremos em detalhes, mas apenas nos conceitos e procedimentos fundamentais para que se possa ter uma noção razoável de como usar o SynthEdit. Desta forma, iremos construir um plug-in de sintetizador bastantes simples.

Assumindo que você já possui o SynthEdit instalado, então certifique-se de que há também uma interface de áudio disponível no computador. Caso você queira controlar o sintetizador virtual por um teclado externo, então será preciso também uma interface de MIDI e um teclado MIDI externo, ou então um teclado MIDI conectado via USB.

Durante o processo de construção e teste do sintetizador, você não precisará usar outro software, pois é possível controlar o plug-in dentro do próprio SynthEdit. Em primeiro lugar, é preciso criar o ambiente operacional para trabalhar. Abra o menu Edit / Preferences e selecione os dispositivos de áudio e de MIDI que deseja usar no processo de desenvolvimento. No quadro Preferences (na aba File Locations), você pode também configurar as pastas onde ficarão os arquivos dos seus projetos. Ainda neste quadro, na aba General, você pode selecionar o idioma Português para (somente) os títulos de menu. Para iniciar um novo plug-in, crie um novo projeto, usando o menu File / New ou simplesmente clicando no ícone da folha em branco. Será criado um quadro vazio, denominado “SynthEdit”. Salve o projeto e dê um nome a ele, usando o menu File / Save As. No nosso exemplo, chamaremos o plug-in de “RMT”, em homenagem à revista…

Como o nosso projeto é um sintetizador que será controlado via MIDI (por um teclado ou por uma sequência MIDI), então o primeiro módulo a ser inserido no plug-in é a entrada de MIDI, por onde serão recebidas as mensagens de controle. Para isto, no menu Insert selecione o grupo “MIDI” e escolha o módulo MIDI In. Este módulo envia por seu terminal MIDI Data os dados MIDI que são recebidos pela entrada do dispositivo de MIDI, isto é, seu teclado MIDI ou a pista de MIDI do software sequenciador.

Como a estrutura do nosso sintetizador é uma modelagem digital de circuitos eletrônicos analógicos, os dados produzidos pelo módulo MIDI In têm que ser compatibilizados para atuar como um sinal adequado aos módulos subsequentes. Isto é feito pelo módulo MIDI to CV, também pertencente ao grupo “MIDI” do menu Insert, que converte os comandos MIDI em sinais virtuais de tensão elétrica (CV = Control Voltage). Conecte então um módulo ao outro da seguinte maneira: clique no terminal MIDI Data do módulo MIDI In e arraste a linha até o terminal MIDI In do módulo MIDI to CV; aparecerá então uma seta (“plug”) indicando esta conexão. Veja a Figura 6. Você também pode inserir os módulos no projeto simplesmente clicando com o botão direito do mouse no quadro e selecionando a opção Insert.

sythedit_fig_6

Figura 6 – Primeiros módulos do sintetizador

Durante o processo de construção e testes do sintetizador, pode ser útil visualizar os comandos de MIDI que são recebidos pelo SynthEdit através do módulo MIDI In. Para poder fazer isto, insira no projeto o módulo MIDI Monitor, e conecte o terminal MIDI In deste módulo ao terminal MIDI Data do módulo MIDI In. Clique no ícone de “Play” na barra de ferramentas do SynthEdit, para que o processamento seja iniciado, toque algumas notas no seu teclado MIDI e observe os comandos de notas na telinha do MIDI Monitor. Se os comandos não aparecerem, verifique novamente as instalações e conexões de MIDI e confirme também a configuração de MIDI no quadro Preferences do SynthEdit. Se tudo estiver correto, você verá os comandos MIDI de Note On e Note Off, como ilustrado na Figura 7.

sythedit_fig_7

Figura 7 – Visualizando os comandos MIDI recebidos

Se o seu teclado transmite via MIDI um comando de “atividade” (Active Sense), e muitos o fazem, você verá também uma infinidade de comandos designados por SYSTEM (FE). Mas não se assuste, pois esses comandos são inofensivos para o plug-in. O módulo MIDI Monitor é um recurso de apoio para o desenvolvimento do sintetizador, e poderá ser retirado do projeto antes de finalizarmos o plug-in, para que não apareça na versão definitiva do sintetizador.

O sintetizador que vamos construir será baseado no processo de síntese subtrativa (o SynthEdit também permite criar instrumentos baseados em síntese FM e samples). A estrutura mínima para um sintetizador deste tipo é constituída por:

Oscilador: é o elemento que gera o sinal inicial. Nos sintetizadores analógicos, é um circuito controlado por tensão (VCO = Voltage Controlled Oscillator), isto é, a frequência do sinal gerado é proporcional à tensão aplicada na entrada do oscilador (a maioria dos sintetizadores antigos usava a relação 1 volt/oitava). O oscilador analógico produz sons puramente sintéticos, geralmente oferecendo opções de formas de onda diferentes, tais como senoidal, dente-de-serra, triangular, quadrada, etc.

Filtro: é o elemento que permite suprimir harmônicos e modificar o som original. Em geral é um circuito do tipo passa-baixas (low-pass), que elimina as frequências que estejam acima de determinado valor (frequência de corte). Nos sintetizadores analógicos, também é um circuito controlado por tensão (VCF = Voltage Controlled Filter), onde a frequência de corte é ajustada por um valor de tensão aplicada na entrada de controle. A maioria dos filtros dos sintetizadores oferece ainda um controle da ressonância, uma ênfase no sinal na região próxima à frequência de corte.

Amplificador: é o elemento que permite controlar a amplitude do som. Nos sintetizadores analógicos, é mais um circuito controlado por tensão (VCA = Voltage Controlled Amplifier), onde a amplitude do sinal que atravessa o amplificador é ajustada por um valor de tensão aplicada na entrada de controle.

Além dos controles estáticos (fixos) do filtro e do amplificador, os sintetizadores oferecem um recurso muito interessante que é o gerador de envoltória. Ele produz um sinal de quatro ou mais estágios que é aplicado à entrada de controle do elemento (VCF, VCA) para lhe impor um comportamento variável ao longo da execução da nota. Para controlar dinamicamente o filtro e o amplificador, usaremos dois desses geradores de envoltória, com estágios ajustáveis.

Como todos esses elementos já estão disponíveis prontos no SynthEdit, nosso trabalho será, basicamente, ligar um módulo a outro da maneira apropriada.

Ouvindo sons

Agora que já temos a entrada de MIDI funcionando, antes de adicionar os módulos de síntese vamos preparar a saída de áudio, inserindo o módulo Sound Out (menu Insert / Input-Output). Este módulo permite direcionar os sinais gerados pelo sintetizador para as saídas disponíveis no dispositivo de áudio. E para podermos ter um controle do nível de saída, vamos incluir o módulo do amplificador e um controle de volume para ele. Assim, selecione o módulo VCA (menu Insert / Modifiers) e o módulo Slider (menu Insert / Controls). Ligue o terminal Output do VCA aos terminais 1 e 2 do Sound Out (para poder sair com o som em ambos os canais de saída). Em seguida, ligue o terminal Signal Out do Slider ao terminal Volume do VCA, e antes de experimentar qualquer som, reduza o nível no Slider. Veja na Fig. 8 como devem ficar as conexões.

sythedit_fig_8

Figura 8 – A saída de áudio

Para verificar se a estrutura de entrada e saída está funcionando, deixe o Slider num nível bem baixo, clique no ícone Play do SynthEdit e em seguida vá aumentando o Slider até ouvir o som num nível adequado (um sinal básico de onda dente-de-serra). Tudo certo? Então vamos construir o si tetizador propriamente dito.

Para gerar os sinais básicos, vamos inserir o módulo Oscillator (menu Insert / Waveform), que produz formas de onda senoidal, dente-de-serra, quadrada, etc., como nos velhos sintetizadores analógicos. Para poder selecionar as formas de onda do oscilador, vamos incluir também o módulo List Entry (menu Insert / Controls), e ligar seu terminal Choice ao terminal Waveform do módulo Oscillator. Para poder ouvir as opções de forma de onda, faça uma ligação do terminal Audio Out do módulo Oscillator ao terminal Signal do módulo VCA (veja Fig. 9). Acione o ícone Play (mantendo o Slider numa posição de volume baixo) para ouvir cada opção. Esta ligação é provisória, porque ainda será incluído o filtro no meio do caminho do sinal.

sythedit_fig_9

Figura 9 – Selecionando as formas de onda

Para dar dinâmica e personalidade ao sinal produzido pelo oscilador, vamos incluir um gerador de envoltória, implementado aqui pelo módulo ADSR2 (menu Insert / Waveform), e ainda quatro controles para ajustar os estágios da envoltória, implementados por mais quatro módulos Slider (menu Insert / Controls). Ligue os terminais Signal Out de cada um desses Slider aos terminais Attack, Decay, Sustain e Release do módulo ADSR2.

Para que o gerador de envoltória possa seja acionado e atue durante a execução da nota MIDI, ligue também o terminal Gate de MIDI to CV ao terminal Gate de ADSR2. E para que este último possa controlar de fato o nível do sinal, ligue seu terminal Signal Out ao terminal Volume do VCA. Faça ainda uma pequena alteração: desconecte do terminal Volume de VCA o terminal Signal Out do primeiro Slider que inserimos, e então conecte-o ao terminal Overall Volume de ADSR2. Com isso, o módulo ADSR2 passa a comandar totalmente o nível do sinal, de maneira dinâmica (envoltória) e estática (volume geral). Veja na Fig.9 o resultado deste passo; observe que os Sliders de controle do ADSR2 foram renomeados para Attack, Decay, Sustain e Release. Para renomear qualquer módulo, basta clicar nele com o botão direito, escolher a opção Properties, e então escrever o nome desejado no campo Title.

Por fim, para que o oscilador produza a frequência correspondente à nota MIDI que você toca, ligue o terminal Pitch de MIDI to CV ao terminal Pitch de Oscillator.

Com o que foi construído até agora, temos o seguinte funcionamento: os comandos de notas MIDI recebidos através do módulo MIDI In são convertidos em sinais de controle (tensão virtual) pelo módulo MIDI to CV, que manda o sinal correto para que o módulo Oscillator produza um sinal (cuja forma de onda é escolhida) na frequência correspondente à nota MIDI; o sinal do oscilador é introduzido no VCA, que modifica o nível de acordo com os ajustes do Sliders ligados ao ADSR2; este, por sua vez, é disparado pelo sinal de Gate vindo também do módulo MIDI to CV; o sinal sai pelo VCA, já com o nível devidamente modulado pelo ADSR2 e vai para a saída de áudio do computador. Engenhoso e eficiente!

sythedit_fig_10

Figura 10 – Controlando a envoltória dinâmica do sinal

Se você quiser rearranjar os módulos para fazer espaço na área de trabalho, basta arrastá-los até a posição desejada. Para arrastar vários módulos ao mesmo tempo, selecione-os clicando e arrastando num perímetro em torno deles (ou então mantenha pressionada a tecla Ctrl e clique em cada um dos módulos desejados), e depois arraste todo o grupo.

Se você não quiser que apareça o valor numérico do ajuste de um Slider, basta clicar nele com o botão direito do mouse, escolher Properties, e no item Show Read Out escolher a opção “false”. Observe que em Properties há outras opções de configuração do módulo. No caso do Slider, você pode escolher também a sua aparência (item Appearance), com várias alternativas além do controle deslizante vertical (Vert Slider) padrão. Por exemplo: se você quiser que os controles do ADSR2 fiquem mais parecidos com os botões do antigo sintetizador Moog, escolha a opção “knob”. Vale a pena testar as várias alternativas.

Com isto, você já pode obter sons com características bem diferentes. Toque no teclado e experimente. Aumente os ajustes de Attack e de Release para obter sons “lentos”; reduza todos os ajustes para obter sons de pizzicato; ajuste o Attack para um nível baixo (ataque rápido), o Decay para um nível menos baixo (menos rápido), o Sustain para o mínimo e o Release para um nível baixo, e obtenha um som percussivo com dinâmica similar à de um piano.

Se você não possui um teclado MIDI, poderá controlar o seu sintetizador usando um teclado virtual. Insira o módulo Keyboard (menu Insert / Controls) e ligue seu terminal MIDI Out ao terminal MIDI In do módulo MIDI to CV. Clique com o mouse sobre as pequenas teclas virtuais ou use o teclado do computador para acioná-las. É bastante prático quando não se tem um teclado MIDI à disposição.

Você provavelmente já deve ter percebido que, embora o sintetizador possua um só oscilador, ele é capaz de produzir duas ou mais notas simultâneas. Isto é possível por causa do gerenciamento inteligente de polifonia do SynthEdit. Quando o sintetizador recebe um comando de nota via MIDI, o módulo MIDI to CV traduz este comando em sinais de controle para o oscilador e demais módulos da estrutura. Se você tocar várias notas ao mesmo tempo, serão gerados múltiplos sinais desses, que acionarão um igual número de estruturas clones, de maneira que o sintetizador possa executar e processar corretamente todas aquelas notas. Ou seja, a estrutura que vemos na área de trabalho do SynthEdit contém, na verdade, estruturas idênticas em paralelo para poder gerar as notas simultâneas. A polifonia máxima do SynthEdit é de 128 notas simultâneas, mas você pode limitar a polifonia a um determinado valor ou mesmo determinar que o sintetizador opere em modo monofônico (igual aos “velhos” analógicos), configurando os parâmetros Polyphony e Mono Mode, nas opções de Properties do módulo MIDI to CV.

Lembre-se, no entanto, que a quantidade de notas que poderão ser geradas – assim como os demais processamentos que poderão ser executados – pelo seu plug-in vão depender diretamente do desempenho do computador em que ele estiver sendo usado.

Dando vida ao som – controlando o timbre

O projeto que temos até agora já dá para tocar, mas ainda está longe de pode ser chamado de sintetizador de verdade. Vamos então incluir nele alguns recursos que permitem manipular a “coloração” do som.

No processo de síntese mais usado nos sintetizadores analógicos antigos e na maioria dos sintetizadores digitais atuais, o timbre é manipulado pela subtração de harmônicos, daí o nome de síntese subtrativa. Isto é realizado pelo filtro, que permite delimitar a gama de frequências que são produzidas, sendo que esse ajuste também pode ser variável no decorrer da execução da nota. O tipo de filtro mais comum nos sintetizadores é o “passa-baixas” (low-pass), que permite a passagem das frequências abaixo de determinado valor. Neste tipo de filtro, geralmente temos dois parâmetros ajustáveis: a frequência de corte (cut-off frequency), que determina o ponto limite de passagem, e a ressonância (resonance), que permite enfatizar as frequências próximas à frequência de corte. O primeiro parâmetro é quem possibilita tornar o som mais “vivo” ou “brilhante” (quando todas as frequências passam) ou mais “abafado” (quando poucas frequências passam). A ressonância, por sua vez, é o parâmetro que permite criar sons “sibilantes”.

Voltando ao SynthEdit, vamos então usar o módulo SV Filter (menu Insert / Filters), que pode ser configurado para operar como filtro passa-baixas (low-pass), passa-altas (hi-pass), passa-faixa (band-pass) ou rejeita-faixa (band-reject). No fluxo do sinal do sintetizador, o filtro deve ficar entre o oscilador e o VCA, portanto é necessário desfazer a ligação existente entre o terminal Audio Out do Oscillator e o terminal Signal do ADSR2, para então ligar o terminal Audio Out do Oscillator ao terminal Signal de SV Filter, e o terminal Low Pass deste ao terminal Signal do ADSR2 já existente (que controla o VCA).

Para permitir que a frequência de corte varie no decorrer da execução da nota, usaremos outro gerador de envoltória ADSR2, também com quatro controles deslizantes (Sliders) para os ajustes dos estágios de Attack, Decay, Sustain e Release. Para tornar a tarefa mais fácil, basta selecionar o ADSR2 e respectivos Sliders já existentes, copiá-los e colá-los na área de trabalho. Em seguida, vamos ligar o terminal Gate do MIDI to CV também ao terminal Gate desse novo ADSR, e ligar o terminal Signal Out do novo ADSR ao terminal Pitch do SV Filter. Dos Sliders que foram copiados, desligue o Slider denominado “Volume”, e ligue-o ao terminal Resonance do SV Filter; em seguida renomeie-o apropriadamente como “Resonance”.

sythedit_fig_11

Figura 11 – Controlando dinamicamente o timbre e a amplitude do sinal

Temos agora uma estrutura mais complexa, conforme mostra a Fig.11: a nota recebida via MIDI é convertida por MIDI to CV, que aciona o oscilador, determinando a frequência da nota e ao mesmo tempo dispara os dois geradores de envoltória (ADSR2), que por sua vez controlam o comportamento do SV Filter (moldando o timbre do sinal inicial gerado pelo oscilador) e do VCA (conformando a amplitude do som final). Aumentando o ajuste da ressonância você poderá dar mais ênfase ao som, tornando-o mais cortante ou sibilante.

Dentre as opções de filtros disponíveis (menu Insert / Filters), cabe destacar o Moog Filter. Este módulo é uma simulação do famoso circuito desenvolvido por Bob Moog na década de 1960, que era um filtro passa-baixas de 24 dB/oitava composto por uma pilha de transistores. Este módulo recria as não linearidades dos componentes analógicos do circuito original, respondendo de forma diferente a níveis diferentes, podendo, inclusive, oscilar. Seu comportamento é bem diferente (e mais interessante) do que o do SV Filter, quando se usa uma quantidade alta de ressonância. Também vale a pena experimentar.

Incluindo um painel e salvando o plug-in

Embora você consiga agora tirar um som interessante do seu sintetizador, olhando agora seu projeto o que aparece na verdade é um diagrama, mais para engenheiro do que para músico, com um visual pouco estético para um produto final. E à medida que você for incluindo mais módulos, controles e recursos, acabará tendo um emaranhado de linhas, setas e blocos. É hora então de organizar melhor a estrutura e criar uma “interface do usuário”, isto é, um painel que contenha os controles dispostos adequadamente e não mostre o que não é preciso.

Uma primeira providência será eliminar os módulos de controle que não são mais necessários, como é o caso do MIDI Monitor, para que não apareçam no produto final e reduzam o processamento no plug-in. Em seguida, é recomendável grupar elementos afins em novos blocos, chamados de “containers”. No nosso caso, este procedimento será bastante simples.

Selecione todos os módulos, exceto MIDI In e Sound Out, e grupe-os num container, usando o menu Edit / Containerise Selection. Dê a esse container o nome que deseja para o sintetizador: clique no container com o botão direito do mouse, selecione Properties, e no campo “Title” escreva um nome para ele (ex: RMT-Synth). Como este container é o próprio sintetizador, e queremos que todos os seus controles apareçam, então clique no container com o botão direito do mouse, selecione Properties, e configure o item Controls on Parent para a opção “true” (verdadeiro).

Para criar o painel de controle, clique com o botão direito no container e escolha a opção Panel Edit. Aparecerá um novo quadro com o nome do container, com fundo azul (que é a configuração padrão) e com os controles deslizantes provavelmente desordenados. Arraste com o mouse os controles para as posições que você deseja no painel. Para organizar melhor e melhorar a estética do painel, você pode grupar os controles dentro de numa mesma moldura, clicando com o botão direito e escolh ndo a opção Panel Group (menu Insert / Controls). No nosso exemplo, vamos criar molduras para cada grupo de controles (oscilador, filtro, amplificador). As dimensões das molduras podem ser ajustadas com o mouse, e a área que aparece visível no quadro Panel Edit é o que aparecerá no painel do plug-in VST.

Para nomear uma moldura, basta clicar com o botão direito nela, selecione Properties, e então mudar o nome no item Text. Se você quiser, também poderá alterar a cor padrão (azul) do painel para preta clicando com o botão direito, selecionando Skin e escolhendo a opção “prophetblack”.

sythedit_fig_12

Figura 12 – Arranjo dos controles no painel, depois de colocar os módulos do sintetizador num container

Uma vez que todos os módulos desejados estão implementados e funcionando corretamente no projeto, é hora de finalizá-lo como um verdadeiro plug-in, o que é efetuado usando-se o menu File / Save as VST. Você terá que dar um nome ao plug-in e ao arquivo DLL que será gerado. Dependendo da estrutura utilizada, o SynthEdit também criará uma pasta com o mesmo nome do plug-in, contendo os arquivos necessários para o seu funcionamento. Todos esses arquivos serão salvos no local que você determinou no menu Edit / Preferences / File Locations, e você deverá copiá-los para a pasta onde ficam os plug-ins VST do seu software (geralmente denominada “vstplugins”).

Pronto. Agora é só abrir o plug-in de dentro do software favorito de produção musical (desde que ele suporte o padrão VST) e experimentá-lo como mais uma opção de instrumento virtual nas suas músicas.

E tem mais

O que mostramos neste artigo é um pequeno exemplo do que se pode fazer com o SynthEdit. A ideia, como anunciamos no início, era apresentar esta ferramenta poderosa, que permite explorar um novo mundo de imensas possibilidades, a um preço acessível e sem demandar conhecimento prévio de programação. Você terá à sua disposição recursos suficientes para produzir seus próprios instrumentos, sejam sintetizadores (incluindo FM), sample-players ou máquinas de ritmo, e também variedades de processadores de áudio, desde simples módulos de chorus ou delay, até vocoders, analisadores de áudio e outros dispositivos mais sofisticados. Você poderá ainda criar nos seus plug-ins tabelas de memórias de programas (patches), controles automatizáveis, etc.

Se você quiser se aprofundar nos vários outros recursos do SynthEdit, eu recomendo o livro “Visual VST/i Programming”, com textos (em inglês) de três autores alemães e editado pela Wizoo Publishing (www.wizoobooks.com). O livro é comercializado em formato PDF, por US$ 16, e vale o preço. Além de dar uma visão geral sobre o SynthEdit, ele apresenta inúmeros detalhes sobre os módulos, suas conexões e seus controles, interface do usuário, e outros potenciais que dificilmente você descobriria sozinho.

 

Este artigo foi publicado na revista Música & Tecnologia em abril de 2010.

Copyright ©2010 Miguel Ratton