Meditation background generatorCreated on: 2010-01
by: freezemode - http://soundcloud.com/freezemode
Documentation
Starting with main.pd and working your way down:

1. main.pd can be broken down into three major sections. The top section consists of everything between [metro 5000] and [snapshot~] / [route ...]. The middle section is the row of ten identical structures that each start with a [stream~ ...] and end with a pair of [throw~ ...] objects. Finally, there is everything below those ten structures.

2. The top section produces LFO modulated envelopes on the left and ten-note sets on the right. This data is passed down to the middle and bottom sections.

3. The middle section is a row of ten similar synthesizers. Each synth gets its initialization from the top section. The meat of the synthesis is in [stream~]. As far as I can tell, it is very carefully filtered noise. The output of [stream~] is sent to a tuned bandpass filter, and then panned slowly from left to right.

4. The bottom section has four significant subsections: The mixer/processor is at the top left and the pad generator is on the right. Below these two sections is a pair of custom reverb units. At the very bottom is the [master] output and recording section.

5. I don't fully understand what is going on in the mixer/processor, though it appears that the left and right channels each get bandpass filters (by stacking a pair of [hip] on top of a pair of [lop]) and are randomly assigned independent control envelopes.

6. The pad synth on the right sounds like white noise, but is built around a trio of [osc~] units. Ironically, the ten identical synths in the middle section are built around [noise~] but don't sound like noise!

7. The custom reverbs are defined in [freezeverb]. It seems to be built on a total of 28 300ms delays. I don't understand how it works, but the layout is very nice to look at!

8. Finally, the output and record sections at the bottom seem fairly obvious.

------------------------------------------------------------------------------
REPLY FROM hamster

1 and 2. The top section performs two functions - it's smth. like "probability generator" (leftmost part), which, in accordance with LFO, defines how often droplet sound is being generated at the moment, and (rightmost one) an array containing tones, at which [vcf~]s of certain droplets resonate (0,2,3,5,7,8,10 in it mean C-minor scale). And every 5 seconds [route] picks these tones (notes) up from the array randomly and sends them to [vcf~] objects after [stream~] abstractions. These tones are transformed into frequencies in Hz to control bandpass filters.

3. Yes, the [stream~] is the meat of the synthesis, but it is not "very carefully" filtered noise, although should be. :) I just tried to make it sound like water droplets, and made some variations in cutoff frequency (first creation argument) and stream density (2nd creation argument) to make droplets sound more diverse. The stream~.pd itself is actually a very simple noise generator, and this is the oldest part of the patch itself. I wanted to make something like a rain noise, made this abstraction, and put it off until it came into play.

4 and 5. You know, if you delete the mixer/processor section (except reverb), you may not notice much difference: it just makes left and right channel slightly different from time to time - for merciless freezeverb to mix up left and right channels in one stream anyway. Buy the way - [freezeverb] is just an enhanced version of that you can see in help -> browser -> G08.reverb.pd. The only serious difference is that it uses delay_time_counter.pd, which calculates the times for delay lines in accordance with this formula: t = t1/2^(n/numlines)-t1/2, where t1 = the largest early reflection delay time value, numlines = total delay lines number (28 here), and n = current delay number (starting from 0). I found this algorithm here: http://musicdsp.org/archive.php?classid=4#44 but changed it a bit (actually, added "-t1/2" to make echoes appear earlier. I still don't understand completely how [freezeverb~] works. To be more precise, I don't understand what actually does [early_reflection_delay_line] do - but Miller Puckette in his example applied similar [reverb-echo-del] abstraction, and it works well! It makes a "power-preserving" mix, very useful thing in recirculating reverbs.

6. Two sine wave oscillators take their frequencies from two first randomly picked up notes from an array (see item 1 and 2). There are also two frequency modulators, 1846 Hz and 4 Hz sine waves, to saturate their spectrum. So it sounds a bit like noise, mainly because there are already too much sine waves from the [stream~] abstraction, and I thought it worth adding something at higher frequencies. And reverb smoothes these oversaturated sine waves, making them sound noisy.

7. How reverb similar to [freezeverb] works is described in help browser, I just can't understand why power preserving mix works. Also I tried to make one stereo reverb based on Miller Puckette's model, but a couple of experimental ones failed. This one is my best reverb ever.

8. Yes, and [master] abstraction is just a place where volume control, or spectrum analysis, are handy to perform from. Something to put all the wires at, and to listen to its output.
Platforms & version
Windows Mac Linux
Pure Data 0.43-extended
Type
Audio Generative
Download
http://puredata.hurleur.com/sujet-5080-meditation-background-generator
Song_0000_51aa0d02b3f72