A word for Permut8, a plug-in developed by Sonic Charge. It's a software simulation of a digital delay line box -- a piece of fairly simple but flexible signal-processing hardware that once was fairly common in sound-making. (I believe crude versions of this technique were used to make the sounds in video games back in the Pac-Man days, when silicon was expensive. I suppose there were more elaborate, programmable versions in studios.) It can produce a variety of different effects - echo, flange, decimate, and much more, most of it indescribable. (It can even be made to speak words, in a very crude manner, using alternative firmware that Sonic Charge provides at no charge.) Ck out the website for a more complete description.
One nifty aspect of this code is that its UI has been designed to look like a piece of pre-PC '70s/80s hardware (think orange), complete with masking tape labels, etc. If you like to turn knobs and toggle switches, this is the box for you! It has taken me awhile to master, if only a little, but that was mainly because at first, I was feeding it overly-complex sounds; it does better with simple percussive sounds. Now, I can have endless fun warping even the simplest kick drum beats.
Magnus Lindström, the plug-in's developer (and someone key to the development of Reason, I believe), described its workings like so:
"Delay lines are very simple constructs. Consider an analogue tape delay. You have a record head that records the input to physical tape. The tape travels some distance and the recorded sound is then picked up by the playhead after a certain time. The very first "digital" delays worked through similar principles where audio is fed into a chain of analogue(!) memory cells. For each clock cycle all audio data was shifted to the next cell in the chain until it reached the output on the other end. These delays were called "bucket brigade" delays since they remind you of how people can form a chain for passing water buckets to extinguish fires.
"This technique could be implemented in software as well, but it would be a huge waste of CPU cycles. E.g., on a delay line of 30000 samples you would need to perform 30000 move instructions for *every* input sample. Instead we use a circular buffer, i.e. we view a piece of memory as laid out in a circle where there is no beginning or end. Now we let the write and read pointers run around this circle. If we compare this to the tape delay, we move the record and playback heads around the tape, instead of moving the tape. The result is the same, but requiring just a few CPU cycles per sample regardless of how long the delay line is.
"There are two different ways of changing the length of a delay, regardless of which of the aforementioned designs we are talking about. Either you change the effective length of the delay line. In this case it is enough to change the *distance* between read and write pointers / heads. Alternative #2 is to change the speed / rate with which the delay line "rotates". Nearly 100% of existing software delays change the length as this is cheaper on the CPU, doesn't affect audio quality and is much easier to implement. Permut8 allows you to use both methods but it is focused on changing speed. E.g. when you tempo-sync the delay in Permut8 it adjusts the clock frequency, not the delay line length."