# &arts-builder;

## Introdução

Primeiro que tudo, ao tentar correr o &arts-builder; , você deverá correr também o servidor de som (o &artsd;). Normalmente, quando você usa o &kde; 2.1, este já deverá ser o caso. Se não for, você poderá configurar o arranque automático do servidor de som no &kcontrol; em Som Servidor de Som.

Quando você está a executar o &arts;, ele corre sempre módulos pequenos. O &arts-builder; é uma ferramenta para criar estruturas novas a partir de pequenos módulos interligados. Você simplesmente carrega os módulos para dentro da grelha. Para o fazer, escolha-os no menu Módulos, e carregue então algures no avião verde-e-cinzento.

Os módulos normalmente têm portos (onde normalmente entram e saem os sinais de áudio). Para ligar dois portos, carregue no primeiro, o que normalmente faz com que ele fique laranja, e carregue depois no segundo. Você poderá ligar apenas um porto de entrada (na parte de cima) com um porto de saída (na parte inferior de um módulo). Se você quiser atribuir um valor fixo a um porto (ou desligá-lo), faça duplo-click no mesmo.

## Tutorial

### Passo 1

Inicie o &arts-builder;.

Você precisa de um módulo Synth_AMAN_PLAY para ouvir a saída que está a criar. Por isso crie um módulo Synth_AMAN_PLAY, seleccionando-o em Módulos Síntese E/S de Som Synth_AMAN_PLAY e carregue no espaço em branco do módulo. Coloque-o por baixo da quinta linha ou algo do género, porque serão adicionadas aqui algumas coisas.

O módulo irá ter um parâmetro `title` ou título (o porto do lado esquerdo), um `autoRestoreID` (ao lado do porto do lado esquerdo) para o encontrar. Para os preencher, faça duplo-click nesses portos, seleccione um valor constante e escreva `tutorial` no campo de texto. Carregue em OK para aplicar.

Seleccione Ficheiro Executar a estrutura . Você não irá ouvir absolutamente nada. O módulo de reprodução ainda necessita de uma entrada... ;) Se você tiver 'ouvido' o silêncio um pouco, carregue em OK e vá para o Passo 2

### Passo 2

Crie um módulo Synth_WAVE_SIN (em Módulos Síntese Formas de onda) e coloque-o por cima do módulo Synth_AMAN_PLAY. (Deixe um espaço de uma linha entre eles).

Como poderá ver, ele produz algum resultado, mas necessita de um pos como entrada. Primeiro, vai-se ligar a saída ao altifalante. Carregue no porto out (saída) do módulo Synth_WAVE_SIN e depois no porto left (esquerda) do Synth_AMAN_PLAY. Pronto, você acabou de ligar dois módulos.

Todos os osciladores no &arts; não precisam de uma frequência à entrada, mas si de uma posição na onda. A posição deverá ser entre 0 e 1, o que se mapeia num objecto normal do Synth_WAVE_SIN no intervalo 0..2*pi. Para gerar os valores oscilantes para uma frequência, é usado um módulo Synth_FREQUENCY.

Crie um módulo Synth_FREQUENCY (em Módulos Síntese Oscilação & Modulação ) e ligue a sua saída pos na entrada pos do seu Synth_WAVE_SIN. Indique o porto 'frequency' (frequência) do gerador FREQUENCY com um valor constante 440.

Seleccione o Ficheiro Executar a estrutura. Irá ouvir uma onda sinusoidal de 440 Hz num dos seus altifalantes. Se você a tiver ouvido durante algum tempo, carregue em OK e vá para o Passo 3.

### Passo 3

OK, seria melhor se você ouvir a onda sinusoidal em ambos os altifalantes. Ligue o porto 'right' (direita) do Synth_PLAY ao 'outvalue' (saída) do Synth_WAVE_SIN.

Crie um objecto Synth_SEQUENCE (em Módulos Síntese MIDI & Sequenciação). Dever-se-á encontrar no topo do ecrã. Se precisar de mais espaço, você poderá mover os outros módulos, seleccionando-os (para seleccionar vários módulos use o &Shift;) e arrastando-os.

Agora ligue a saída 'frequency' (frequência) do Synth_SEQUENCE à entrada 'frequency' do módulo Synth_FREQUENCY. Depois, indique a velocidade da sequência como um valor constante 0,13 (o 'speed' ou velocidade é o porto mais à esquerda).

Agora vá ao porto mais à direita (o 'sequence' ou sequência) do Synth_SEQUENCE e escreva como valor constante `A-3;C-4;E-4;C-4;`; isto corresponde a uma sequência. Poderá ver mais sobre isto na Referência do Módulo.

O Synth_SEQUENCE necessita mesmo de uma sequência e da sua velocidade. Sem isto, você irá obter provavelmente alguns estoiros.

Seleccione o Ficheiro Executar a Estrutura. Você irá ver uma sequência bonita a tocar. Se gostou da sensação, carregue em OK e vá para o Passo 4.

### Passo 4

Crie um módulo Synth_PSCALE (em Módulos Síntese Envelopes ). Desligue o 'outvalue' (saída) da onda sinusoidal, fazendo duplo-click nela e escolher a opção não ligado. Ligue

1. O valor de saída do SIN ao valor de entrada do PSCALE

2. O valor de saída do PSCALE à esquerda do AMAN_PLAY

3. O valor de saída do PSCALE à direita do AMAN_PLAY

4. A posição do SEQUENCE à posição do PSCALE

Finalmente, configure o topo do PSCALE para um valor qualquer, por exemplo 0,1.

Como é que funciona então: o Synth_SEQUENCE dá informações adicionais sobre a posição da nota que está a tocar de momento, onde o 0 significa que começou agora e 1 significa que terminou. O módulo Synth_PSCALE irá ajustar o facto de escala do canal de áudio que é passado por ele, desde um volume 0 (silêncio) até 1 (volume original), voltando outra vez a 0 (silêncio), de acordo com a posição. A posição onde o pico deverá ocorrer poderá ser indicada no 'pos'. Um valor igual a 0,1 significa que, depois de ter tocado 10% da nota, o volume terá atingido o seu máximo, começando a decair a partir daí.

Seleccione Ficheiro Executar a Estrutura. Você irá ouvir uma sequência bonita a tostou da situação, carregue em OK e vá para o Passo 5.

### Passo 5: Começar a emitir os dados ;)

Inicie outro &arts-builder;

Coloque um Synth_AMAN_PLAY nele e configure-o para um nome aceitável. Coloque um Synth_BUS_DOWNLINK nele e:

1. Configure o barramento do Synth_BUS_DOWNLINK para áudio (isto é apenas um nome, chame-lhe 'manel' se quiser)

2. Ligue a esquerda do Synth_BUS_DOWNLINK à esquerda do Synth_AMAN_PLAY

3. Ligue a direita do Synth_BUS_DOWNLINK à direita do Synth_AMAN_PLAY

Comece a executar a estrutura. Como seria de esperar, não ouve nada, ... ainda.

Volte à estrutura com as coisas do Synth_WAVE_SIN e substitua o módulo Synth_AMAN_PLAY module por um Synth_BUS_UPLINK, configurando o seu nome para 'áudio' (ou 'manel', se preferir); os módulos poderão ser removidos se os seleccionar e escolher Editar Remover no menu (ou carregando na tecla Del).

Carregue em Ficheiro Executar a estrutura. Irá ouvir a sequência com as notas em escala, transportadas no barramento.

Se quiser saber porque é que algo como isto poderá de facto ser útil, carregue em OK (no &arts-builder; que está a executar o bloco do Synth_SEQUENCE; você poderá deixar o outro a correr) e ir para o Passo 6.

### Passo 6: Apontar para utilizadores avançados

Escolha a estrutura Ficheiro Mudar o nome no menu do 'artsbuilder' que contém as coisas do Synth_SEQUENCE, chamando-lhe de 'tutorial'. Carregue em OK.

Seleccione Ficheiro Gravar

Inicie ainda mais outro &arts-builder; e escolha Ficheiro Abrir , e carregar o tutorial de novo.

Agora poderá seleccionar Ficheiro Executar a estrutura em ambos os &arts-builder;s que têm estrutura. Você irá ouvir agora duas vezes a mesma coisa. Dependendo da altura em que os inicia, irá soar melhor ou pior.

Outra coisa boa para fazer nesta altura é: iniciar o &noatun; e tocar um `mp3` qualquer. Inicie o &artscontrol;. Vá a Ver Ver o gestor de áudio. O que irá ver será o &noatun; e a sua estrutura de reprodução tutorial a tocar algo. Uma coisa interessante que poderá fazer é o seguinte: faça duplo-click no &noatun;. Irá agora obter uma lista com os barramentos disponíveis. Verá também que poderá indicar ao &noatun; para enviar a sua saída através do barramento de áudio que a sua estrutura do tutorial oferece.

### Passo 7: Síntese MIDI

Finalmente, você deverá agora ser capaz de transformar a sua onda sinusoidal num instrumento real. Só faz sentido se você tiver algo útil que possa enviar eventos de &MIDI; para o &arts;. Será descrito aqui como você poderá usar um teclado externo qualquer, mas uma solução de sequenciação MIDI como o &brahms; irá funcionar da mesma forma.

Primeiro que tudo, limpe o seu ecrã até que você tenha apenas um &arts-builder; com a estrutura da onda sinusoidal aberta (mas não em execução). De seguida, vá três vezes a Portos Criar sinal de áudio IN, e outras três a Portos Criar sinal de áudio OUT. Coloque esses portos algures.

Finalmente, vá a Portos Mudar as posições e nomes e chame aos portos 'frequency' (frequência), 'velocity' (velocidade), 'pressed' (carregado), 'left' (esquerdo), 'right' (direito), 'done' (pronto).

Finalmente, você poderá remover o módulo Synth_SEQUENCE e ligar o porto de entrada 'frequency' (frequência) da estrutura ao porto 'frequency' do Synth_FREQUENCY. Hm... Mas o que fazer com o 'pos'?

Não existe isso, porque não há nenhum algoritmo no mundo onde você possa prever quando é que o utilizador solta a nota que acabou de carregar no teclado MIDI. Por isso, existe um parâmetro 'pressed' (carregado) que indica se o utilizador ainda tem a tecla pressionada ou não ('pressed' = 1: a tecla ainda está carregada, 'pressed' = 0: tecla solta)

Isto significa que o objecto Synth_PSCALE também precisa de ser substituído agora. Ligue um Synth_ENVELOPE_ADSR em alternativa (em Módulos Síntese Envelopes ). Ligue:

1. A entrada 'pressed' da estrutura ao 'active' (activo) do ADSR

2. O valor de saída do SIN ao valor de entrada do PSCALE

3. O valor de saída do ADSR à saída 'left' (esquerda) da estrutura

4. O valor de saída do ADSR à saída 'right' (direita) da estrutura

Configure os parâmetros 'attack' (ataque) igual a 0,1, 'decay' (decaimento) igual a 0,2, 'sustain' (sustentação) igual a 0,7 e 'release' (soltura) igual a 0,1.

Outra coisa em que é preciso pensar é que a estrutura do instrumento precisa de saber de alguma forma quando é que está pronta para tocar e quando poderá ser limpa, porque caso contrário nunca seria interrompida, mesmo que a nota tivesse sido solta. Felizmente, o envelope do ADSR sabes quando não há mais nada para se ouvir, dado que ele iguala o sinal a zero nalgum ponto em que a nota foi solta.

Isto é indicado ao pôr a saída 'done' (pronto) igual a 1. Por isso, ligue isto à saída 'done' da estrutura. A mesma será removida logo que o 'done' passe a 1.

Mude o nome da sua estrutura para 'instrument_tutorial' (em Ficheiro Mudar o nome da estrutura. De seguida, grave-a usando o Gravar Como (o nome por omissão que é oferecido deverá ser agora igual a 'instrument_tutorial').

Inicie o 'artscontrol' e vá a Ver Gestor de MIDI, escolhendo depois a opção Adicionar Saída MIDI de Síntese do aRts. Finalmente, você deverá ser capaz de seleccionar o seu instrumento de tutorial aqui.

Abra um terminal e escreva ``midisend``. Você irá ver que o `midisend` e o instrumento estão agora listados no gestor de &MIDI; do &arts;. Depois de seleccionar ambos e de carregar em Ligar, é tudo. Pegue no seu teclado e comece a tocar (obviamente, terá de estar ligado ao seu computador).

### Sugestões

Agora você deverá ser capaz de trabalhar com o &arts;. Ficam aqui algumas dicas que você poderá tentar para melhorar com as suas estruturas:

- Tente usar outras coisas para além de uma onda sinusoidal. Quando ligar uma onda triangular, você irá pensar que o som não é grande coisa. Mas tente adicionar um filtro SHELVE_CUTOFF logo a seguir à onda triangular para cortar as frequências acima de uma dada frequência (tente algo do género de 1000 Hz, ou mesmo duas vezes a frequência de entrada ou igual à frequência de entrada+200Hz, ou qualquer outra coisa do género).

- Tente usar mais do que um oscilador. O Synth_XFADE poderá ser usado para misturar dois sinais; use por outro lado o Synth_ADD para os adicionar.

- Tente configurar as frequências dos osciladores para valores diferentes; isto dará umas oscilações engraçadas.

- Experimente com mais do que um envelope.

- Tente sintetizar os instrumentos com resultados diferentes do lado esquerdo e do direito.

- Tente fazer o pós-processamento depois de sair da ligação de recepção do barramento. Você poderá misturar, por exemplo, uma versão atrasada do sinal ao sinal original para obter um efeito de eco.

- Tente usar a opção 'velocity' (velocidade), a qual corresponde à força com que a nota foi carregada, e poderá também dizer 'volume'). O efeito especial consiste em não só modificar o volume do sinal resultante, mas também o som do instrumento (como por exemplo a frequência de corte).

- ...

Se você criou algo engraçado, pense por favor em fornecê-lo à página Web do &arts; ou para ser incluído na próxima versão.

## Exemplos

O &arts-builder; vem com vários exemplos, os quais poderão ser acedidos através da opção Ficheiro Abrir um Exemplo... . Alguns deles estão na sua pasta correspondente, enquanto que outros (os quais não funcionam por uma razão qualquer na versão actual) são deixados na pasta 'todo'.

Os exemplos caem em várias categorias:

- Os exemplos autónomos que ilustram como usar cada um dos módulos incorporados do 'arts' (chamados `example_*.arts`). Estes tipicamente enviam um resultado qualquer para uma placa de som.

- Os instrumentos que são criados a partir de módulos de nível mais baixo (chamados de `instrument_*.arts`). Estes seguem uma convenção normal para os portos de entrada e saída para que possam ser usados no gestor de &MIDI; no &artscontrol;.

- Os modelos para criar novos módulos (denominados por `template_*.arts`).

- Os efeitos que poderão ser usados como blocos de construção reutilizáveis (chamados de `effect_*.arts`) [ tudo no 'todo' ]

- Os elementos de mistura usados para criar mesas de mistura, incluindo os controlos gráficos (chamados de `mixer_element_*.arts`). [ tudo no 'todo' ]

- Módulos diversos que não se encaixam em nenhuma das categorias acima.

## Descrição Detalhada de Cada Módulo:

`example_stereo_beep.arts`

- Gera uma onda sinusoidal de 440Hz no canal esquerdo e uma onda sinusoidal no canal direito, enviando o resultado para a saída da placa de som. Isto é referenciado na documentação do &arts;.

`example_sine.arts`

- Gera uma onda sinusoidal de 440 Hx.

`example_pulse.arts`

- Gera uma onda de impulsos de 440 Hz com um tempo de actividade de 20%.

`example_softsaw.arts`

- Gera uma onda de dente-de-serra de 440 Hz.

`example_square.arts`

- Gera uma onda quadrada de 440 Hz.

`example_tri.arts`

- Gera uma onda triangular de 440 Hz.

`example_noise.arts`

- Gera 'ruído branco'.

`example_dtmf1.arts`

- Gera um tom duplo, produzindo para tal ondas sinusoidais de 697 e 1209 Hz, ajustando a escala para 0,5 e adicionando-as em conjunto. Isto é o tom DTMF para o número "1" num teclado de telefone.

`example_atan_saturate.arts`

- Corre uma onda triangular com o filtro de saturação 'atan' (arco-tangente).

`example_autopanner.arts`

- Usa um deslocador automático para deslocar uma onda sinusoidal de 400 Hz entre os altifalantes esquerdo e direito a um ritmo de 2 Hz.

`example_brickwall.arts`

- Ajusta a escala de uma onda sinusoidal por um factor de 5 e passa-a por um limitador.

`example_bus.arts`

- Recebe de um barramento chamado Bus (Barramento) e envia para o barramento out_soundcard (saída da placa de som) com os canais esquerdo e direito invertidos.

`example_cdelay.arts`

- Recebe de um barramento chamado Delay (Atraso), envia o canal direito através de um atraso de 0,5 segundos e o esquerdo sem alterações. Você poderá usar o &artscontrol; para ligar o efeito a um reprodutor de som e observar os resultados.

`example_delay.arts`

- Este é o mesmo que o `example_cdelay.arts` mas usando o efeito de atraso.

`example_capture_wav.arts`

- Isto usa o Synth_CAPTURE_WAV para gravar uma onda sinusoidal de 400 Hz como um ficheiro WAV. Execute o módulo durante uns segundos e examine depois o ficheiro criado em `/tmp`. Você poderá tocar o ficheiro com um leitor multimédia como o noatun.

`example_data.arts`

- Isto usa o módulo Data (Dados) para gerar uma sequência constante com o valor 3 e envia-a para um módulo Debug (Depuração) que o mostra periodicamente. Também contém um módulo Nil (Nada), que ilustra como poderá ser usado para não fazer absolutamente nada.

`example_adsr.arts`

- Mostra como criar um único som de um instrumento com o módulo 'Envelope Adsr' (ADSR do Envelope), despoletado repetidamente por uma onda quadrada.

`example_fm.arts`

- Isto usa o módulo de Fonte FM para gerar uma onda sinusoidal de 440 Hz que é modulada na frequência a uma taxa de 5 Hz.

`example_freeverb.arts`

- Isto liga o efeito do Freeverb a partir do canal de recepção de um barramento a um canal de envio de outro barramento. Você poderá usar o &artscontrol; para ligar o efeito a um leitor de áudio e observar os resultados.

`example_flanger.arts`

- Isto implementa um efeito simples de 'flanger' (não parece funcionar ainda, no entanto).

`example_moog.arts`

- Esta estrutura combina os dois canais de um barramento num só, passando-o através do filtro VCF Moog, e envia o resultado para o barramento 'out_soundcard'.

`example_pitch_shift.arts`

- Esta estrutura passa o canal esquerdo dos dados da placa de som através do efeito 'Pitch Shift' (Desvio de Tom). Ajuste o parâmetro 'speed' (velocidade) para variar o efeito.

`example_rc.arts`

- Esta estrutura passa um gerador de 'ruído branco' através de um filtro RC para a placa de som. Ao ver no Osciloscópio de FFT do &artscontrol;, você poderá ver como isto varia numa forma de onda de ruído não filtrada.

`example_sequence.arts`

- Isto demonstra o módulo Sequence (sequência), tocando para tal uma sequência de notas.

`example_shelve_cutoff.arts`

- Esta estrutura passa um gerador de 'ruído branco' através de um filtro 'Shelve Cutoff' para a placa de som. Ao ver no Osciloscópio de FFT do &artscontrol;, você poderá ver como isto varia numa forma de onda de ruído não filtrada.

`example_equalizer.arts`

- Isto demonstra o módulo 'Std_Equalizer'. Ele aumenta de 6 dB as frequências altas e baixas.

`example_tremolo.arts`

- Isto demonstra o efeito Tremolo. Ele modula os canais esquerdo e direito usando um tremolo de 10 Hz.

`example_xfade.arts`

- Este exemplo mistura ondas sinusoidais de 440 e 880 Hz com um misturador cruzado. Ajuste o valor da percentagem do misturador de -1 até 1 para controlar a mistura dos dois sinais.

`example_pscale.arts`

- Isto ilustra o módulo do Pscale (não é certo se este será um exemplo compreensível).

`example_play_wav.arts`

- Isto ilustra o módulo 'Play Wave' (Tocar um WAVE). Você terá de indicar a localização completa de um ficheiro `.wav` como valor do parâmetro 'filename' (nome do ficheiro).

example_multi_add.arts

- Isto mostra o módulo Multi Add (Adição Múltipla), o qual aceita um número qualquer de entradas. Ele soma três módulos de dados que produzem entradas de 1, 2 e 3, mostrando depois o resultado 6.