Filtros resonantes con envolventes
En este tutorial refinaremos nuestro último instrumento, colocando un filtro pasabajos resonante, que varía en el tiempo.El filtro decrece desde el inicio de la nota y vuelve a subir una vez se levanta la nota.
También se usará otra tabla para el oscilador, esta vez una aproximación a una onda cuadrada que se ve así:
Comenzamos:
<CsoundSynthesizer>
<CsOptions>
-+P12 -+K0 -m0 -+O
;He agregado dos banderas nuevas que desabilitan los mensajes para ;mejor desempeño en tiempo real.</CsOptions>
<CsInstruments>
sr=44100
kr=441
ksmps=100
nchnls=2
;Encabezados de siempremassign 1,3
;Se asigna el canal MIDI 1 al instrumento 3instr 3
icps cpsmidi
ivel veloc
;Las asignaciones de nota y velocity que vimos.
kenv linsegr 0,0.1,10000* (ivel/128), 0.5, 0
;He modificado el tiempo de ataque y liberación de la envolvente del instrumento ;Esta vez el ataque es más rápido (0.1 seg) así como el decaimiento (0.5 seg).kfilt expsegr 1,0.7,0.001,0.5,0.5
;El opcode expsegr es otro generador de envolvente, pero esta vez controlará ;la frecuencia de corte del filtro. Expsegr genera una envolvente compuesta ;no de segmentos de lineas rectas sino de curvas exponenciales. Vea la imagen ;al final que muestra esta envolvente. En Csound los generadores de envolvente ;que terminan en 'r' dependen de un mensaje 'note-off' MIDI, para su sección final ;de decaimiento. En este caso el valor de 0.001 se mantiene hasta que se recibe ;un mensaje de note off, y luego sube hasta 0.5 en 0.5 segundos, el mismo tiempo usado ;más arriba para el decaimiento de la amplitud.kcutoff = (kfilt*icps)
;La freucuencia de corte debe depender de la frecuencia de la nota para que tenga un efecto similar ; en cada nota. Por eso se mulitplica el coeficiente kfilt por la frecuencia icps de la nota.asig oscil3 1, icps, 1
;El oscilador oscil3 funciona igual que oscil y oscili pero realiza interpolación ;cubica entre los puntos de una tabla. Es más precisa, pero de nuevo requiere ;más procesador. ;La tabla-f 1 ahora contiene una onda cuadrada.aout lowres asig, kcutoff, 1.2
;El opcode lowres en un filtro pasabajos resonante (del tipo encontrado en sintetizadores ;analógicos). El primer parametro indica la señal a ser procesada, seguido de la frecuencia de ;corte, que en este caso está dictada por la variable kcutoff. La resonancia del filtro sigue, y en este ;caso es de 1.2. Este valor se escogió experimentando. Note como el filtro baja cuando se toca la nota ;se queda constante al llegar a cierto punto, y vuelve a subir cuando se suelta la nota.outs aout*kenv , aout*kenv
;Envía la señal con su envolvente a las salidas
endin
</CsInstruments>
<CsScore>
f 1 0 4096 10 1 0 0.5 0 0.25 0 0.125 0 0.0625
;Genera una curva que aproxima una onda cuadrada
f 0 120
</CsScore>
</CsoundSynthesizer>
La curva de envolvente del filtro se ve así:
La parte plana del medio no tiene una duración definida, depende de cuanto se mantenga la nota oprimida en el teclado. Puede intentar usando otras tablas-f, o variando el valor de la resonancia. También intenta cambiar oscil3 por oscili u oscil, y note la diferencia.