El vibrato es un cambio periódico de tono, normalmente en un rango menor a un tono medio y con una velocidad de cambio lenta (alrededor de 5 Hz). La modulación de frecuencia se implementa usualmente utilizando osciladores de onda senoidal.
EXAMPLE 04D01_Vibrato.csd
<CsoundSynthesizer> <CsOptions> -o dac </CsOptions> <CsInstruments> sr = 48000 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 aMod poscil 10, 5 , 1 ; 5 Hz vibrato con un ancho de modulación de 10 Hz. aCar poscil 0.3, 440+aMod, 1 ; -> vibrato entre 430-450 Hz outs aCar, aCar endin </CsInstruments> <CsScore> f 1 0 1024 10 1 ;Onda senoidal en la tabla 1 i 1 0 2 </CsScore> </CsoundSynthesizer> ; escrito por Alex Hofmann (Mar. 2011)
A medida que aumenta la profundidad de la modulación, se hace más difícil percibir la frecuencia de base, pero aún así sigue tratándose de un vibrato.
EXAMPLE 04D02_Vibrato_deep.csd
<CsoundSynthesizer> <CsOptions> -o dac </CsOptions> <CsInstruments> sr = 48000 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 aMod poscil 90, 5 , 1 ; modular 90Hz -> vibrato desde 350 a 530 hz aCar poscil 0.3, 440+aMod, 1 outs aCar, aCar endin </CsInstruments> <CsScore> f 1 0 1024 10 1 ;Onda senoidal en la tabla 1 i 1 0 2 </CsScore> </CsoundSynthesizer> ; escrito por Alex Hofmann (Mar. 2011)
Al aumentar la tasa de modulación se llega a un efecto diferente. La modulación de frecuencia de más de 20Hz el resultado ya no se reconoce como un vibrato. La frecuencia del oscilador principal se sitúa en el centro del sonido y las bandas laterales aparecen arriba y abajo. El número de bandas laterales está relacionado con la amplitud de modulación, que controlaremos posteriormente según el denominado índice de modulación.
EXAMPLE 04D03_FM_index.csd
<CsoundSynthesizer> <CsOptions> -o dac </CsOptions> <CsInstruments> sr = 48000 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 aRaise linseg 2, 10, 100 ;incrementar la modulación desde los 2Hz y hasta los 100Hz aMod poscil 10, aRaise , 1 aCar poscil 0.3, 440+aMod, 1 outs aCar, aCar endin </CsInstruments> <CsScore> f 1 0 1024 10 1 ;Onda senoidal en la tabla 1 i 1 0 12 </CsScore> </CsoundSynthesizer> ; escrito por Alex Hofmann (Mar. 2011)
De este modo, el oscilador principal genera la denominada frecuencia portadora, mientras que el otro oscilador controla la frecuencia moduladora. El índice de modulación se puede expresar como:
I = mod-amp/mod-freq.
Al cambiar el índice de modulación se modifica la cantidad de armónicos, pero no el volumen general. Eso da la posibilidad de producir drásticos cambios en el timbre sin el riesgo de generar una distorsión en el resultado.
Cuando las frecuencias portadora y moduladora generan relaciones de enteros, tales como 1:1, 2:1, 3:2, 5:4, etc., las bandas laterales construyen una serie armónica, que produce un sonido con una fundamental claramente percibible.
EXAMPLE 04D04_Harmonic_FM.csd
<CsoundSynthesizer> <CsOptions> -o dac </CsOptions> <CsInstruments> sr = 48000 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 kCarFreq = 660 ; 660:440 = 3:2 -> espectro armónico kModFreq = 440 kIndex = 15 ; Índice alto.. intente otros más bajos como 1, 2, 3.. kIndexM = 0 kMaxDev = kIndex*kModFreq kMinDev = kIndexM*kModFreq kVarDev = kMaxDev-kMinDev kModAmp = kMinDev+kVarDev aModulator poscil kModAmp, kModFreq, 1 aCarrier poscil 0.3, kCarFreq+aModulator, 1 outs aCarrier, aCarrier endin </CsInstruments> <CsScore> f 1 0 1024 10 1 ;Onda senoidal en la tabla 1 i 1 0 15 </CsScore> </CsoundSynthesizer> ; escrito por Alex Hofmann (Mar. 2011)
De lo contrario el espectro del sonido es inarmónico, lo que lo hace metálico o ruidoso. Al aumentar el índice de modulación cambia la energía en las bandas laterales. La distancia entre las bandas laterales se puede conocer según la fórmula:
Distancia en Hz = (FrecuenciaPortadora)-(k*FrecuenciaModuladora) | k = {1, 2, 3, 4 ..}
Este cálculo puede resultar en frecuencias negativas, que aparecerán como componentes frecuenciales con signo positivo, pero cuya fase resultará invertida (esto es, desfasadas en 180°)! Por lo tanto, las frecuencias negativas pueden terminar anulando a las positivas. Las frecuencias por sobre la frecuencia de Nyquist (la mitad de la tasa de muestreo) "dan la vuelta" (aliasing).
El compositor e investigador Jown Chowning trabajó en la primera implementación digital de la síntesis FM en los años setenta.
El uso de envolventes para controlar el índice de modulación y la amplitud general ofrecen la posibilidad de crear sonidos que evolucionan con enormes variaciones espectrales. Chowning mostró estas posibilidades en sus piezas, donde dejó que los sonidos se transformaran. En la pieza Sabelithe un sonido de batería se transforma transcurrido el tiempo en un tono de trompeta.
EXAMPLE 04D05_Trumpet_FM.csd
<CsoundSynthesizer> <CsOptions> -o dac </CsOptions> <CsInstruments> sr = 48000 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ; sencilla forma de generar un sonido que se asemeja a una trompeta kCarFreq = 440 kModFreq = 440 kIndex = 5 kIndexM = 0 kMaxDev = kIndex*kModFreq kMinDev = kIndexM * kModFreq kVarDev = kMaxDev-kMinDev aEnv expseg .001, 0.2, 1, p3-0.3, 1, 0.2, 0.001 aModAmp = kMinDev+kVarDev*aEnv aModulator poscil aModAmp, kModFreq, 1 aCarrier poscil 0.3*aEnv, kCarFreq+aModulator, 1 outs aCarrier, aCarrier endin </CsInstruments> <CsScore> f 1 0 1024 10 1 ;Onda senoidal en la tabla 1 i 1 0 2 </CsScore> </CsoundSynthesizer> ; escrito por Alex Hofmann (Mar. 2011)
El siguiente ejemplo utiliza el mismo instrumento, pero con diferentes configuraciones para generar un sonido parecido a una campana:
EXAMPLE 04D06_Bell_FM.csd
<CsoundSynthesizer> <CsOptions> -o dac </CsOptions> <CsInstruments> sr = 48000 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ; bell-like sound kCarFreq = 200 ; 200/280 = 5:7 -> espectro inarmónico kModFreq = 280 kIndex = 12 kIndexM = 0 kMaxDev = kIndex*kModFreq kMinDev = kIndexM * kModFreq kVarDev = kMaxDev-kMinDev aEnv expseg .001, 0.001, 1, 0.3, 0.5, 8.5, .001 aModAmp = kMinDev+kVarDev*aEnv aModulator poscil aModAmp, kModFreq, 1 aCarrier poscil 0.3*aEnv, kCarFreq+aModulator, 1 outs aCarrier, aCarrier endin </CsInstruments> <CsScore> f 1 0 1024 10 1 ;Onda senoidal en la tabla 1 i 1 0 9 </CsScore> </CsoundSynthesizer> ; escrito por Alex Hofmann (Mar. 2011)
La combinación de más de dos osciladores (operadores) se denomina síntesis de FM compleja. Los operadores pueden conectarse en diferentes combinaciones; a menudo se usan entre 4 y 6 operadores. El oscilador de la frecuencia portadora es siempre el último operador en la serie. Al cambiar su tono se desplaza el sonido entero. Por lo tanto, todos los demás operadores son moduladores y al cambiar su tono lo que se altera es el espectro del sonido.
El principio aquí es que (M1:C) y (M2:C) se tratarán como modulaciones diferente y sólo más tarde se combinarán.
EXAMPLE 04D07_Added_FM.csd
<CsoundSynthesizer> <CsOptions> -o dac </CsOptions> <CsInstruments> sr = 48000 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 aMod1 poscil 200, 700, 1 aMod2 poscil 1800, 290, 1 aSig poscil 0.3, 440+aMod1+aMod2, 1 outs aSig, aSig endin </CsInstruments> <CsScore> f 1 0 1024 10 1 ;Onda senoidal en la tabla 1 i 1 0 3 </CsScore> </CsoundSynthesizer> ; escrito por Alex Hofmann (Mar. 2011)
Esto es mucho más complicado de calcular y el timbre resultante se vuelve más difícil de predecir, esto es porque M1:M2 produce un espectro complejo (W), que a su vez modula al oscilador de la portadora (W:C).
EXAMPLE 04D08_Serial_FM.csd
<CsoundSynthesizer> <CsOptions> -o dac </CsOptions> <CsInstruments> sr = 48000 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 aMod1 poscil 200, 700, 1 aMod2 poscil 1800, 290+aMod1, 1 aSig poscil 0.3, 440+aMod2, 1 outs aSig, aSig endin </CsInstruments> <CsScore> f 1 0 1024 10 1 ;Onda senoidal en la tabla 1 i 1 0 3 </CsScore> </CsoundSynthesizer> ; escrito por Alex Hofmann (Mar. 2011)
Existe una relación importante entre la modulación de frecuencia y la modulación de fase, ya que ambas técnicas influyen en el espectro del oscilador, y las modificaciones al timbre resultante son las mismas.
Si quisiera construir un sistema FM de retroalimentación, sucederá que la auto-modulación llegará a un punto cero, que finalmente detendrá al oscilador. Para evitar esto, es más práctico modular la fase de la búsqueda de las tablas de la portadora, en lugar de su tono.
Incluso el más famoso sintetizador de FM, el Yamaha DX7, se basa en la técnica de modulación de fase (en inglés, Phase Modulation), que posibilita la retroalimentación. El DX7 proporciona 7 operadores, y ofrece 32 combinaciones de enrutamiento entre estos. (http://yala.freeservers.com/t2synths.htm#DX7)
Para construir un sintetizador de Modulacion de Fase en Csound, el opcode tablei se utiliza como oscilador. Para avanzar a través de la tabla-f, el opcode phasor proverá de los índices necesarios.
EXAMPLE 04D09_PhaseMod.csd
<CsoundSynthesizer> <CsOptions> -o dac </CsOptions> <CsInstruments> sr = 48000 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ; sencillo Sintetizador de Modulación de Fase kCarFreq = 200 kModFreq = 280 kModFactor = kCarFreq/kModFreq kIndex = 12/6.28 ; 12/2pi para pasar de radianes a índices de table normales aEnv expseg .001, 0.001, 1, 0.3, 0.5, 8.5, .001 aModulator poscil kIndex*aEnv, kModFreq, 1 aPhase phasor kCarFreq aCarrier tablei aPhase+aModulator, 1, 1, 0, 1 outs (aCarrier*aEnv), (aCarrier*aEnv) endin </CsInstruments> <CsScore> f 1 0 1024 10 1 ;Onda senoidal en la tabla 1 i 1 0 9 </CsScore> </CsoundSynthesizer> ; escrito por Alex Hofmann (Mar. 2011)
Utilicemos las posibilidades de auto-modulación (retroalimentación) que nos brinda el oscilador. En el ejemplo siguiente, el oscilador es tanto la moduladora como la portadora. Luego, para controlar la cantidad de modulación, una envolvente escala la retroalimentación.
EXAMPLE 04D10_Feedback_modulation.csd
<CsoundSynthesizer> <CsOptions> -o dac </CsOptions> <CsInstruments> sr = 48000 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ; feedback PM kCarFreq = 200 kFeedbackAmountEnv linseg 0, 2, 0.2, 0.1, 0.3, 0.8, 0.2, 1.5, 0 aAmpEnv expseg .001, 0.001, 1, 0.3, 0.5, 8.5, .001 aPhase phasor kCarFreq aCarrier init 0 ; init for feedback aCarrier tablei aPhase+(aCarrier*kFeedbackAmountEnv), 1, 1, 0, 1 outs aCarrier*aAmpEnv, aCarrier*aAmpEnv endin </CsInstruments> <CsScore> f 1 0 1024 10 1 ;Onda senoidal en la tabla 1 i 1 0 9 </CsScore> </CsoundSynthesizer> ; escrito por Alex Hofmann (Mar. 2011)
There has been error in communication with Booktype server. Not sure right now where is the problem.
You should refresh this page.