Tutorial - Espanol Csound

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 39

TUTORIAL

SOBRE EL DISEÑO DE
INSTRUMENTOS
CON CSOUND

por Richard Boulanger, Berklee College of Music


Traducción al Español, Servando Valero

1.1 Introducción
1.1.1 La Sección de Cabecera
1.1.2 La Sección de Instrumentos
1.1.3 Sentencias de Orquesta
1.1.4 Comentarios

1.2 Tutorial 1: Ejecutar una nota

1.3 Tutorial 2: "Campos p"

1.4 Tutorial 3: Envolventes

1.5 Tutorial 4: Efectos de Coro

1.6 Tutorial 5: Vibrato

1.7 Tutorial 6: GENs

1.8 Tutorial 7: Fundidos

1.9 Tutorial 8: Soundin

Manual Público de Referencia de Csound 1 Suplemento - Tutoriales


1.10 Tutorial 9: Reverberación Global Stereo

1.11 Tutorial 10: Ruido Filtrado

1.12 Tutorial 11: Carry, Tempo, y Sort


1.21.1 Carry
1.12.2 Ramping
1.12.3 Tempo
1.12.4 Secciones de la Partitura
1.12.5 Añadiendo Tiempo Extra
1.12.6 Sort

1.13 Tutorial 12: Tablas y Etiquietas

1.14 Tutorial 13: Fusión Espectral

1.15 Cuando las cosas suenan mal

1.16 Sugerencias para seguir estudiando

Manual Público de Referencia de Csound 2 Suplemento - Tutoriales


1.1 Introducción al Tutorial

Los instrumentos de Csound son creados en un fichero orquesta, mientras que la lista de notas
a ser ejecutadas se escribe en un fichero partitura separado. Ambos pueden ser creados
usando un procesador de textos estándar. Cuando ejecutas Csound con una orquesta y
partitura determinadas, la partitura es ordenada en el tiempo, la orquesta traducida y cargada y
las tablas de onda calculadas y rellenadas antes de ejecutar la partitura. La partitura "dirige" a la
orquesta indicándole a los distintos instrumentos cuándo y durante cuánto tiempo han de tocar,
así como qué parámetros deben usar durante el transcurso de cada evento de nota.

A diferencia de los sintetizadores comerciales por hardware de hoy dia, que tienen una serie
limitada de osciladores, generadores de envolvente y filtros, así como un número limitado de
maneras en las que éstos pueden ser interconectados, la potencia de Csound no se ve limitada
de forma alguna. Si quieres un instrumento con cientos de osciladores, generadores de
envolvente y filtros, lo único que tienes que hacer es teclearlos. Y aún más importante es la
absoluta libertad a la hora de interconectar los módulos y de interrelacionar los parámetros que
los controlan. Como los intrumentos acústicos, los instrumentos de Csound pueden exhibir una
delicada sensibilidad natural al contexto musical y demostrar un nivel de "inteligencia musical" al
cual los sintetizadores por hardware no pueden ni tan siquiera aspirar.

Debido a que la intención de este tutorial es familiarizar al principiante con la sintaxis del
lenguaje, diseñaremos varios instrumentos simples. Encontrarás muchos instrumentos
sofisticados como los descritos arriba en el libro de Csound (The Csound Book, MIT Press) o
siguiendo los enlaces del la Página Principal de Csound del MIT http://mitpress.mit.edu/e-
books/csound/frontpage.html. Un estudio detallado de dichos instrumentos revelará la
potencia real de Csound. De todas formas, esperando que encuentres en los ejemplos que
siguen los bloques de construcción básicos necesarios, te animo a que modifiques y amplies
cada uno de ellos y te recomiendo que intentes hacer cada partitura un poco más musical e
interesante. Bien, ¡empecemos!

En Csound, el fichero orquesta tiene dos partes principales:

1. la sección de cabecera - donde definimos la frecuencia de muestreo, la frecuencia de


control y el número de canales de salida.

2. la sección de instrumentos - donde se diseñan los distintos instrumentos.

1.1.1 LA SECCIÓN DE CABECERA


Una orquesta de Csound genera señales a dos frecuencias - una frecuencia de audio y una de
control. Cada una puede representar señales con frecuencias no más altas que la mitad de la

Manual Público de Referencia de Csound 3 Suplemento - Tutoriales


suya propia, pero es útil distinguir entre señales de audio y señales subaudio de control, puesto
que esta distinción permite que las señales que se mueven más lentamente consuman menos
tiempo de cálculo. En la cabecera siguiente hemos especificado una frecuencia de muestreo de
44.1 kHz, una frecuencia de control de 4410 Hz y posteriormente se especifica el número de
muestras en cada período de control usando la siguiente fórmula: ksmps = sr / kr
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1

En las orquestas y partituras de Csound el espaciado es arbitrario. Es importante ser coherente


en la forma de escribir los ficheros, siendo el uso de espacios o tabulaciones de gran ayuda. En
los intrumentos del Tutorial mostrados a continuación podrás ver que hemos adoptado un
determinado convenio. El lector podrá escoger éste o el suyo propio.

1.1.2 LA SECCIÓN DE INSTRUMENTOS


Todos los instrumentos son numerados y referenciados según dicho número en la partitura. Los
instrumentos de Csound son similares a los patches de un sintetizador por hardware. Cada
instrumento consiste en una serie de "generadores simples", o "módulos" de software, que son
conectados mediante bloques de variables de entrada/salida de tipo i-, k- o a-. A diferencia de
un módulo en hardware, uno en software tiene un número variable de "argumentos" que el
usuario debe proporcionar para determinar su comportamiento. Los cuatro tipos de variables
son:
sólo en la configuración inicial
variables de tipo i-, actualizadas cada nota
variables de tipo k-, actualizadas a freucencia de control
variables de tipo a-, actualizadas a frecuencia de audio

1.1.3 SENTENCIAS DE LA ORQUESTA


Cada sentencia ocupa una única línea y tiene el mismo formato básico:
resultado acción argumentos

Incluir un oscilador en nuestra orquesta puede especificarse de la siguiente manera:

a1 oscil 10000, 440, 1

Los tres "argumentos" de este oscilador proporcionan su amplitud (10000), su frecuencia (440
Hz) y su forma de onda (1). La salida es puesta en la variable de E/S a1. Este símbolo de
salida es significativo, ya que especifica la frecuencia a la que el oscilador debe generar la señal
de salida - en este caso a frecuencia de audio. Podríamos haber llamado al resultado de
cualquier otro modo (por ejemplo asig), siempre que dicho nombre empezara por la letra "a".

Manual Público de Referencia de Csound 4 Suplemento - Tutoriales


1.1.4 COMENTARIOS
Para incluir texto, en la orquesta o la partitura, que no sea interpretado por el programa como
código, hay que precederlo de un punto y coma (;). Esto permite documentar y comentar
extensamente tu código. En cada línea, cualquier texto que siga a un punto y coma será
ignorado por los traductores de orquesta y partitura.

Manual Público de Referencia de Csound 5 Suplemento - Tutoriales


1.2 Tutorial 1: Ejecutar una nota

El primer fichero orquesta, llamado toot1.orc contiene un único instrumento que usa una
unidad oscil para ejecutar una onda sinusoidal a 440 Hz (definida por f1 en la partitura) con
una amplitud de 10000.
instr 1
a1 oscil 10000, 440, 1
out a1
endin

Ejecútala con su correspondiente partitura, toot1.sco :


f1 0 4096 10 1 ; usa GEN01 para calcular una onda sinusoidal
i1 0 4 ; ejecuta "instr 1" en tiempo 0
; durante 4 segundos
e ; indica el final de la partitura

1 000 0 440

O S C IL
f1
( a1)

OUT

Tutorial 1: oscil

Manual Público de Referencia de Csound 6 Suplemento - Tutoriales


Manual Público de Referencia de Csound 7 Suplemento - Tutoriales
1.3 Tutorial 2: "Campos p"

El primer instrumento no era demasiado interesante porque sólo podía tocar una nota a un
determinado nivel de amplitud. Podemos hacerlo más interesante permitiendo que la altura y la
amplitud se definan mediante parámetros en la partitura. Cada columna en la partitura constituye
un campo paramétrico (abreviado campo p), numerados de izquierda a derecha. Los primeros
tres campos p de la sentencia i tienen una función reservada.
p1 = número de instrumento
p2 = instante de comienzo
p3 = duración

Todos los demás campos p son considerados según la manera en la que el diseñador de sonido
los defina en sus instrumentos. En el instrumento siguiente, por ejemplo, el argumento de la
amplitud del oscilador es reemplazado por p4 y el argumento de la frecuencia por p5. Ahora
podemos cambiar estos valores a frecuencia de inicialización, esto es, con cada nueva nota de
la partitura. La orquesta y la partitura quedan ahora así:
instr 2
a1 oscil p4, p5, 1 ; p4=amplitud
out a1 ; p5=frecuencia
endin

f1 0 4096 10 1 ; onda sinusoidal


; instrumento comienzo duración amplitud(p4) frecuencia(p5)
i2 0 1 2000 880
i2 1.5 1 4000 440
i2 3 1 8000 220
i2 4.5 1 16000 110
i2 6 1 32000 55
e

p4 p5

O S C IL
1
( a1)

OUT

Tutorial 2: oscil con campos p

Manual Público de Referencia de Csound 8 Suplemento - Tutoriales


1.4 Tutorial 3: Envolventes

Aunque en nuestro segundo instrumento podíamos controlar y variar la amplitud total de nota a
nota, sería más musical si pudieramos modelar la intensidad sonora durante el transcurso de
cada una de dichas notas. Para hacerlo, necesitaremos emplear un generador linen adicional,
que viene definido en el Manual de Referencia de Csound como:
kr linen kamp, irise, idur, idec
ar linen xamp, irise, idur, idec

linen es un modificador de señales, capaz de calcular su salida a cualquiera de las frecuencias


disponibles, de audio o control. Como planeamos usarlo para modificar el envolvente de
amplitud del oscilador, escogeremos la segunda versión. Tres de los argumentos de linen
esperan variables de tipo i-. El cuarto espera en un caso una variable de tipo k- (o cualquier
variable más lenta), y en el segundo caso una variable de tipo x- (lo que significa una variable de
audio o más lenta). Nuestro linen tomará su amplitud de p4.

La salida de linen (k1) es conectada al argumento kamp de un oscilador. De esta forma


aplicamos un envolvente a dicho oscilador. Los ficheros orquesta y partitura son:
instr 3
k1 linen p4, p6, p3, p7 ; p4=amplitud
a1 oscil k1, p5, 1 ; p5=frecuencia
out a1 ; p6=dur. del ataque
endin ; p7=dur. de la caida

f1 0 4096 10 1 ; onda sinusoidal


;instr com duración amp(p4) frec(p5) ataque(p6) caida(p7)
i3 0 1 10000 440 .05 .7
i3 1.5 1 10000 440 .9 .1
i3 3 1 5000 880 .02 .99
i3 4.5 1 5000 880 .7 .01
i3 6 2 20000 220 .5 .5
e

Manual Público de Referencia de Csound 9 Suplemento - Tutoriales


L IN E N

( k1)
p5

O S C IL
1
(a 1 )

Tutorial 3: linen aplicado sobre un oscil

Manual Público de Referencia de Csound 10 Suplemento - Tutoriales


1.5 Tutorial 4: Efectos de Coro

A continuación daremos vida a un sonido simple mezclándolo con dos copias de sí mismo
ligeramente desafinadas. Utilizaremos el convertidor de valor cpspch de Csound, que nos
permite especificar la altura en formato "octava.nota", en lugar de como frecuencia. Usaremos
el convertidor ampdb para especificar la intensidad sonora en dB, en lugar de linealmente.

Como estamos añadiendo las salidas de tres osciladores, cada uno con el mismo envolvente de
amplitud, escalaremos las amplitudes antes de mezclarlos. Ambos iscale y inote son nombres
arbitrarios para hacer el código un poco más fácil de leer. Cada uno es una variable de tipo i-,
evaluada cuando el instrumento es inicializado.
instr 4 ; tutorial 4.orc
iamp = ampdb(p4) ; convierte dB a amplitudes
iscale = iamp/3 ; escala la amplitud
; en la inicialización
inote = cpspch(p5) ; convierte "octava.nota" a Hz
k1 linen iscale, p6, p3, p7 ; p4=amplitud
a3 oscil k1, inote*.996, 1 ; p5=frecuencia
a2 oscil k1, inote*1.004, 1 ; p6=duración del ataque
a1 oscil k1, inote, 1 ; p7=duración de la caída
a1 = a1 + a2 + a3
out a1
endin

f1 0 4096 10 1 ; onda sinusoidal


;instr comie duración amp(p4) frec(p5) ataque(p6) caída(p7)
i4 0 1 75 8.04 .1 .7
i4 1 1 70 8.02 .07 .6
i4 2 1 75 8.00 .05 .5
i4 3 1 70 8.02 .05 .4
i4 4 1 85 8.04 .1 .5
i4 5 1 80 8.04 .05 .5
i4 6 2 90 8.04 .03 1
e

Manual Público de Referencia de Csound 11 Suplemento - Tutoriales


p5

C P SP C H
( in o te )

L IN E N

( k1) 1 .00 4 . 996

O S C IL O S C IL O S C IL
1 1 1
( a1) (a 2 ) ( a3)

Tutorial 4: múltiples oscils con convertidores de valor

Manual Público de Referencia de Csound 12 Suplemento - Tutoriales


1.6 Tutorial 5: Vibrato

Para añadir un vibrato retardado a nuestro instrumento en coro, usaremos otro oscilador para
el vibrato y un generador de segmentos lineales, linseg, como medio para controlar el retardo.
linseg es un generador de señales de audio o control que traza una serie de segmentos de
líneas rectas entre cualquier número de puntos especificados. El manual de Csound lo describe
como:
kr linseg ia, idur1, ib[, idur2, ic[...]]
ar linseg ia, idur1, ib[, idur2, ic[...]]

Como queríamos usarlo para escalar lentamente la cantidad de señal proviniente de nuestro
oscilador de vibrato, escogeremos la versión que trabaja a frecuencia de control. Las variables
de tipo i-: ia, ib, ic, etc., son los valores de los puntos de inflexión. Las variables de tipo i-:
idur1, idur2, idur3, etc., especifican la duración, en segundos, entre segmentos.
instr 5 ; tutorial5.orc
irel = .01 ; ajusta la dur
; de caída del
; vibrato
idel1 = p3 * p10 ; calcula el
; retardo
; inicial
isus = p3 - (idel1 + irel) ; calcula la
; duración
; restante
iamp = ampdb(p4) ; p4=amplitud
iscale b iamp * .333
inote = cpspch(p5) ; p5=frecuencia
k3 linseg 0, idel1, p9, isus, p9, irel, 0 ; p6=dur ataque
k2 oscil k3, p8, 1 ; p7=dur caída
; Vibrato:
k1 linen iscale, p6, p3, p7 ; p8=frecuencia
a3 oscil k1, inote*.995+k2, 1 ; p9=profundidad
a2 oscil k1, inote*1.005+k2, 1 ; p10=retardo
; (0-1)
a1 oscil k1, inote+k2, 1
out a1+a2+a3
endin

;tutorial5.sco
f 1 0 4096 10 1
;ins com dur amp frq at caí frecvib profvib retvib
i5 0 3 86 10.00 .1 .7 7 6 .4
i5 4 3 86 10.02 1 .2 6 6 .4
i5 8 4 86 10.04 2 1 5 6 .4
e

Manual Público de Referencia de Csound 13 Suplemento - Tutoriales


L IN S E G

(k 3 )
p8

p5 O S C IL
1
C P SP C H ( k2)
( in o te )

L IN E N 1. 005 .99 5

( k1)

O S C IL O S C IL O S C IL
1 1 1
( a1) (a 2 ) ( a3)

Tutorial 5: Vibrato

Manual Público de Referencia de Csound 14 Suplemento - Tutoriales


1.7 Tutorial 6: Gens

El primer carácter en una sentencia de partitura es un opcode, que determina un permiso de


acción. Los datos restantes consisten en los campos p númericos que van a usarse en dicha
acción. Hasta ahora hemos estado tratando con dos opcodes diferentes en nuestra partitura:
sentencias f y sentencias i. Estas últimas, o sentencias de nota, activan el instrumento p1 en el
instante p2 y lo desactivan después de p3 segundos. Todos los restantes campos p se pasan al
instrumento.

Por otra parte, las sentencias f, o líneas con un opcode f, llaman a subrutinas de dibujo de
funciones, llamadas GENs. En Csound hay actualmente 23 rutinas GEN, las cuales rellenan
tablas con formas de onda de maneras diferentes. Por ejemplo, GEN01 transfiere los datos de
un fichero de sonido; GEN07 te permite construir funciones a partir de segmentos de líneas
rectas; GEN10, que hemos estado usando en nuestros ejemplos hasta ahora, genera formas de
onda complejas compuestas por la suma ponderada de ondas sinusoidales simples. Hemos
nombrado la función "f1", invocada en el instante 0, definida para que contenga 512 puntos y
usamos GEN10 para rellenar esa tabla de onda con un único sinusoide cuya amplitud es 1.
GEN10 puede de hecho ser usado para aproximar una gran variedad de otras formas de
onda, como se ilustra a continuación.
f1 0 2048 10 1
; Sinusoidal
f2 0 2048 10 1 .5 .3 .25 .2 .167 .14 .125 .111
; Diente de Sierra
f3 0 2048 10 1 0 .3 0 .2 0 .14 0 .111
; Cuadrada
f4 0 2048 10 1 1 1 1 .7 .5 .3 .1
; Pulso

Para el opcode f, los primeros cuatro campos p se interpretan de la siguiente manera:


p1 - número de tabla - En la orquesta, se referencia esta tabla por su
número.
p2 - instante de creación de la tabla - Instante en el que es generada
la tabla.
p3 - tamaño de la tabla - Número de puntos en la tabla - Debe ser una
potencia de 2, o eso mismo más 1.
p4 - subrutina generadora - Cual de las subrutinas GEN se empleará
para rellenar la tabla.
p5 -> p? - significado dependiente de cada subrutina GEN.

En el instrumento y partitura que sigue, hemos añadido tres funciones adicionales a la partitura y
modificado la orquesta para que los instrumentos puedan llamarlas via p11.
instr 6 ; tutorial6.orc
ifunc = p11 ; selecciona la
; forma de onda
irel = .01 ; ajusta vibrato
release

Manual Público de Referencia de Csound 15 Suplemento - Tutoriales


idel1 = p3 * p10 ; calcula
; el retardo
; inicial

isus = p3 - (idel1 + irel) ; calcula


; la duración
; restante
iamp = ampdb(p4)
iscale = iamp * .333 ; p4=amp
inote = cpspch(p5) ; p5=frec
k3 linseg 0, idel1, p9, isus, p9, irel, 0 ; p6=ataque
k2 oscil k3, p8, 1 ; p7=caída
; Vibrato:
k1 linen iscale, p6, p3, p7 ; p8=frecuencia
a3 oscil k1, inote*.999+k2, ifunc ; p9=profundidad
a2 oscil k1, inote*1.001+k2, ifunc ; p10=retardo
; (0-1)
a1 oscil k1, inote+k2, ifunc
out a1 + a2 + a3
endin
; tutorial6.sco
f1 0 2048 10 1 ; Sinusoide
f2 0 2048 10 1 .5 .3 .25 .2 .167 .14 .125 .111 ; Diente Sierra
f3 0 2048 10 1 0 .3 0 .2 0 .14 0 .111 ; Cuadrada
f4 0 2048 10 1 1 1 1 .7 .5 .3 .1 ; Pulso
;ins com dur amp frec ataq caída vibrt profund retardo onda(f)
i6 0 2 86 8.00 .03 .7 6 9 .8 1
i6 3 2 86 8.02 .03 .7 6 9 .8 2
i6 6 2 86 8.04 .03 .7 6 9 .8 3
i6 9 3 86 8.05 .03 .7 6 9 .8 4
e

Manual Público de Referencia de Csound 16 Suplemento - Tutoriales


L IN S E G

(k 3 )
p8

p5 O S C IL
1
C P SP C H ( k2)
( in o te )

L IN E N 1. 001 .99 9

( k1)

O S C IL O S C IL O S C IL
p 11 p 11 p11
( a1) (a 2 ) ( a3)

Tutorial 6: GENs

Manual Público de Referencia de Csound 17 Suplemento - Tutoriales


1.8 Toot 7: Fundidos

Ahora añadiremos la posibilidad de hacer un fundido lineal entre cualquier par de nuestras
cuatro formas de onda básicas. Emplearemos nuestro esquema de vibrato retardado para
regular la velocidad del fundido.
instr 7 ; tutorial7.orc
ifunc1 = p11 ; forma de onda
; inicial
ifunc2 = p12 ; forma de onda
; del fundido
ifad1 = p3 * p13 ; calcula
; el fundido
; inicial
ifad2 = p3 - ifad1 ; calcula
; la duración
; restante
irel = .01 ; caída del
; vibrato
idel1 = p3 * p10 ; calcula
; el retardo
; inicial
isus = p3 - (idel1 + irel) ; calcula
; la duración
; restante
iamp = ampdb(p4)
iscale = iamp * .166 ; p4=amp
inote = cpspch(p5) ; p5=frec
k3 linseg 0, idel1, p9, isus, p9, irel, 0 ; p6=ataque
k2 oscil k3, p8, 1 ; p7=caída
; Vibrato:
k1 linen iscale, p6, p3, p7 ; p8=frec
a6 oscil k1, inote*.998+k2, ifunc2 ; p9=profundidad
a5 oscil k1, inote*1.002+k2, ifunc2 ; p10=retard0
; (0-1)
a4 oscil k1, inote+k2, ifunc2 ; p11=onda
; inicial
a3 oscil k1, inote*.997+k2, ifunc1 ; p12=onda
; cruzada
a2 oscil k1, inote*1.003+k2, ifunc1 ; p13=duración
; del fundido
a1 oscil k1, inote+k2, ifunc1
kfade linseg 1, ifad1, 0, ifad2, 1
afunc1 = kfade * (a1+a2+a3)
afunc2 = (1 - kfade) * (a4+a5+a6)
out afunc1 + afunc2
endin

; tutorial7.sco

Manual Público de Referencia de Csound 18 Suplemento - Tutoriales


f1 0 2048 10 1 ; Onda
; sinusoidal
f2 0 2048 10 1 .5 .3 .25 .2 .167 .14 .125 .111 ; Diente de
; Sierra
f3 0 2048 10 1 0 .3 0 .2 0 .14 0 .111 ; Cuadrada
f4 0 2048 10 1 1 1 1 .7 .5 .3 .1 ; Pulso

;ins com dur amp frc atq caí vibfrc vbprf viret ondaini ondafi fund
i7 0 5 96 8.07 .03 .1 5 6 .99 1 2 .1
i7 6 5 96 8.09 .03 .1 5 6 .99 1 3 .1
i7 12 8 96 8.07 .03 .1 5 6 .99 1 4 .1
e

LINSEG

(k3)
p8

p5 OSCIL
1
CPSPCH (k2)
(inote)

LINEN 1.003 .997 1.002 .998

(k1)

OSCIL OSCIL OSCIL OSCIL OSCIL OSCIL


p1 1 p1 1 p1 1 p12 p12 p12

(a1) (a2) (a3) (a4) (a5) (a6)

LINSEG

(kfade)

(afunc1)
1

(afunc2)

Tutorial 7: Fundido

Manual Público de Referencia de Csound 19 Suplemento - Tutoriales


1.9 Toot 8: Soundin

Ahora, en lugar de continuar mejorando el mismo instrumento, diseñaremos uno completamente


nuevo. En él, leeremos un fichero de sonido desde la orquesta, le aplicaremos un envolvente de
amplitud y le añadiremos algo de reverberación. Para hacerlo emplearemos los generadores
soundin y reverb de Csound. El primero viene descrito como:
a1 soundin ifilcod[, iskiptime[, iformat]]

soundin deriva su señal de un fichero preexistente. ifilcod puede ser el nombre del fichero
entre comillas o un entero (.n) que indica la extensión de un fichero "soundin". Así el fichero
soundin.5 puede ser referenciado tanto por su nombre completo entre comillas, como por
el entero 5. Para leer el fichero desde los 500 ms de su comienzo debemos especificar:
a1 soundin "soundin.5", .5

El generador reverb de Csound está compuesto realmente de cuatro filtros peine paralelos,
más dos filtros pasatodo en serie. Aunque podríamos diseñar una variante propia usando estas
mismas primitivas, el preset reverb es suficientemente satisfactorio, simulando la respuesta
natural de una sala mediante los valores de sus parámetros internos. Sólo se requieren dos
argumentos: la entrada (asig) y el tiempo de reverberación (krvt).
ar reverb asig, krvt

El instrumento con lectura de un fichero de sonido al que se le aplica el envolvente y la


reverberación (incluida directamente) es el siguiente:
instr 8 ; tutorial8.orc
idur = p3
iamp = p4
iskiptime = p5
iattack = p6
irelease = p7
irvbtime = p8
irvbgain = p9
kamp linen iamp, iattack, idur, irelease
asig soundin "soundin.aiff", iskiptime
arampsig = kamp * asig
aeffect reverb asig, irvbtime
arvbreturn = aeffect * irvbgain
out arampsig + arvbreturn
endin

;tutorial8.sco
;ins com dur amp salto ataque caída tiemporvb gananciarvb
i8 0 1 .3 0 .03 .1 1.5 .2
i8 2 1 .3 0 .1 .1 1.3 .2
i8 3.5 2.25 .3 0 .5 .1 2.1 .2
i8 4.5 2.25 .3 0 .01 .1 1.1 .2
i8 5 2.25 .3 .1 .01 .1 1.1 .1
e

Manual Público de Referencia de Csound 20 Suplemento - Tutoriales


“s o u nd i n.a i ff” p5

SO U N DIN
(a s ig ) L IN E N
p8
( kam p)
R EV ER B
(a r a m p s ig )
(a e ff e ct )

p9
( a rv r b re t u r n )

Tutorial 8: soundin

Manual Público de Referencia de Csound 21 Suplemento - Tutoriales


1.10 Tutorial 9: Reverberación Global Estéreo

En el ejemplo previo puedes haber notado que el sonido fuente de soundin se cortaba al final de
cada nota, porque la reverberación estaba dentro del instrumento en sí. Es mejor crear un
instrumento "acompañante", un instrumento de reverberación global, al que pueda ser mandada
la señal fuente. Hagámoslo también estéreo.

Las variables son zonas de memoria donde guardamos números. En Csound pueden ser de dos
tipos: locales o globales, estando disponibles continuamente ambos tipos durante la ejecución
y pudiendo ser actualizados a cualquiera de las cuatro frecuencias vistas anteriormente:
configuración, inicialización de nota (tipo i-), frecuencia de control (tipo k-) y de audio (tipo a-).

Las variables locales (que empiezan con una letra p, i, k o a) son privadas a un instrumento
particular. No pueden ser leídas ni manipuladas desde ningún otro instrumento.

Las variables globales son zonas de memoria accesibles por todos los instrumentos. Tres de
los mismos tipos de variables (i-, k- y a-) son válidos, pero estas tres letras deberán ser
precedidas por la letra "g", para identificarlas como "globales". Las variables globales se usan
para contener valores generales, como medio de comunicación entre los diferentes instrumentos
y para mandar señales de sonido de un instrumento a otro.

El instrumento de reverberación instr 99 de abajo recibe su entrada del instr 9 mediante la


variable global de audio garvbsig. Como instr 99 se añade a esta variable global, varias copias
de instr 9 pueden hacer lo mismo sin perder con ello ningún dato. La suma requiere que
garvbsig sea limpiada antes de cada pasada de control a través de todos los instrumentos
activos. Esto se consigue primero por una sentencia init en la cabecera de la orquesta, que da
al instrumento de reverberación un número más alto que cualquier otro instrumento (los
instrumentos son ejecutados en orden numérico) y luego limpiando garvbsig dentro de instr 99
una vez sus datos han sido colocados en reverb.
sr = 44100 ; tutorial9.orc
kr = 4410
ksmps = 10
nchnls = 2 ; estéreo
garvbsig init 0 ; 0 en la inicialización
; de la orquesta

instr 9
idur = p3
iamp = p4
iskiptime = p5
iattack = p6
irelease = p7
ibalance = p8 ; panning: 1=izq, .5=centro,
; 0=derecha
irvbgain = p9

Manual Público de Referencia de Csound 22 Suplemento - Tutoriales


kamp linen iamp, iattack, idur, irelease
asig soundin "soundin.aiff", iskiptime
arampsig = kamp * asig
outs arampsig * ibalance, arampsig * (1 - ibalance)
garvbsig = garvbsig + arampsig * irvbgain
endin

instr 99 ; reverberación global


irvbtime = p4
sig reverb garvbsig, irvbtime ; pone la señal global
; en el reverb
outs sig, asig
garvbsig = 0 ; entonces lo limpia
endin

En la partitura activamos el reverberador global en el instante 0 y lo mantenemos activo hasta


irvbtime después de la última nota.
; ins com dur tiemporvb ; tutorial9.sco
i99 0 9.85 2.6

;ins com dur amp salto ataq caida balance(0-1) rvbsend


i9 0 1 .5 0 .02 .1 1 .2
i9 2 2 .5 0 .03 .1 0 .3
i9 3.5 2.25 .5 0 .9 .1 .5 .1
i9 4.5 2.25 .5 0 1.2 .1 0 .2
i9 5 2.25 .5 0 .2 .1 1 .3
e

Manual Público de Referencia de Csound 23 Suplemento - Tutoriales


0
in str 9

“ so un d in .a i ff” p5 IN IT
( g arv b sig )
SO U N DI N in st r 9 9
L IN E N
( asig )
(kam p) ( g arv b sig )
( g arv b sig ) p4
( a ra m p s ig )
p9
RE V ER B
p8 1 p8 ( asig )
( g a rv b sig )

g a rvb sig = 0

Tutorial 9: Reverberador Global Estéreo

Manual Público de Referencia de Csound 24 Suplemento - Tutoriales


1.11 Tutorial 10: Ruido Filtrado

El siguiente instrumento usa la unidad rand de Csound para producir ruido y la unidad reson
para filtrarlo. El ancho de banda de reson será especificado en la inicialización, pero su
frecuencia central será barrida mediante una unidad line, a lo largo de un amplio espectro de
frecuencias, durante cada nota. Añadiremos reverberación, como en el tutorial anterior.
garvbsig init 0

instr 10 ; tutorial10.orc
iattack = .01
irelease = .2
iwhite = 22050
idur = p3
iamp = p4
isweepstar = p5
isweepend = p6
ibandwidth = p7
ibalance = p8 ; pan: 1 = izquierda, .5 = centro,
; 0 = derecha
irvbgain = p9
kamp linen iamp, iattack, idur, irelease
ksweep line isweepstart, idur, isweepend
asig rand iwhite
afilt reson asig, ksweep, ibandwidth
arampsig = kamp * afilt
outs arampsig * ibalance, arampsig * (1 - ibalance)
garvbsig = garvbsig + arampsig * irvbgain
endin

instr 100
irvbtime = p4
asig reverb garvbsig, irvbtime
outs asig, asig
garvbsig = 0
endin

;tutorial10.sco
; ins com dur tiemporvb
i100 0 15 1.1
i100 15 10 5

;ins com dur amp barrin barrfin ancho balance(0-1) rvbsend


i10 0 2 .05 5000 500 20 .5 .1
i10 3 1 .05 1500 5000 30 .5 .1
i10 5 2 .05 850 1100 40 .5 .1
i10 8 2 .05 1100 8000 50 .5 .1
i10 8 .5 .05 5000 1000 30 .5 .2
i10 9 .5 .05 1000 8000 40 .5 .1
i10 11 .5 .05 500 2100 50 .4 .2

Manual Público de Referencia de Csound 25 Suplemento - Tutoriales


i10 12 .5 .05 2100 1220 75 .6 .1
i10 13 .5 .05 1700 3500 100 .5 .2
i10 15 5 .01 8000 800 60 .5 .15
e

10000

RAN D L IN E
( a si g )
(k s w e e p )

p8 p5

R E SO N
L IN E N
( a s ig )
( kam p )
( g a r v b s ig )
( a r a m p s ig )
p9

p8 1 p8
( g a r v b si g )

Tutorial 10: Ruido Filtrado

Manual Público de Referencia de Csound 26 Suplemento - Tutoriales


1.12 Tutorial 11: Carry, Tempo y Sort

Usaremos ahora un instrumento de cuerda punteada para explorar las posibilidades de


preprocesado de partituras de Csound. Como vamos a centrarnos en la partitura, el
instrumento se presenta sin explicación alguna.
instr 11
asig1 pluck ampdb(p4)/2, p5, p5, 0, 1
asig2 pluck ampdb(p4)/2, p5 * 1.003, p5 * 1.003, 0, 1
out asig1+asig2
endin

La partitura puede ser dividida en secciones ordenadas en el tiempo por la sentencia s. Antes
de la ejecución, cada sección es procesada por tres rutinas: Carry, Tempo, y Sort. La
partitura toot11.sco tiene múltiples secciones con cada uno de los ejemplos siguientes,
presentados de ambas maneras.

1.12.1 CARRY
La opción Carry permite indicar, mediante un punto (".") en un campo p, el mismo valor que el
del mismo campo p de la línea anterior, siempre que el instrumento sea el mismo. Así los
siguientes dos ejemplos son idénticos.
;ins com dur amp frec | ; ins com dur amp frec
i11 0 1 90 200 | i11 0 1 90 200
i11 1 . . 300 | i11 1 1 90 300
i11 2 . . 400 | i11 2 1 90 400

En el campo p2 puede usarse una acción especial de la opción Carry. Un signo "+" en p2
representa el valor de p2+p3 de la sentencia i previa. El signo "+" puede ser luego procesado
por Carry mediante un punto.
;ins com dur amp frec | ; ins com dur amp frec
i11 0 1 90 200 | i11 0 1 90 200
i. + . . 300 | i11 1 1 90 300
i. . . . 500 | i11 2 1 90 500

El punto puede ser omitido cuando no haya más campos p explícitos en esa línea:
;ins com dur amp freq | ; ins com dur amp frec
i11 0 1 90 200 | i11 0 1 90 200
i11 + 2 | i11 1 2 90 200
i11 | i11 3 2 90 200

1.12.2 RAMPING
Una variante de Carry es la opción Ramping, que permite especificar una secuencia de valores
linealmente interpolados mediante un signo ("<") colocado entre dos valores cualesquiera de un
campo p. Ramping trabaja sólo entre líneas consecutivas del mismo instrumento y no puede ser
aplicado a ninguno de los tres primeros campos p.

Manual Público de Referencia de Csound 27 Suplemento - Tutoriales


;ins com dur amp frec | ; ins com dur amp frec
i11 0 1 90 200 | i11 0 1 90 200
i . + . < < | i11 1 1 85 300
i . . . < 400 | i11 2 1 80 400
i . . . < < | i11 3 1 75 300
i . . 4 70 200 | i11 4 4 70 200

1.12.3 TEMPO
La unidad de tiempo en la partitura de Csound es el pulso - normalmente un pulso por segundo.
Este valor puede ser modificado por una sentencia de tempo, que permite que el tempo de la
partitura sea arbitrariamente modificado. Los pulsos son convertidos en sus equivalentes en
segundos durante el preprocesado de cada sección. En ausencia de una sentencia de tempo en
cada una de dichas secciones, se insertará por defecto la siguiente sentencia:
t 0 60

Esto significa que, en el instante (pulso) 0, el tempo de Csound es 60 (un pulso por segundo).
Para escuchar la sección al doble de rápido, tenemos dos opciones: 1) cortar todos los p2 y p3
a la mitad y ajustar sus instantes de comienzo, o 2) insertar la sentencia t 0 120 dentro de
dicha sección.

La sentencia de tempo puede también ser usada para moverse entre diferentes tempi durante el
transcurso de la partitura, permitiendo de esa manera retardandos y acelerandos. Estos
cambios de tempo serán lineales. La siguiente sentencia hará que la partitura empiece con un
tempo de 120 pulsos por segundo, baje a 80 hacia el compás 4 y luego acelere a 220 hacia el
compás 7:
t 0 120 4 80 7 220

Lo siguiente producirá ficheros de sonido idénticos:


t 0 120 ; Doble
; velocidad
; mediante la
; sentencia t
;ins com dur amp frec | ; ins com dur amp frec
i11 0 .5 90 200 | i11 0 1 90 200
i . + . < < | i . + . < <
i . . . < 400 | i . . . < 400
i . . . < < | i . . . < <
i . . 2 70 200 | i . . 4 70 200

El siguiente ejemplo incluye un accelerando y un ritardando. Debería constar, sin embargo, que
la opción Ramping se aplica después de aplicarse los tempi a la partitura, siendo por tanto
proporcional al tiempo cronológico transcurrido. Mientras que esto es perfecto para hacer un
Ramping en las amplitudes, hacerlo sobre las frecuencias daría lugar a alturas inarmónicamente
relacionadas durante los cambios de tempo. Las frecuencias necesitarían por tanto ser
especificadas de manera explícita.
t 0 60 4 400 8 60 ; Cambios de tempo
; mediante la sentencia t
; ins com dur amp frec

Manual Público de Referencia de Csound 28 Suplemento - Tutoriales


i11 0 1 70 200
i . + . < 500
i . . . 90 800
i . . . < 500
i . . . 70 200
i . . . 90 1000
i . . . < 600
i . . . 70 200
i . . 8 90 100

1.12.4 SECCIONES DE LA PARITURA


Hay tres opciones más en la partirua de Csound que son extremadamente útiles. La sentencia s
fue usada antes para dividir la partitura en secciones distintas para que se preprocesaran
individualmente. Como cada sentencia s establece un nuevo instante 0 relativo (y todas las
acciones dentro de una sección son relativas a ese tiempo 0) es útil escribir la partitura sección
a sección y más tarde enlazarlas para formar la obra completa.

Supongamos que quisieramos combinar los seis anteriores ejemplos (llamémoslos toot11a -
toot11f) en una partitura. Una manera de hacerlo sería empezar con toot11a.sco,
calcular su duración total y sumar dicho valor a cada instante de comienzo de toot11b.sco,
luego sumar el resultado a los instantes de comienzo de toot11c.sco, etc. Por otra parte,
podríamos simplemente insertar una sentencia s entre cada una de las secciones y ejecutar la
partitura entera. El fichero toot11.sco, que contiene una secuencia de todos los ejemplos
anteriores, hace justamente eso.

1.12.5 AÑADIENDO TIEMPO EXTRA


La sentencia f0, que crea una "acción temporal" sin ninguna acción real asociada, es útil para
extender la duración de una sección. Dos segundos de silencio son añadidos a las dos primeras
secciones del ejemplo siguiente:
; ins start dur amp freq ; tutorial11g.sco
i11 0 2 90 100
f 0 4 ; Sentencia f0
s ; Sentencia de sección
i11 0 1 90 800
i . + . . 400
i . . . . 100
f 0 5
s
i11 0 4 90 50
e

1.12.6 SORT
Durante el preprocesado de una sección de la partitura, todas las sentencias de "acciones
temporales" se ordenan en orden cronológico según sus valores de p2. Esto significa que las
notas pueden ser escritas en cualquier orden, pudiendo mezclar ficheros o trabajar en los

Manual Público de Referencia de Csound 29 Suplemento - Tutoriales


instrumentos como si fueran secciones temporalmente separadas, y luego tenerlos ordenados
automáticamente al ejecutar Csound sobre el fichero.

El fichero siguiente contiene partes de esta sección del capítulo y del instrumento 6 del tutorial y
las combina como sigue:

; ins com dur amp frec ; tutorial11h.sco


i11 0 1 70 100 ; Ordenación de la partitura
i . + . < <
i . . . < <
i . . . 90 800
i . . . < <
i . . . < <
i . . . 70 100
i . . . 90 1000
i . . . < <
i . . . < <
i . . . < <
i . . . 70 <
i . . 8 90 50
f1 0 2048 10 1 ; Sinusoidal
f2 0 2048 10 1 .5 .3 .25 .2 .167 .14 .125 .111 ; Diente de sierra
f3 0 2048 10 1 0 .3 0 .2 0 .14 0 .111 ; Cuadrada
f4 0 2048 10 1 1 1 1 .7 .5 .3 .1 ; Pulso

; ins com dur amp frc atq caid vibr profvib retvib onda
i6 0 2 86 9.00 .03 .1 6 5 .4 1
i6 2 2 86 9.02 .03 .1 6 5 .4 2
i6 4 2 86 9.04 .03 .1 6 5 .4 3
i6 6 4 86 9.05 .05 .1 6 5 .4 4

Manual Público de Referencia de Csound 30 Suplemento - Tutoriales


p4

A M PD B

2 p5 1. 003

p5 p5 0 1 0 1

PL U C K PLUC K
( a s ig 1 ) (a s ig 2 )

Tutorial 11: Carry, Tempo, y Sort

Manual Público de Referencia de Csound 31 Suplemento - Tutoriales


1.13 Tutorial 12: Tablas y Etiquetas

Este es, de lejos, nuestro más complejo instrumento hasta ahora. En él hemos diseñado una
tabla para almacenar una serie de alturas, para luego indexarla de tres diferentes maneras: 1)
directamente, 2) mediante un oscilador de baja frecuencia (lfo, en inglés), y 3) aleatoriamente.
Como medio de cambiar de un método a otro usaremos las sentencias de control de
programa y los operadores lógicos y condicionales de Csound.
instr 12 ;tutorial12.orc
iseed = p8
iamp = ampdb(p4)
kdirect = p5
imeth = p6
ilforate = p7 ; frecuencia del índice
; lfo y aleatorio
itab = 2
itablesize = 8

if (imeth == 1) igoto direct


if (imeth == 2) kgoto lfo
if (imeth == 3) kgoto random

direct: kpitch table kdirect, itab ; índice "f2" via p5


kgoto contin

lfo: kindex phasor ilforate


kpitch table kindex * itablesize, itab
kgoto contin

random: kindex randh int(7), ilforate, iseed


kpitch table abs(kindex), itab

contin: kamp linseg 0, p3 * .1, iamp, p3 * .9, 0 ; amp


envelope
asig oscil kamp, cpspch(kpitch), 1 ; osc audio
out asig
endin

; tutorial12.sco
f1 0 2048 10 1 ; sinusoidal
f2 0 8 -2 8.00 8.02 8.04 8.05 8.07 8.09 8.11 9.00 ; cpspch escala
; de do mayor

; método 1 - índice directo de los valores de la tabla


; ins com dur amp indice método freclfo semillarnd
i12 0 .5 86 7 1 0 0
i12 .5 .5 86 6 1 0
i12 1 .5 86 5 1 0
i12 1.5 .5 86 4 1 0
i12 2 .5 86 3 1 0

Manual Público de Referencia de Csound 32 Suplemento - Tutoriales


i12 2.5 .5 86 2 1 0
i12 3 .5 86 1 1 0
i12 3.5 .5 86 0 1 0
i12 4 .5 86 0 1 0
i12 4.5 .5 86 2 1 0
i12 5 .5 86 4 1 0
i12 5.5 2.5 86 7 1 0
s
; método 2 - índice lfo de los valores de la tabla
; ins com dur amp índice método freclfo semillarnd
i12 0 2 86 0 2 1 0
i12 3 2 86 0 2 2
i12 6 2 86 0 2 4
i12 9 2 86 0 2 8
i12 12 2 86 0 2 16
s

; método 3 - índice aleatorio de los valores de la tabla


; ins com dur amp índice método frecrnd semillarnd
i12 0 2 86 0 3 2 .1
i12 3 2 86 0 3 3 .2
i12 6 2 86 0 3 4 .3
i12 9 2 86 0 3 7 .4
i12 12 2 86 0 3 11 .5
i12 15 2 86 0 3 18 .6
i12 18 2 86 0 3 29 .7
i12 21 2 86 0 3 47 .8
i12 24 2 86 0 3 76 .9
i12 27 2 86 0 3 123 .9
i12 30 5 86 0 3 199 .1
e

Manual Público de Referencia de Csound 33 Suplemento - Tutoriales


if (imeth == 1) igoto dir ect
if (imeth == 2) igoto lfo
if (imeth == 3) igoto random

d ire c t: p5 2 lf o : p7 r an d om : 7

TAB L E P H A SO R in t
p7 p8
( k p i tc h ) ( kin d e x )

... 8 2 RANDH
kgoto contin
( kin d e x )
TA B L E
ab s
( k p it c h )
2
...

kgoto contin TA B L E

( k p it c h )

c o nt in :

L IN S E G CP SPC H

( kam p ) ( ic p s )

O S C IL
1
(a1 )

Tutorial 12: Tablas y Etiquetas

Manual Público de Referencia de Csound 34 Suplemento - Tutoriales


1.14 Tutorial 13: Fusión Espectral

En nuestro último instrumento emplearemos tres métodos de síntesis distintos: Modelado


Físico, Síntesis con Formantes y Distorsión No Lineal. Tres de las unidades generadoras más
potentes de Csound - pluck, fof y foscil, hacen que esta compleja tarea se convierta en un
juego de niños. El Manual de Referencia de Csound describe estos opcodes como:
ar pluck kamp, kcps, icps, ifn, imeth [, iparm1, iparm2]

pluck simula el sonido de una cuerda punteada que se va perdiendo naturalmente, llenando un
buffer cíclico de caída con ruido y suavizándolo luego a lo largo del tiempo, según un método
que el usuario puede escoger entre varios. La unidad está basada en el algoritmo de Karplus-
Strong.
ar fof xamp, xfund, xform, koct, kband, kris, kdur,\\
kdec, iolaps, ifna, ifnb, itotdur[, iphs[,
ifmode]]

fof simula el sonido de una voz masculina, produciendo una serie de parciales armónicamente
relacionados (una región de formantes) cuyo envolvente espectral puede ser controlado a lo
largo del tiempo. Es una forma especial de Síntesis Granular, basada en el programa CHANT
del IRCAM, diseñado por Xavier Rodet.
ar foscil xamp, kcps, kcar, kmod, kndx, ifn [, iphs]

fosciln es una unidad compuesta que emplea dos bancos de osciladores en una configuración
FM simple, en la cual la salida de audio de uno de ellos (el "modulador") se usa para modular la
entrada de frecuencia del otro (el "portador").

El plan para nuestro instrumento es que el ataque de nuestra cuerda punteada se disuelva en un
período estable FM y que éste se transforme luego en una caída vocal. La orquesta y la
partitura son las siguientes:
instr 13 ; tutorial13.orc
iamp = ampdb(p4) / 2 ; amplitud, escalada para
; dos fuentes
ipluckamp = p6 ; % de la amp total, 1=dB amp
; como en p4
ipluckdur = p7*p3 ; % de la dur total, 1=duración
; total de la nota
ipluckoff = p3 - ipluckdur
ifmamp = p8 ; % de la amp total, 1=dB amp
; como en p4
ifmrise = p9*p3 ; % de la dur total, 1=duración
; total de la nota
ifmdec = p10*p3 ; % de la duración total
ifmoff = p3 - (ifmrise + ifmdec)
index = p11
ivibdepth = p12
ivibrate = p13

Manual Público de Referencia de Csound 35 Suplemento - Tutoriales


iformantamp = p14 ; % de la amp total, 1=dB amp
; como en p4
iformantrise = p15*p3 ; % de la dur total, 1=duración
; total de la nota
iformantdec = p3 - iformantrise

kpluck linseg ipluckamp, ipluckdur, 0, ipluckoff, 0


apluck1 pluck iamp, p5, p5, 0, 1
apluck2 pluck iamp, p5*1.003, p5*1.003, 0, 1
apluck = kpluck * (apluck1+apluck2)

kfm linseg 0, ifmrise, ifmamp, ifmdec, 0, ifmoff, 0


kndx = kfm * index
afm1 foscil iamp, p5, 1, 2, kndx, 1
afm2 foscil iamp, p5*1.003, 1.003, 2.003, kndx, 1
afm = kfm * (afm1+afm2)

kfrmnt linseg 0, iformantrise, iformantamp, iformantdec, 0


kvib oscil ivibdepth, ivibrate, 1
afrmnt1 fof iamp, p5+kvib, 650, 0, 40, .003, .017, .007, 4,
\\ 1, 2, p3
afrmnt2 fof iamp, (p5*1.001)+kvib*.009, 650, 0, 40, .003, \\
.017, .007, 10, 1, 2, p3
aformnt = kfrmnt * (afrmnt1+afrmnt2)

out apluck + afm + aformnt


endin

; tutorial13.sco
f1 0 8192 10 1 ; onda sinusoidal
f2 0 2048 19 .5 1 270 1 ; ataque sigmoide

;i com dur amp frc plkmp plkdr fmp fmris fmdec indx vbdp vbrt frmp fris
i13 0 5 80 200 .8 .3 .7 .2 .35 8 1 5 3 .5
i13 + 8 80 100 . .4 .7 .35 .35 7 1 6 3 .7
i13 . 13 80 50 . .3 .7 .2 .4 6 1 4 3 .6

Manual Público de Referencia de Csound 36 Suplemento - Tutoriales


p5 1.0 03
p5 2.0 03
( iam p ) p5 p5 0 1 (i am p ) 0 1

P LU C K PL U C K
( a p l u ck 1 ) ( ap lu c k2 ) LIN SE G

( k p l u ck ) L IN S E G

( a p l u ck ) ( kfm )

p 11
(kn de x)

p5 1 .00 3
2. 003
( iam p ) p5 1 ( iam p ) 1
1 2 1.0 03

F O S CI L F O S C IL
( afm 1 ) ( afm 2 )
p1 2 p1 3

O S C IL
1
p5 1 .00 1 ( afm )
(kv i b)
.00 9

p5
(i am p) ( iam p )
.. . . ..

FOF FO F
( a frm n t 1 ) ( afr m n t 2 )
L IN S E G

( k fo rm a n t )

( a f o rm a n t )

Tutorial 13: Fusión Espectral

Manual Público de Referencia de Csound 37 Suplemento - Tutoriales


1.15 Cuando las cosas suenan mal

Cuando diseñes tus propios instrumentos puedes ocasionalmente verte sorprendido por los
resultados. Habrá veces en las que, después de procesar un fichero durante horas, al
reproducirlo sólo escuches silencio, mientras que otras veces puedes obtener mensajes de error
que impidan ejecutar correctamtne la orquesta o simplemente que se cuelgue el ordenador sin
pedir explicaciones.

En general, Csound gestiona y detecta los errores de manera completa y eficiente,


presentándolos en pantalla a medida que se ejecutan las diversas fases del procesado:
ordenación de la partitura, traducción de la orquesta, inicialización de cada llamada a cada
instrumento y durante la ejecución. Sin embargo, si tu error era sintácticamente permisible, o
generó sólo un mensaje de advertencia, Csound podría de buena fe darte resultados que no
esperabas. Aquí tienes una lista de las cosas que deberías comprobar en tus ficheros orquesta y
partitura:

1. Tecleaste la letra "l" en lugar del número "1"

2. Olvidaste preceder tus comentarios de un punto y coma.

3. Olvidaste un opcode o un argumento obligatorio.

4. Tus niveles de amplitud son demasiado bajos, o demasiado altos.

5. Tus frecuencias no están en el rango audible - 20Hz a 20kHz.

6. Colocaste el valor de un parámetro en el campo p de otro.

7. Olvidaste información importante, como la definición de funciones.

8. No seguiste las especificaciones de las rutinas GEN.

Manual Público de Referencia de Csound 38 Suplemento - Tutoriales


1.16 Sugerencias para seguir estudiando

Csound es una herramienta tan potente que tan sólo hemos podido tocar algunas de sus muchas
características y posibles usos. Te animo a que selecciones los instrumentos de este tutorial, los
reconstruyas, los modifiques, e integres las características de uno en el diseño de otro. Para
comprender las capacidades de Csound debes componer estudios cortos con cada uno de
ellos. Te sorprenderá cómo poco a poco irás entretejiendo estos pequeños estudios en las
telas que formarán tus primeras composiciones con Csound.

Hay muchas fuentes de información sobre Csound y la síntesis de sonido por software. El libro
definitivo sobre Csound es The Csound Book: Perspectives in Software Synthesis, Sound
Design, Signal Processing, and Programming, editado por Richard Boulanger y publicado
por el MIT Press.

Nada ampliará más tu comprensión sobre Csound que hacer realmente música con él. La mejor
manera de descubrir la potencia total de estas herramientas es crear tu propia música con ellas.
Al adentrarte en terrenos nuevos e inexplorados harás muchos descubrimientos. Es mi
esperanza que a través de Csound descubras tanto sobre música como yo, y que esta
experiencia te traiga gran satisfacción y goce personales.

Richard Boulanger
Boston, Massachusetts USA
Marzo, 1991

Manual Público de Referencia de Csound 39 Suplemento - Tutoriales

You might also like