Seccion previa: Tipos de archivos de Cmix

Estructura de una partitura de Cmix


Las instrucciones de Instrumento de Cmix son interpretadas por un lenguaje que interpreta-comandos que se llama Minc (un acronismo de Minc - No es C). Minc , escrita por un estudiante de Princeton Lars Graf, es invocada automaticamente como "interfase" para cada instrumento de Cmix. Cada instrumento tiene un set de subcomandos o instrucciones que son entendidas por Minc. Estos subcomandos son similares en apariencia a las llamadas a funcion de C.

Considere como un ejemplo la siguiente partitura para el instrumento de Cmix playinst (playinst es un simple instrumento tipo oscilador wavetable-lookup; el codigo fuente es distribuido en el directorio cmix/proto en el paquete cmix):

El instrumento playinst usa tres subcomandos: output, makegen, y playinst. La funcion del subcomando output es obvia -- da el nombre al archivo de salida. Notese que los nombres de los archivos y otras cadenas de caracteres estan escritas entre comillas.

Los dos comandos makegen definen la forma de onda del oscilador y el crecimiento/decrecimiento de la envolvente de amplitud y otras envolventes de control. Los parametros de makegen varian dependiendo de que rutina gen se usa, con la exepcion de que los primeros tres parametros complen un rol fijo. El primer parametro (o, p-field) es el numero de slot del generador, el cual es determinado por el instrumento particular de Cmix que esta siendo usado. En el ejemplo de playinst arriba, es asignado el slot numero 1 como el makegen forma de onda (makegen(1,...)), y el slot numero 2 define el crecimiento/decrecimiento de la envolvente (makegen(2,...)). El segundo p-field (parametro) del subcomando makegen es siempre interpretado como el numero de rutina del gen que se va a usar para construirla forma de onda o la envolvente. La rutina 10 de gen (makegen(1, 10,...)) especifica la fuerza en armonicos de la forma de onda, a partir del parametro numero 4. el ejemplo:

creara una forma de onda con la amplitud del primer armonico 1, un segundo armonico con una amplitud 0.5, y un tercer armonico con una amplitud 0.3. la rutina gen 7 (makegen(2, 7,...)) construira una envolvente con segmento rectilineos:

construira una linea desde 0 a 1 con 1000 puntos en la tabla de envolvente, mientras:

especifica una envolvente que crece desde 0 a 1 con 500 puntos de la tabla, y que despues desde 1 a 0 por los siguientes 500 puntos. El tercer p-field del subcomando makegen determina el numero total de puntos de la tabla gen. En Cmix esto puede ser determinado con un numero arbitrario. 1000 es un buen numero de default para muchas aplicaciones. El uso de los p-fields 4 y mayores depende de la rutina gen que esta siendo usada (otra vez, la rutina gen que se usa es especificada en el parametro p2 del subcomando makegen). El archivo makegen.man1 (en cmix/man) contine una descripcion de muchas rutinas gen usadas en Cmix. El codigo fuente para todos las rutinas gen de Cmix se puede encontrar (junto con la fuente del comando makegen (en si mismo)) en el directorio cmix/sys.

El subcomando playinst del instrumento playinst tiene un grupo de parametros:

Como puede ser encontrada la informacion acerca de los intrumentos de Cmix (como los parametros de playinst)? Desafortunadamente, existe documentacion detallada para los instrumentos de Cmix. . El mejor metodo es consultar el codigo fuente para un instrumento dado. Por convencion, los parametros p-field de los instrumentos estan listados como comentario en la parte mas alta del codigo fuente. En el directorio cmix/proto el archivo playinst.c contiene esta informacion:

Los parametros del instrumento se dan, junto con la informacion que el gen en el slot 1 debe contener la forma de onda y que el gen en el slot 2 debe de ser el que contiene la envolvente creciente/decreciente. Cualquier numero de subcomandos playinst pueden ser adicionados en esta partitura de playinst. El orden temporal no importa (cmix permite tiempo de acceso arbitrario sea al archivo de entrada como al archivo de salida), pero los subcomandos output y makegen deben preceder el primer comando playinst. Estas definiciones de output y makegen seran efectivas para cualquier subcomando playinst subsiguiente, pero seran sobrepasados a un cierto punto en la partitura de Cmix por un nuevo output o makegen.

Corriendo el instrumento de Cmix playinst con la partitura del ejemplo "playinst.sco":

probablemente reportara lo siguiente:

Esto es porque el archivo de salida debe existir antes que el instrumento pueda correr. La siguiente secuencia de comandos:

producira la siguiente salida en el terminal:

Este reporte muetra los tiempos de comienzo y final del archivo de sonidos generado (0.0000 .. 7.0000), el numero de segundos que la CPU usa para producir el sonido de salida (9.25), y el pico de amplitud para el canal 0 en ese segmento de archivo (c0=9.999000e+03). Si ela rchivo de salida hubiera sido esetero, Cmix hubiera reportado picos de amplitud separados para canal 0 y canal 1.


Proxima seccion: Usando los subcomandos integrados de Cmix
Que es Cmix? -Index-