home/ atoms/ sc-pulsar-synthesis

Pulsar synthesis generates pitched textures by combining a waveform table with a duty-cycle envelope repeated at audio rate

Pulsar synthesis (developed by Curtis Roads) creates a pulsaret — a short waveform fragment multiplied by a windowing envelope — and repeats it at a fundamental frequency. The ratio of the pulsaret duration to the cycle period controls the duty cycle, and thus the formant character of the sound. GrainBuf can approximate pulsar synthesis by reading a waveform buffer with a grain duration equal to the reciprocal of the formant frequency. The timbral space spans from pitched tones (long duty cycle) through buzzy textures to noise (very short pulsarets). Control table buffers can be looped to animate all parameters smoothly.

Examples

~pulsar1 = { |wavebuf, envbuf = -1| var ctls = ~controls.kr; var trig = Impulse.ar(ctls[0]); // fundamental var grdur = ctls[1].reciprocal; // formant period GrainBuf.ar(2, trig, grdur, wavebuf, ctls[1] * BufDur.kr(wavebuf), 0, 4, ctls[3], envbuf) };

Assessment

Implement a pulsar voice with independent fundamental and formant frequency controls. Crossfade the fundamental from 16 to 50 Hz and the formant from 100 to 500 Hz. Describe the timbral change.

“// figure 16.17 - Pulsars as nodeproxies using GrainBuf ( p = ProxySpace.push; // fund, form, amp, pan ~controls = [ 16, 100, 0.5, 0];”
corpus · the-supercollider-book-official-code-examples-scbookcode-gpl · chunk 59