Audacity: Um Programa Livre para Gravar e Editar Áudio

Políticas para Publicidade

Criar Plug-ins Nyquist

  1. Introdução às Programações Lisp e Nyquist
  2. Programar em Nyquist
  3. Criar Plug-ins Nyquist

Criar um plugin para o Audacity com o Nyquist é tão simples como criar um ficheiro de texto com a extensão ".ny", com algum código Nyquist, junto com alguns comentários a indicar o tipo de plugin e colocar esse ficheiro na pasta plug-ins, do Audacity. Este é um exemplo, muito simples, de um plugin:

  ;nyquist plug-in
  ;version 1
  ;type process
  ;name "Fade In"
  ;action "Fading In..."
  (mult (ramp) s)

A primeira linha de um plugin Nyquist tem de ser exactamente igual à do exemplo acima e a segunda linha tem de indicar a versão. As versões 2 e 3 suportam mais widgets, mas os plugins da versão 3 não são suportados pelo Audacity 1.3.3 ou anteriores. A próxima linha é o tipo de plugin, que será explorada abaixo. Depois vem o nome do plugin, que será mostrado na barra do menu, e depois a "acção", que será o que o Audacity mostrará ao processar o plugin. Há outras linhas opcionais que se podem seguir. Qualquer linha que não iniciar com ponto e vírgula (;) será lida como código Nyquist e executada, como tal.

O Audacity suporta três tipos de plugins que podem ser escritos em Nyquist:

  ;type generate
  ;type process
  ;type analyze

Estes correspondem aos três menus que podem conter plugins: Gerar, Efeitos e Analisar. Os plugins de Gerar é suposto gerarem novo áudio a partir do zero. Os plugins de Efeitos ("processam") modificam áudio já existente. E, os plugins de Analisar processam o áudio mas não o modificam (no entanto podem rótular).

Para plugins de Efeitos e Análise, o Audacity configura o ambiente do Nyquist para que o áudio seleccionado seja colocado na variável s. Todas as expressões no ficheiro, do plugin, são executadas na sua ordem e o valor retornado na última expressão substitui a selecção, no Audacity. Se na última expressão não há retorno de áudio o Audacity mostra um erro.

Caixas de diálogo do parâmetro

O Audacity tem suporte limitado a plugins que mostram caixas de diálogo para obter valores do utilizador. Aqui está um exemplo de plugin que abre uma caixa de diálogo:

  ;nyquist plug-in
  ;version 1
  ;type process
  ;name "Delay..."
  ;action "Performing Delay Effect..."
  ;info "Demo effect for Nyquist by Roger Dannenberg.\nThis effect 
     creates a fixed number of echos."  ; (should be all on one line)
  ;control decay "Decay amount" int "dB" 6 0 24
  ;control delay "Delay time" real "seconds" 0.5 0.0 5.0
  ;control count "Number of echos" int "times" 5 1 30

  (defun delays (s decay delay count)
    (if (= count 0) (cue s)
	   (sim (cue s)
        (loud decay (at delay (delays s decay delay (- count 1)))))))
  (stretch-abs 1 (delays s (- 0 decay) delay count))

Se o Audacity encontrar, pelo menos, uma linha com "control", abrirá uma caixa de diálogo para pedir ao utilizador um valor do plugin. Cada parâmetro consiste numa caixa de texto e uma barra de deslocamento e após o utilizador indicar cada um, o valor final será armazenado numa varável do Nyquist com o mesmo nome indicado na linha com "control". Aqui está o que a caixa do efeito Atraso, mencionada acima, será mostrada no Audacity, para Linux.

Captura de ecrã de um plugin Nyquist

Note que a linha com "info" é mostrada no topo da caixa de diálogo, e que "\n" torna-se numa nova linha. Os parâmetros na linha "control" afectam a aparência e as limitações do parâmetro. Cada linha "control" tem de conter em exacto os seguintes 8 elementos, na ordem:

  1. A termo "control"
  2. O nome do controlo - este é o nome da variável que o Nyquist guardará quando o utilizador manipular a caixa de diálogo.
  3. O rótulo à esquerda do controlo
  4. O tipo de valor: ou int (inteiro) ou real.
  5. O rótulo à direita do valor (geralmente unidades como "Hz" ou "dB").
  6. O valor definido/inicial do parâmetro
  7. Valor mínimo do parâmetro
  8. Valor máximo do parâmetro

Retornar rótulos

Ao invés de retornar áudio, um plugin Nyquist pode retornar uma lista de valores. A lista de valores é uma simples lista de pares rótulos/tempos, por exemplo.

  ((0.0 "start") (30.0 "middle") (60.0 "end"))

Quando um plugin retornar uma lista nesta exacta forma, o Audacity criará uma faixa de rótulos e os colocará nestas posições. Um plugin deste estilo é geralmente do tipo "análise".

Novo! Desde a versão 1.3.1, do Audacity, pode opcionalmente fazer retornar um tempo de início e um final, assim:

  ((0.0 25.0 "start") (30.0 45.0 "middle") (60.0 75.0 "end"))

Note que aos rótulos é permitida a sobreposição no Audacity 1.3; o tempo final de um pode ser após o início do seguinte.

A processar faixas estéreo

O Nyquist representa as faixas estéreo como uma cadeia de sons (não uma lista). Muitas funções do Nyquist funcionam automaticamente com estas cadeias, mas nem todas, assim, por vezes, pode achar necessário dividir uma cadeia estéreo, ou redesenhar uma. Aqui estão algumas funções úteis:

dígitos
(arrayp s)retorna verdadeiro se s é uma cadeia
(aref s 0) o primeiro elemento na cadeia s - o canal esquerdo
(aref s 1) o segundo elemento na cadeia s - o canal direito
(setf s (make-array 2)) torna s numa nova cadeia com 2
(setf (aref s 0) left) torna left o primeiro elemento da cadeia s
(setf (aref s 1) right) torna right o segundo elemento da cadeia s

Por conveniência, se o áudio indicado ao plugin Nyquist for estéreo, mas a saída será, apenas, som mono, o Audacity o copiará para ambos os canais, direito e esquerdo.

Onde ir a seguir

O Audacity tem alguns plugins simples que poderá examinar ou modificar, como ponto de partida. A melhor maneira de aprender Nyquist é testando-o. Se está a ter problemas na depuração, considere transferir a versão apenas do Nyquist (veja a ligação na Parte 1)

Se não consegue que o Nyquist funcione, de todo, por favor, contacte-nos.

Se está a trabalhar com plugins Nyquist e gostava de os partilhar ou quer saber como conseguir certos efeitos com o Nyquist, por favor, coloque uma mensagem no quadro Nyquist, do Fórum Audacity ou subescreva a lista de mailing do audacity-nyquist.

Não esqueça de consultar o Manual de Referência do Nyquist 2.37 completo, para mais detalhes sobre o Lisp e o Nyquist.