Programação Nyquist
Aprenda a criar scripts Nyquist para processamento e geração de áudio no Audacity.
O que você vai aprender
- Escrever scripts Nyquist básicos
- Criar plugins customizados
- Usar controles de usuário
- Processar áudio matematicamente
- Gerar sons sintéticos
Antes de começar
- Conceito de Nyquist Prompt
- Conceito de Sample Rate
- Familiaridade com lógica de programação
Introdução ao Nyquist🔗
Nyquist é um dialeto de Lisp criado por Roger Dannenberg para síntese e processamento de áudio. No Audacity, ele é acessado via Tools > Nyquist Prompt....
Sintaxe Básica🔗
; Comentários começam com ;
; Notação prefixada (polonesa):
(+ 1 2) ; → 3
(* 3 4) ; → 12
(sqrt 16) ; → 4Variáveis e Sinais🔗
A variável s representa o áudio selecionado:
; Reduz volume pela metade
(mult s 0.5)
; Inverte o áudio
(reverse s)
; Aplica filtro passa-baixa
(lowpass8 s 1000)Em áudio estéreo, s é um array: (aref s 0) é o canal esquerdo, (aref s 1) é o direito.
Criando um Plugin com Controles🔗
Para criar um plugin que aparece no menu de efeitos:
;nyquist plug-in
;version 3
;type process
;name "Volume Adjust"
;action "Adjusting volume..."
;control level "Volume" float "linear" 1.0 0.0 2.0
(mult s level)Headers Explicados🔗
| Header | Significado |
|---|---|
;version 3 | Versão do Nyquist |
;type process | Tipo: generate, process, analyze |
;name | Nome do efeito no menu |
;action | Mensagem durante processamento |
;control | Define um controle de usuário |
Controles de Usuário🔗
;control name "Label" type "unit" default min max
Tipos de controle:
| Tipo | Descrição |
|---|---|
float | Número decimal (slider) |
int | Número inteiro |
choice | Menu de opções |
string | Texto |
Exemplos Práticos🔗
Gerador de Tom com Fade🔗
;nyquist plug-in
;version 3
;type generate
;name "Tom com Fade"
;action "Gerando tom..."
;control freq "Frequência (Hz)" float "" 440 20 20000
;control dur "Duração (s)" float "" 2 0.1 30
;control amp "Amplitude" float "" 0.5 0.0 1.0
(mult (fmosc (hz-to-step freq) (pwe 1 dur))
(pwlv 0 0 amp dur 0)
amp)Detector de Picos (Análise)🔗
;nyquist plug-in
;version 3
;type analyze
;name "Detector de Picos"
;action "Analisando picos..."
(let ((peak (peak s ny:all)))
(format nil "Pico: ~a dB" (linear-to-db peak)))
📷 Plugin Nyquist no menu de efeitos — criado com headers adequados
nyquist-plugin-menu.png
Funções Úteis🔗
Processamento🔗
(lowpass8 s freq) ; Filtro passa-baixa
(highpass8 s freq) ; Filtro passa-alta
(scale factor s) ; Escala o sinal
(reverse s) ; Inverte o áudio
(s-abs s) ; Valor absoluto (retifica)
(rms s) ; Valor RMS
(peak s ny:all) ; Pico máximoGeração🔗
(fmosc step fm) ; Oscilador FM
(osc step) ; Oscilador simples
(noise duration) ; Ruído branco
(silence duration) ; SilêncioMatemática🔗
(hz-to-step freq) ; Hz para step MIDI
(step-to-hz step) ; Step MIDI para Hz
(linear-to-db val) ; Linear para dB
(db-to-linear db) ; dB para linearErros comuns
- Parênteses desbalanceados.
- Confundir
type processcomtype analyze: se o script retorna texto, useanalyze. Se modifica áudio, useprocess. - Testar sem salvar.
- Scripts lentos.
Perguntas para reflexão
- Qual variável representa o áudio selecionado?
- s
- Qual header define um plugin de análise?
- type analyze
- Qual função aplica filtro passa-baixa?
- lowpass8
- Nyquist é baseado em quê?
- Lisp
Você aprendeu
- Nyquist é dialeto de Lisp para áudio
- s = áudio selecionado
- Headers definem tipo e controles
- control cria parâmetros de usuário
- Funções: lowpass8, highpass8, fmosc, noise
- Salve scripts como .ny