<< Menu Principal >>

Session 2 : Signaux en Faust, modulation d’amplitude et synthèse soustractive

Target Faust

Algèbre des signaux en Faust

Panoramique

import("stdfaust.lib");
panner(p) = _ <: *(1-p),*(p);
pan = hslider("pan",0,0,1,0.01) : si.smoo;
process = panner(pan);

Auto Pan

import("stdfaust.lib");
panner(p) = _ <: *(1-p),*(p);
autoPan(freq,depth) = panner(p) 
with{
  p = 0.5 + os.osc(freq)*0.25*depth;
};
d = hslider("depth",0,0,1,0.01) : si.smoo;
f = hslider("freq",1,0.01,10,0.01) : si.smoo;
process = autoPan(f,d);

Modulation en anneau (modulation d’amplitude)

import("stdfaust.lib");
ringMod(freq,depth) = *(1-mod)
with{
  mod = (os.osc(freq)*0.5 + 0.5)*depth;
};
d = hslider("depth",0,0,1,0.01) : si.smoo;
f = hslider("freq",100,0.01,5000,0.01) : si.smoo;
process = ringMod(f,d);

Synthèse soustractive

import("stdfaust.lib");
subSynth(freq,ctFreq) = os.sawtooth(freq) : fi.lowpass(3,ctFreq);
f = hslider("freq",400,50,5000,0.01);
cf = hslider("ctFreq",5000,50,10000,0.01) : si.smoo;
gain = hslider("gain",1,0,1,0.01);
gate = button("gate");
envelope = en.adsr(0.1,0.01,0.8,0.1,gate)*gain;
process = subSynth(f,cf*(0.5+envelope*0.5))*envelope;
effect = dm.zita_light;
import("stdfaust.lib");
subSynth(freq,ctFreq,q) = os.sawtooth(freq) : fi.resonlp(ctFreq,q,1);
f = hslider("freq",400,50,5000,0.01);
cf = hslider("ctFreq",5000,50,10000,0.01) : si.smoo;
q = hslider("q",5,1,20,0.01) : si.smoo;
gain = hslider("gain",1,0,1,0.01);
gate = button("gate");
envelope = en.adsr(0.1,0.01,0.8,0.1,gate)*gain;
process = subSynth(f,cf*(0.5+envelope*0.5),q)*envelope;
effect = dm.zita_light;
import("stdfaust.lib");
impFreq = hslider("impFreq",7,1,20,0.01) : si.smoo;
q = hslider("q",20,1,30,0.01) : si.smoo;
freq = hslider("freq",440,50,5000,0.01);
gain = hslider("gain",1,0,1,0.01);
gate = button("gate");
process = os.lf_imptrain(impFreq) : fi.resonlp(freq,q,1)*gain*gate*4;
effect = dm.zita_light;     

Devoir

Produire des applications pour Android avec l’éditeur en ligne

import("stdfaust.lib");
impFreq = hslider("impFreq",7,1,20,0.01) : si.smoo;
q = hslider("q",20,1,30,0.01) : si.smoo;
freq = hslider("freq[acc: 0 0 -10 0 10]",440,50,5000,0.01);
gain = hslider("gain",1,0,1,0.01);
gate = button("gate");
process = os.lf_imptrain(impFreq) : fi.resonlp(freq,q,1)*gain*4;

Instrument mobile