1 2 o Congreso Internacional de Acústica UNTREF Septiembre 2010, Argentina AP-GEN: FRAMEWORK GENERADOR DE ESQUELETOS DE PLUGINS DE AUDIO A PARTIR DE ABSTRACCIONES Y TEMPLATES HERNÁN ORDIALES 1 1 Consultor Independiente, Estudiante de Ingeniería en la Universidad de Buenos Aires, Argentina. h@ordia.com.ar Resumen – AP-Gen agiliza y facilita el desarrollo de plugins generando código fuente de base, tanto para diferentes estándares como para diferentes sistemas operativos, logrando de esta forma que el desarrollador pueda concentrarse en su objetivo, el procesamiento de audio. Para lograrlo, parte una serie de definiciones normalizadas y hace uso de un motor de templates. Estas definiciones pueden ser abstracciones generales del plugin, como ser cantidad y tipo de entradas y salidas de datos o controles, o pueden ser más específicas, como cuestiones relativas al sistema de construcción, metadata y detalles de cada arquitectura. Los templates, por otro lado, son los elementos que conservan las características comunes de cada estándar. La ventaja de esta forma de trabajo se haya en que una vez establecidas las propiedades de alto nivel, el paso siguiente ya puede ser el de implementar la función de procesamiento. Dejando de lado, entre otras cosas, el trabajo mecánico de escribir código de librerías, detalles del lenguaje o estándar de turno, y cuestiones de compilación de cada arquitectura. Entre otras cosas, el software provee una interfaz común para todos los generadores de plugins, lo que posibilita el agregado modular de nuevos estándares. Esta publicado como Software Libre y en la actualidad cuenta con soporte para plugins VST, LADSPA y CLAM. Abstract – AP-Gen speeds up and eases the plugin development through base source code generation, both for different standards and operating systems, thus achieving that the developer can focus on his goal, the digital audio processing. To achieve this, starts from normalized definitions and uses a template engine. These definitions could be general abstractions of the plugin, like amount and type of inputs and outputs of data or controls, or more specific ones, like the kind of the build system, metadata and even details of each architecture. On the other hand, the templates are the elements that maintain the common features of each standard. The advantage of this way of working is that, once high level aspects are established, next step can be to develop the signal processing function. Leaving aside, among other things, all the repetitive work of writing library code, programming language or current standard details, and each architecture compilation issues. Among other things, the software provides a common interface for all plugins generators, so support for new standards can be added in a modular form. Is released as Free Software and at present has support to VST, LADSPA and CLAM plugins. 1. INTRODUCCIÓN El trabajo con plugins de audio, además de permitir extender la funcionalidad de programas preexistentes, permite el uso y desarrollo de diferentes funciones de procesamiento en forma modular. Característica que otorga visibles ventajas, entre otras, el hecho de poder centrarse en objetivos más pequeños y pasar de lo simple a lo complejo concatenando módulos. Por otra parte, es común enfrentarse con problemas o incomodidades durante su ciclo de desarrollo. Para los principiantes, enfrentarse con la escasa o mala documentación y las dificultades de compilación asociadas con cada arquitectura. Son cuestiones que desmotivan en muchos casos hasta el abandono. Y para los que dominan estas cuestiones, muchas de las tareas repetitivas y la cantidad de detalles y formas que requiere cada arquitectura, hacen que se pierda constantemente mucho tiempo valioso de desarrollo. Además, el camino directo, en muchos casos lleva a un acoplamiento no conveniente entre la lógica general y la arquitectura. Estas situaciones conducen al hecho de que a veces sea útil trabajar con frameworks, o entornos de desarrollo, que organicen y/o alivianen la mencionada tarea. Este trabajo pretende contribuir a la solución de tal problemática desde un enfoque diferente. Partiendo del objetivo de evitar las malas prácticas de desarrollo de software detectadas, propone en contraposición, un nuevo esquema de trabajo general basado en abstracciones del plugin, y generadores automáticos de código fuente. El cual se encarga, entre otras cosas, de eliminar todo trabajo habitualmente mecánico y repetitivo pero necesario durante el ciclo de desarrollo. En particular, ataca la problemática del desarrollo masivo y abarcativo, en el sentido de una cantidad grande, y soportando diferentes arquitecturas de plugins de audio, tanto de tiempo real, como de procesamiento fuera de línea.