Professional Documents
Culture Documents
Tutorial - Espanol Csound
Tutorial - Espanol Csound
Tutorial - Espanol Csound
SOBRE EL DISEÑO DE
INSTRUMENTOS
CON CSOUND
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
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!
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".
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
1 000 0 440
O S C IL
f1
( a1)
OUT
Tutorial 1: oscil
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
p4 p5
O S C IL
1
( a1)
OUT
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
( k1)
p5
O S C IL
1
(a 1 )
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
C P SP C H
( in o te )
L IN E N
O S C IL O S C IL O S C IL
1 1 1
( a1) (a 2 ) ( a3)
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
(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
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
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
(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
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
;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)
(k1)
LINSEG
(kfade)
(afunc1)
1
(afunc2)
Tutorial 7: Fundido
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
;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
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
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.
instr 9
idur = p3
iamp = p4
iskiptime = p5
iattack = p6
irelease = p7
ibalance = p8 ; panning: 1=izq, .5=centro,
; 0=derecha
irvbgain = p9
“ 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
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
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 )
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.
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
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
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.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
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 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
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 )
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
; 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
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 )
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
; 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
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 )
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.
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