En Csound debe definir instrumentos, que son unidades que "hacen cosas" como por ejemplo crear una onda senoidal como señal de audio y reproducirla (= emitirla a la tarjeta de audio). Estos instrumentos deben ser llamados o activados desde una partitura. La "partitura" (Score) de Csound es una lista de eventos que describen cómo se van a tocar los instrumentos en el tiempo. Se puede pensar como si fuera una línea de tiempo escrita en texto.
Un instrumento Csound está contenido dentro de un bloque de instrumentos, que comienza con la palabra clave instr instr y termina con la palabra clave endin. Todos los instrumentos reciben un número (o un nombre) para identificarlos.
instr 1
... las instrucciones de los instrumentos van aquí... endin
Los eventos de la partitura en Csound son líneas de texto individuales, que pueden activar instrumentos durante un tiempo determinado. Por ejemplo, para encender el instrumento 1, en el tiempo 0, durante 2 segundos se utilizará:
i 1 0 2
Tenga en cuenta que la orquesta y la partitura son dos tipos completamente diferentes de código. La orquesta contiene el código de Csound propiamente dicho.1 Los instrumentos están escritos en el Lenguaje de Programación de Csound. La partitura es principalmente una lista de eventos. El lenguaje de la partitura es relativamente pobre y ofrece sólo algunas herramientas muy básicas.
En el código de Csound moderno, la partitura a menudo permanece vacía. Los eventos se derivan del código de la orquesta,2 o de la interacción en tiempo real, como MIDI, OSC, clics del ratón o cualquier otra entrada en vivo.
Un documento de Csound se estructura en tres secciones principales:
Cada una de estas secciones se abre con una etiqueta <xyz> y se cierra con una etiqueta </xyz>. Cada archivo Csound comienza con la etiqueta <CsoundSynthesizer> y termina con </CsoundSynthesizer>. Csound utilizará sólo lo que esté contenido entre ambas etiquetas.
EXAMPLE 02B01_DocStruct.csd
<CsoundSynthesizer>; START OF A CSOUND FILE <CsOptions> ; CSOUND CONFIGURATION -odac </CsOptions> <CsInstruments> ; INSTRUMENT DEFINITIONS GO HERE ; Set the audio sample rate to 44100 Hz sr = 44100 instr 1 ; a 440 Hz Sine Wave aSin poscil 0dbfs/4, 440 out aSin endin </CsInstruments> <CsScore> ; SCORE EVENTS GO HERE i 1 0 1 </CsScore> </CsoundSynthesizer> ; END OF THE CSOUND FILE ; Anything after a semicolon is ignored by Csound
Los comentarios, que son líneas de texto que Csound ignorará, se inician con el caracter ";" (sin comillas). Los comentarios multilínea se pueden hacer encerrándolos entre "/*" y "*/" (sin comillas).
Los "Opcodes" o "Generadores de unidades" son los componentes básicos de Csound. Los Opcodes pueden hacer muchas cosas como producir señales oscilantes, señales de filtro, realizar funciones matemáticas o incluso encender y apagar los instrumentos. Los Opcodes, dependiendo de su función, toman entradas y salidas. Cada entrada o salida se denomina, en términos de programación, un "argumento". Los Opcodes siempre toman argumentos de entrada a la derecha y emiten sus resultados a su izquierda, tal como se demuestra a continuación:
salida OPCODE entrada1, entrada2, entrada3, .., entradaN
Por ejemplo, el opcode poscil tiene 2 entradas obligatorias:3 amplitud y frecuencia, y produce una señal de onda senoidal:
aSin poscil 0dbfs/4, 440
En este caso se creará una oscilación de 440 Hertz con una amplitud de 0dbfs/4 (un cuarto de 0 dB como escala completa) y su salida será almacenada en un contenedor llamado aSin. El orden de los argumentos es importante: la primera entrada a poscil siempre será la amplitud y la segunda siempre será leída por Csound como la frecuencia.
Desde Csound6, el código se puede escribir de una manera conocida en algunos otros lenguajes de programación:3
aSin = poscil(0dbfs/4,440)
Muchos opcodes incluyen argumentos de entrada opcionales y ocasionalmente argumentos de salida opcionales. Éstos se colocarán siempre después de los argumentos esenciales. En la documentación del Manual Csound se indican con corchetes []. Si se omiten los argumentos de entrada opcionales, se reemplazan con los valores predeterminados indicados en el Manual de Csound. La adición de argumentos de salida opcionales normalmente inicia un modo diferente de ejecución del opcode: por ejemplo, una versión estéreo en oposición a la versión mono.
Una "variable" es un contenedor con nombre. Es un lugar para almacenar cosas como señales o valores desde donde pueden ser recuperados usando su nombre. En Csound hay varios tipos de variables. La manera más fácil de manejar las variables cuando se empieza a trabajar con Csound es imaginándolas como cables.
Si desea conectar estos elementos:
Generador de Sonido -> Filtro -> Salida,
necesitará al menos dos cables, uno que conecta el generador con el filtro y otro que toma la salida del filtro y lo conecta a la Salida propiamente dicha. Los cables llevan señales de audio, que son variables que comienzan con la letra "a".
aSource buzz 0.8, 200, 10, 1
aFiltered moogladder aSource, 400, 0.8
out aFiltered
En el ejemplo anterior, el opcode buzz produce una forma de onda compleja como señal aSource. Esta señal alimenta al opcode moogladder, que a su vez produce la señal aFiltered. El opcode out toma esta señal, y la envía a la salida, ya sea a los altavoces o a un archivo de sonido.
Otros tipos de variables comunes son las variables "k" que almacenan señales de control, que se actualizan con menos frecuencia que las señales de audio, y las variables "i" que son constantes dentro de cada nueva instancia de un instrumento.
Puede encontrar más información sobre los tipos de variables en el manual, o en el Csound Journal.
El Csound Reference Manual es una fuente completa sobre la sintaxis de Csound y sus opcodes. Todos los opcodes tienen su propia entrada en el manual describiendo su sintaxis y comportamiento, y el manual contiene una referencia detallada sobre el lenguaje de Csound y las opciones disponibles.
En CsoundQt puede encontrar el manual de Csound en el menú de ayuda. Puede ir rápidamente a una entrada sobre un opcode particular colocando el cursor en el opcode y presionando Shift+F1. WinXsound, Cabbage y Blue también proporcionan un fácil acceso al manual.
There has been error in communication with Booktype server. Not sure right now where is the problem.
You should refresh this page.