Tutorial 1

Notas disparadas por MIDI

Esta serie de tutoriales explorarán el uso de MIDI para controlar aspectos de la síntesis y el procesamiento realizado por Csound. He tratado de usar opcodes 'canonicos', así que estos programas deben correr en todas las plataformas. Por favor avíseme si encuentran alguno que no lo hace.

Estos tutoriales asumen que ya se tiene un conocimiento básico de Csound, aunque intento explicar con suficiente detalle como para que aún un principiante entienda los programas. Si usted es principiante, le recomiendo revisar los Tutoriales de Video para CsoundAV primero. En ellos se explica desde el principio los tipos de variables y la sintaxis de Csound. Allí también hay varias sugerencias de Editores de texto, así como información de dónde conseguir el programa.

Bueno, comencemos el primer tutorial de MIDI. Este tutorial es un instrumento muy sencillo, que solo genera una onda sinusoidal a la altura apropiada según la tecla MIDI que se toque. Usted puede copiar y pegar todo el código en el editor de texto (incluyendo los comentarios) y compilar.

Para MacCsound usted puede pegar la sección <CsInstruments> en la pestaña orc, y la sección <CsScore> ien la pestaña sco . Luego debe seleccionar “realtime audio output” en la esquina superior derecha, y esto debe ser todo. Avísme si algo no funciona como debe.

Para que este tutorial funcione usted debe tener un controlador MIDI conectado y reconocido por el sistema, que esté transmitiendo en el canal 1.

<CsoundSynthesizer>

<CsOptions>
-+P -+K

;La bandera -+P habilita el audio en tiempo real
;La bandera -+K habilita la entrada MIDI
;Una vez usted conozca los valores que utiliza su sistema
;puede ponerlos después de cada letra para no tener
;que entrarlos cada vez que corra el programa
;Estas banderas son solo para uso en CsoundAV.
;En Linux, se debe usar
;-odac:plughw:2 -M/dev/midi00 -dm6
;Para MacCsound siga las instrucciones dadas arriba

</CsOptions>
<CsInstruments>
sr=44100
kr=441
ksmps=100
nchnls=2
;Estos son los encabezados usuales, que indican el sample rate y el control rate,
;El número de sampleos de control por segundo (ksmps) y el número de canales
massign 1,1
;Esta instrucción MIDI asigna un canal MIDI para disparar un instrumento
;En éste caso el canal MIDI 1 dispara el instrumento 1.
;Este es en realidad el valor por defecto, así que en éste caso
;No es necesario, pero en tutoriales posteriores le daremos más uso.
instr 1
;Aquí inicia la definición de nuestro primer instrumento, que
;será llamado cada vez que Csound reciba una nota MIDI en el
;canal 1. Es decir cada vez que se toque una nota sonará el instrumento 1
icps cpsmidi
;El opcode cpsmidi asigna a la variable icps la frecuencia en Herz
;correspondiente a la nota MIDI que disparó el instrumento
;Es decir, si toco A2, la variable icps tendrá un valor de 440.
print icps
;Esta instrucción mostrará en la pantalla el valor de icps.
;El opcode print actúa sólo en la inicialización, así que sólo se mostrará
;un valor para cada instancia del instrumento, o sea cada vez que se toque una nota.
;El instrumento es polifónico y las variables que tienen 'i' al inicio pueden considerarse como
;constantes en cada instancia del instrumento, o sea que permanecen constantes,
;así Csound reciba una nueva nota, en cuyo caso se crea una nueva instancia.
aout oscil 1, icps, 1
;Este opcode es un oscilador. La variable aout (actualizada cada sample por ser 'audio-rate')
;contendrá el valor de éste oscilador. Los parámetros usados en el oscilador son:
;primero amplitud, aquí 1. Segundo esta la frecuencia, que como vimos está dictada por icps
;es decir la frecuencia de la nota MIDI. Por último está la tabla-f, que dicta
;con qué tipo de función se oscilará. Aquí usamos la tabla número 1, que se define más adelante
;y que contiene una onda sinusoidal.
;Note que esta nota no tendra ni ataque ni decaimiento, simplemente suena mientras la nota esté
presionada.
outs (aout*10000) , (aout*10000)
;El opcode outs envía una señal de audio a las salidas físicas.
;outs se utiliza cuando el número de canales usados es 2.
;Note que tenemos un instrumento monofónico sonando
;igualmente por las salidas izquierda y derecha.
;Debemos multiplicar el valor del oscilador por 10000 para hacerlo audible.
;La amplitud máxima es 32768. (215)
endin
;Con esto cerramos el instruemento
</CsInstruments>

<CsScore>
f 1 0 4096 10 1
;Una onda sinusoidal de 4096 puntos se almacena como función 1
;Note que los parametros corresponden exactamente a los usados antes en los
;tutoriales de video con el opcode ftgen, excepto por el número de puntos
;(4096 en vez de 1024). La instrucción f usada aquí en el score es la manera
;tradicional de definir las tablas-f, pero puede ser algo confusa para
;los principiantes entender que aunque está más abajo en el programa,
;se procesa al inicio de la compilación y es llamada por un instrumento
;usado más arriba.
f 0 120
;Una tabla falsa 0 sdebe crearse para que Csound corra por determinado tiempo
;ya que no se están creando eventos en el score sino que todos se están generando
;en tiempo real. Csound correrá hasta 120 segundos.
</CsScore>
</CsoundSynthesizer>


Este sencillo sintetizador introduce el uso de MIDI en Csound. Cuénteme cómo le va, sobretodo si está corriendo el programa en Linux o Mac.

Regresar a los tutoriales MIDI