Scripting/es



El módulo de comandos es un complemento con interfaz experimental que permite la manipulación de Audacity usando un comando externo Perl. Los comandos son enviados a Audacity a través de un canal. Cualquier lenguaje de comandos que soporte pipas con nombre puede ser usado en lugar de Perl. Los comandos externos son una de las muchas maneras de extender la funcionalidad de Audacity.

Cómo empezar con los comandos
Audacity puede de momento solo ser usado con comandos si usted compila un módulo complementario desde el código de desarrollo SVN llamado "mod-script-pipe", a la vez que compila Audacity propiamente tal. Vea la Wiki Guía de desarrollador para ayuda. Usted también necesitará el lenguaje de comandos Pearl para probar los ejemplos. Sin embargo, para escribir secuencias cualquier lenguaje que pueda escribir y leer desde un canal con nombre debiera ser capaz de usar la interfaz.

Nosotros proveeremos un canal de comandos ya compilado en algún momento futuro. Si usted solo quiere usar comandos pero no quiere hacer los pasos de desarrollador, entonces tendrá que esperar a que esto sea liberado. Siéntase libre de decirnos si usted quiere el uso de comandos listo con Audacity, y para que lo usaría.

Compilando
Asegúrese que tiene la última versión del código de desarrollo SVN HEAD de Audacity compilada, instalada y funcionando. El módulo de comandos, "mod-script-pipe" está en SVN (bajo lib-src), pero no es compilado automáticamente.

En MSVC, abra "mod-script-pipe.vcproj" y compile. Si todo va como está planeado, el DLL será ubicado en el directorio "modules".

Bajo GCC, muévase al directorio lib-src/mod-script-pipe y escriba "make". Esto compilará el módulo, luego copie "mod-script-pipe.so" a la carpeta "modules" en el árbol del código fuente. Para que Audacity vea mod-script-pipe.so, cópielo a /usr/local/share/audacity/modules o ~/.audacity-files/modules/.

Si bien mod-script-pipe le permite a un complemento comunicarse con Audacity, no está informado de la interpretación final y procesamiento que reciben los comandos. Eso es realizado por Audacity mismo, por lo que para capacidades de comandos completas es importante tener una compilación reciente del programa principal así como también del módulo de comandos.

Probando
Un comando básico de prueba "scripts/pipe-test.pl" es incluido en el repositorio de desarrollo, Naturalmente, esto requiere Perl. Contiene una variedad de pruebas y sub-rutinas para enviar comandos en el canal.

La secuencia de prueba exporta archivos de audio a (y los importa desde) un directorio ~/pipetest/ que tendrá que crear.

Lance Audacity primero, luego ejecute el comando de prueba.

Si todo está bien, el comando será enviado a Audacity, ejecutado, y los resultados enviados de vuelta al comando.

Usted puede experimentar cambiando los comandos en la lista (ver abajo).

Si el comando se cuelga, esperando por una respuesta, probablemente significa que Audacity no cargó el módulo de comandos. Examine el registro de salida para revisar su este es el caso.

Si el módulo no fue cargado, puede ser porque no ha sido colocado en el directorio correcto o porque la versión del módulo no coincide con la versión de Audacity. La forma más segura de evitar este problema es compilar tanto Audacity como mod-script-pipe desde HEAD al mismo tiempo.

Comandos
Un poco de documentación para las partes de Audacity que actualmente pueden ser controladas mediante comandos está a continuación. Tenga presente de que esto seguramente cambiará de forma significativa hasta que el uso de comandos haya madurado. Nótese también que los comandos y parámetros son sensibles a mayúsculas.

La invocación de comandos debiera ser realizada de la siguiente manera:

Esto es seguido por una línea de quiebre. Luego el comando es ejecutado, y las respuestas son escritas en el canal de regreso, en líneas separadas El final de las respuestas es señalado con una línea en blanco. Los comandos posteriores no debieran ser enviados hasta que todas las respuestas hayan sido leídas.


 * Vea también los comandos adicionales en la Wiki de Audacity.

OpenProject
Abre un archivo de proyecto de Audacity, opcionalemente desde un nombre de archivo dado. Si el parámetro de nombre de archivo es omitido o en blanco, se le pide al usuario elegir un proyecto para abrir. Nótese que si el proyecto actual no está vacío o sin guardar, una nueva ventana de proyecto es abierta, lo que puede hacer fallar a su secuencia.

Parámetros:

Ejemplo:

SaveProject
Guarda un archivo de proyecto de Audacity, opcionalmente a un nombre de archivo dado. Si el parámetro de nombre de archivo es omitido o está en blanco, se le pide al usuario elegir un archivo guardado. Nota: intentar sobrescribir otro proyecto existente resultará en un mensaje de error para el usuario.

Parámetros: {{Param|1=Filename|2=Nombre de archivo del proyecto al cual guardar. Lo predefinido es pedir al usuario elegir un archivo. Debe incluir la extensión de archivo .aup.{{Param|1=Compress|2=¿Guardar audio en un formato con compresión (OGG)? por defecto=no}} {{Param|1=AddToHistory|2=¿Incluir archivo abierto en Archivo -> Archivos recientes? No tiene efecto en archivos elegidos por el usuario; estos siempre aparecen en los archivos recientes. por defecto=yes}}

Ejemplo: {{Send_Receive_Title}} {{Send_Receive|1=SaveProject: Filename=myproject.aup|2=SaveProject finished: OK}}

BatchCommand
Este puede ser invocado de forma diferente a los otros comandos porque, de momento, todos los comandos no reconocidos son tratados como comandos batch. Para ver que hacen estos comandos y como debieran ser formados, por favor examine el diálogo Editar secuencias. Como ejemplo, el sistema batch puede ser usado para aplicar un efecto a cierto audio seleccionado.

También es posible llamar de forma explícita un comando batch, pero sea consciente que eso no es actualmente posible que un valor de parámetro contenga espacios, por lo que esta forma de hacerlo está estrictamente prohibida. Si ChainName es proveído, el comando aplica la cadena de batch guardada de ese nombre en vez de un solo comando.

Parámetros:

Ejemplos:

CompareAudio
Con dos pistas seleccionadas, ejecutar este comando compara las pistas muestra por muestra, y cuenta el número de muestras cuyas diferencias absolutas excedan el umbral entregado. La cuenta total es regresada, así como el número de segundos de audio que esas muestras representan.

Parámetros:

Ejemplo:

MenuCommand
Ejecuta un 'comando de menú', usando el sistema que controla los menúes de Audacity. Esto es simple pero potente, y muchas de las tareas que pueden ser realizadas apretando en ítemes de menúes o presionando atajos pueden ser también lanzadas por un comando con esto. Use GetAllMenuCommands para ver una lista completa de los comandos disponibles.

Parámetros:

Ejemplos:

GetAllMenuCommands
Devuelve una lista de todos los comandos de menúes disponibles. Estos son los comandos que pueden ser enviados usando MenuCommand.

No hay parámetros.

-

GetTrackInfo
Permite que se devuelva información sobre las pistas de un proyecto al comando.

Parámetros:

Ejemplos:

Ayuda
Devuelve información sobre los parámetros aceptados por un cierto comando.

Parámetros:

Ejemplo:

Mensaje
Envía un mensaje al blanco de estado del comando. Ya que los mensajes de estado son actualmente enviados al comando (si el fue ejecutado por un comando), esto significa que el mensaje es enviado de regreso al comando.

Parámetros:

Ejemplo:

Screenshot
El comando screenshot (captura de pantalla) está modelado de forma cercana al diálogo Herramientas de captura de pantalla y toma tres parámetros.

Parámetros:

Ejemplo:

Select
Provee un poco de control sobre la selección del proyecto. Las pistas entre FirstTrack y LastTrack son también seleccionadas, y el intervalo de tiempo seleccionado es desde StartTime hasta EndTime. Alternativamente, si el TrackName es especificado, entonces la pista con ese nombre es seleccionada.

Parámetros:

Ejemplo:

GetPreference
Imprime el valor de la preferencia solicitada como respuesta.

Parámetros:

Ejemplo:

SetPreference
Ajusta la preferencia con el nombre dado al valor dado.

Parámetros:

Ejemplo:

SetTrackInfo
Para ajustar información de la pista - actualmente solo el nombre. (Nótese que Silenciar/Solo pueden ser ajustados con los comandos de menúes)

Parámetros:

which track to modify}}

Ejemplo:

Import
Carga datos de audio de un archivo a la pista. El tipo de archivo es detectado a través de la extensión, y cualquier formato entendido por Audacity puede ser usado.

Parámetros:

Ejemplo:

Export
Guarda audio del proyecto a un archivo. El tipo de archivo a exportar es detectado mediante la extensión, y cualquier formato entendido por Audacity puede ser usado.

Parámetros:

Ejemplo:

Añadiendo comandos a Audacity (para desarrolladores)
Para que un comando sea llamable desde una lista de comandos, un objeto CommandType debe ser agregado al CommandDirectory, que es una clase singleton. Un comandType tiene el trabajo de crear objetos de comando específicos, los que actualmente hacen el trabajo.

Para implementar un nuevo comando llamado Foo, es más simple crear las nuevas clases FooCommandType y FooCommand que derivan de CommandType y CommandImplementation respectivamente, y luego sobrescribir los métodos virtuales según corresponda. Luego añada una instancia de FooCommandType al CommandDirectory.

En el futuro, la naturaleza respectiva de parte de este código puede ser reducida, por ejemplo usando macros (como en wxwidgets). Para más información sobre como funciona el sistema de comandos, vea el código fuente - en particular los archivos en el directorio src/commands.

Errores conocidos y características faltantes

 * Los parámetros para un BatchCommand no pueden contener espacios.
 * Hacer uso de comandos con múltiples proyectos seguramente dará problemas.
 * Los comandos funcionan solo con un proyecto a la vez.
 * Para algunos comandos de menú, la ventana de proyecto debe tener el foco para que el comando suceda.
 * Los comandos no tienen control sobre el tipo y el nivel de detalle de las respuestas que recibe. (Relacionado: no es sencillo obtener respuestas 'output' de comandos como GetTrackInfo.)
 * Los comandos actuales pueden tener validaciones de parámetros más estrictos.
 * No hay forma consistente de abortar o interrumpir comandos.
 * Aún hay muchas partes de Audacity que no pueden ser actualmente controladas desde una lista de comandos por que los comandos para estas no han sido creados.
 * Debido a un ligero problema con la administración de módulos, el módulo de comandos no es descargado cuando Audacity es cerrado. Esto significa que los canales de comandos no son eliminados adecuadamente.
 * Puede que hayan o no problemas de seguridad relacionados al uso de canales. Queda usted advertido de no usar mod-script-pipe en un sistema con usuarios simultáneos.
 * La interfaz en el lado del comando del canal es aún de bajo nivel. Puede ser posible generar librerías para lenguajes de comandos específicos desde las descripciones internas de los comandos.