FaustWorkshop2014: Difference between revisions
Appearance
Line 144: | Line 144: | ||
process = stereoRingMod : *(gain), *(gain); | process = stereoRingMod : *(gain), *(gain); | ||
</pre> | </pre> | ||
=== Delay === | |||
One sample delay: | |||
<code> | |||
process = _'; | |||
</code> | |||
N samples delay: | |||
<code> | |||
process = _@N; | |||
</code> |
Revision as of 04:24, 9 July 2014
Day 1
Optional textbook to go further: http://www.amazon.com/Physical-Audio-Signal-Processing-Instruments/dp/0974560723
Simple Gain Controller
import("filter.lib"); process = *(hslider("gain",0.5,0,1,0.01)) : smooth(0.999);
Simple Sine Oscillator Synthesizer
import("music.lib"); import("filter.lib"); g = hslider("myParameter",0,0,1,0.01); freq = hslider("frequency",440,50,1000,0.1); myOsc(frequency,gain) = osc(frequency)*(smoothGain) with{ // the smooth(0.999) function interpolates the different values of gain so that it doesn't click smoothGain = gain : smooth(0.999); }; process = myOsc(freq,g) ;
Working with Signals
process = _ <: _,_,_,_ :> _;
is the same as:
process = _ <: _+_+_+_;
Simple Panner
import("filter.lib"); // the metadata "[style:knob]" turns the horizontal slider into a knob pan = hslider("pan [style:knob]",0.5,0,1,0.01) : smooth(0.999); process = _ <: *(pan),*(1-pan);
Additive Synthesizer
import("music.lib"); import("effect.lib"); gain = hslider("gain",0,0,1,0.01) : smooth(0.999); freq = hslider("freq",440,50,1000,0.1) : smooth(0.999); // the smooth function can be used as a simple envelope generator for gate gate = button("gate") : smooth(0.999); process = osc(freq),osc(freq*2),osc(freq*3) :> *(gain)*gate <: _,_;
The last line of the code can be replaced by:
process = par(i,3,osc(freq*(i+1))) :> *(gain)*gate <: _,_;
or
process = sum(i,3,osc(freq*(i+1))) : *(gain)*gate <: _,_;
Day 2
Wave Shape Synthesis
saw1(freq) // Sawtooth wave lf_imptrain(freq) // Impulse train lf_squarewave(freq) // Square wave
Tremolo and Ring Modulation
import("filter.lib"); freq = hslider("freq",2,1,500,0.01); gain = hslider("gain",1,0,1,0.01) : smooth(0.999); depth = hslider("depth",0,0,1,0.01) : smooth(0.999); ringMod = *(1-(depth*osc(freq)/2 + 0.5)); process = ringMod*gain <: _,_;
Stereo Ring Modulator
import("filter.lib"); freq = hslider("freq",2,1,500,0.01); gain = hslider("gain",1,0,1,0.01) : smooth(0.999); depth = hslider("depth",0,0,1,0.01) : smooth(0.999); pan = 1-(depth*osc(freq)/2 + 0.5); stereoRingMod = _ <: *(pan),*(1-pan); process = stereoRingMod : *(gain), *(gain);
Delay
One sample delay:
process = _';
N samples delay:
process = _@N;