Tutorial 2



Envolventes MIDI



En el tutorial anterior se generaron notas que se encendían y apagaban siguiendo aun controlador MIDI. Aquí crearemos un sonido más interesante que tiene un ataque largo y decae despues de que se suelte la nota MIDI.

También usaremos la información de velocity para determinar el volumen de la nota.



<CsoundSynthesizer>

<CsOptions>
-+P -+K
;Las mismas banderas de antes.
</CsOptions>

<CsInstruments>

sr=44100

kr=441

ksmps=100

nchnls=2

;Los encabezados usuales

massign 1,2

;Asigna el canal MIDI 1 al instrumento 2

instr 2

icps cpsmidi

;Igual que antes, la variable icps contiene la frecuencia de la nota MIDI


ivel veloc

;El opcode veloc asigna el valor de velocity de la nota a la variable ivel.
;Los valores de velocity pueden estar entre 1 y 128, El rango estándar
;de 7 bits de MIDI.

print icps

print ivel

;Estos dos 'print' mustran información de la nota tocada.


kenv linsegr 0,0.5,10000* (ivel/128), 3, 0

;Este opcode genera una envolvente para cada nota, asignada a la variable kenv
;Note que para envolventes se tiende a usar variables de control (k)
;mientras que para audio se usan variables de audio (a). Esto se hace
;para evitar precisión innecesaria que cargará al procesador.
;El opcode linsegr genera una envolvente iniciando en 0, subiendo
;hasta una amplitud entre 0 y 10000 (dependiendo de ivel) en 0.5 segundos
;(un ataque largo). La nota se mantiene en ese nivel hasta que se suelta,
;y decae por 3 segundos. El valor final de la envolvente es nuevamente de 0.

aout oscili 1, icps, 1

;El oscilador oscili funciona igual que oscil, excepto que realiza interpolación
;entre puntos de una tabla. Esto significa que el oscilador es más preciso,
;lo que da mayor calidad pero también requiere más trabajo del procesador.
;La tabla 1 es diferente en este caso. Mire la sección score abajo.

outs aout*kenv , aout*kenv

;Envía la señal del oscilador a las salidas. Note que esta vez no multiplcamos
;por 10000 ya que el valor ya está incluído en el generador de envolventes.

endin

;El final del instrumento

</CsInstruments>



<CsScore>



f 1 0 4096 10 1 0.5 0.25 0.125 0.0625

;Genera una curva que se aproxima a una onda de serrucho, a partir
;de una suma de ondas sinusoidales.

f 0 120

</CsScore>

</CsoundSynthesizer>

Este tutorial ya suena más com un sintetizador real. Experimente con diferentes valores o funciones GEN para la tabla 1.

Regresar a los tutoriales MIDI