Added new example for Chorus UGen
Unified · Split
| @@ -0,0 +1,43 @@ | ||
| 1 | +//------------------------------------------------------------------------------ | |
| 2 | +// Chorus | |
| 3 | +// name: chorus.ck | |
| 4 | +// desc: Basic demo of the Chorus UGen | |
| 5 | +// | |
| 6 | +// details: | |
| 7 | +// The Chorus UGen adds a chorus effect to a signal. Chorus refers to an audio effect | |
| 8 | +// in which multiple sounds occur close together in time, and with similar pitch. The | |
| 9 | +// slight deviations in pitch and time are generally small enough such that the signals | |
| 10 | +// are not perceived as being out-of-tune. The effect is often described as adding "shimmer", | |
| 11 | +// "richness", or "complexity" to the timbre. | |
| 12 | +// When implemented digitally, the chorus effect is acheived by taking a source signal, and | |
| 13 | +// mixing it with delayed copies of itself. The pitch of these copies is usually modulated | |
| 14 | +// using another signal like an LFO. In ChucK, you can adjust the depth and frequency of this | |
| 15 | +// modulation of pitch, as well as the amount of delay and how much of the chorus effect is | |
| 16 | +// present in the mix. | |
| 17 | +// | |
| 18 | +// Alex Han, Spring 2023 | |
| 19 | +//------------------------------------------------------------------------------ | |
| 20 | + | |
| 21 | +// Setting up signal chain | |
| 22 | +SinOsc s[4]; Chorus chor[4]; | |
| 23 | +[62, 65, 69, 72] @=> int notes[]; // chorus often "shines" best with polyphonic textures! | |
| 24 | + | |
| 25 | +for(int i; i < s.size(); i++) { | |
| 26 | + s[i] => chor[i] => dac; | |
| 27 | + | |
| 28 | + // sine wave as source signal | |
| 29 | + s[i].gain(.2); | |
| 30 | + s[i].freq(Std.mtof(notes[i])); | |
| 31 | + | |
| 32 | + // initializing a light chorus effect | |
| 33 | + // Try tweaking these values! | |
| 34 | + chor[i].baseDelay(10::ms); | |
| 35 | + chor[i].modDepth(.4); | |
| 36 | + chor[i].modFreq(1); | |
| 37 | + chor[i].mix(.2); | |
| 38 | +} | |
| 39 | + | |
| 40 | +while(true) | |
| 41 | +{ | |
| 42 | + 1::second => now; | |
| 43 | +} | |