Creación de plug-ins Nyquist
- Introducción a Nyquist y a la programación en Lisp
- Programar en Nyquist
- Creación de plug-ins Nyquist
Crear un plug-in para Audacity con Nyquist es tan simple como crear un archivo de texto con la extensión ".ny" e insertar algún tipo de código Nyquist en su interior, añadiendo también algunos comentarios para indicar el tipo de plug-in. Para terminar se coloca el archivo en la carpeeta plug-ins de Audacity. A continuación se puede ver un plug-in de ejemplo:
;nyquist plug-in ;version 1 ;type process ;name "Fade In" ;action "Fading In..." (mult (ramp) s)
La primera línea de un plug-in Nyquist deben ser exactamente igual que las del ejemplo y la segunda línea debe indicar el número de versión. Los plug-ins de la versión 2 y 3 cuentan con más widgets, pero los de la versión 3 no funcionan en Audacity 1.3.3 o superior. La línea siguiente es el tipo de plug-in, que se explicará más tarde. A continuación aparece el nombre del plug-in, que es lo que se mostrará en la barra de menú, y luego la "acción", que es lo que mostrará Audacity mientras esté ocupado procesando el plugín. Puede haber algunas líneas opcionales más. Se asume que cualquier línea que no comience con un punto y coma (;) será una sentencia Nyquist y será ejecutada.
Audacity puede utilizar tres tipos de plug-ins que pueden ser implementados en Nysquist:
;type generate ;type process ;type analyze
Esto se corresponde con los tres menus que pueden contener plug-ins: Generar, Efecto y Analizar. Los plug-ins del menú Generar están pensados para generar un nuevo sonido desde cero, los de Efecto modifican algún audio ya existente y los de Analizar procesan el audio pero no lo modifican (excepto en que pueden añadir etiquetas).
Para los plug-ins de tipo Efecto y Analizar, Audacity establece el entorno de Nyquist para que el audio que se haya seleccionado por parte del usuario esté disponible en la variable s. Todas las expresiones el el archivo del plugin se ejecutan en orden y el valor que devuelve la última expresión sustituirá a la selección de Audacity. Si la última expresión no devuelve un audio, Audacity devolverá un error.
Cuadros de diálogos de parámetros
Audacity permite mostrar cuadros de diálogo para recoger parámetros indicados por el usuario para los plug-ins. Aquí se muestra un ejemplo de un plugín que despliega un cuadro 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))
Si Audacity encuentra al menos una línea de "control" se abrirá un cuadro de diálogo para consultar al usuario los valores necesarios. Cada parámetro consiste en un cuadro de texto o una barra. Cuado el usuario haya introducido cada valor estos se almacenarán en una variable Nyquist con el nombre especificado en la línea de "control". A continuación se muestra un cuadro de diálogo del efecto Delay en un Audacity ejecutándose en Linux:
Observe que la linea "info" se muestra en la parte superior del cuadro de diálogo, y que el "\n" se convierte en una nueva línea. Los parámetros de la línea de "control" afectan a la apariencia y las limitaciones del parámetro. Cada línea de control debe consistir exactamente en los siguientes 8 elementos, en orden:
- La palabra "control"
- El nombre del control: es el nombre de la variable Nyquist que se establecerá cuando el usuario manipule el cuadro de diálogo.
- La etiqueta a la izquierda del control
- El tipo del valor: tanto
int(entero ) oreal. - La etiqueta a la derecha del valor (usualmente las unidades como "Hz" o "dB").
- El valor inicial o predeterminado del parámetro
- El valor mínimo del parámetro
- El valor máximo del parámetro
Etiquetas devueltas
En lugar de devolver audio, un plug-in Nyquist puede devolver una lista de etiquetas. Una lista de etiquetas es simplemente una lista de pares tiempo/etiqueta, por ejemplo:
((0.0 "start") (30.0 "middle") (60.0 "end"))
Cuando un plug-in devuelve una lista de este modo, Audacity genera una nueva pista de etiquetas y añade cada etiqueta en su posición. Este tipo de plug-in suelen ser del tipo "Analizar".
Nuevo: Desde la versión 1.3.1 de Audacity se puede devolver tanto el instante inicial como el final:
((0.0 25.0 "start") (30.0 45.0 "middle") (60.0 75.0 "end"))
Las etiquetas en Audacity 1.3 se pueden solapar; el instante final de una puede estar después del final de la siguiente.
Procesar pistas estéreo
Nysquist representa las pistas estéro como una matriz de sonidos (no una lista). Muchas de las funciones Nyquist trabajan automáticamente con estas matrices, pero no todas, así que a veces será necesario dividir una matriz de sonido estéreo o crear una. Aquí hay algunas funciones útiles para estas tareas:
(arrayp s) | devuelve verdadero si s es una matriz |
(aref s 0) | el primer elemento de la matriz s, el canal izquierdo |
(aref s 1) | el segundo elemento de la matriz s, el canal derecho |
(setf s (make-array 2)) | convierte s en una nueva matriz de longitud 2 |
(setf (aref s 0) left) | convierte left el primer elemento de la matriz s |
(setf (aref s 1) right) | convierte right el segundo elemento de la matriz s |
Para mejorar el resultado, si la entrada del plug-in Nyquist es estério, pero la salida es un sonido mono, Audacity se encargará de copiarlo automáticamente a los dos canales.
Dónde continuar
Audacity incluye algunos plug-ins de ejemplo que le puede servir para analizarlos o modificarlos como punto de partida. La mejor manejar de aprender Nyquist es probarlo. Si encuentra algún problema corrigiendo errores, puede descargar la versión independiente de Nysquist ( en el enlace de la primera parte).
Si tiene problemas para hacer funcionar Nyquist, contacte con nosotros.
Si está creando plug-ins de efectos con Nyquist y le gustaría compartirlos con otras personas o si quiere comentar detalles sobre como conseguir determinados efectos con Nyquist, envíe un mensaje a la sección de Nyquist del foro o únase a la lista de correo de audacity-nyquist.
No olvide consultar el Manuaal de referencia de Nyquist 2.37 para conocer en profundidad como funciona Lisp y Nyquist.

