Music 171 homework 8
cascading tuned delay
This is an effect that sometimes showed up on "digital delay" devices in the
early 1980s; perhaps it's available now as a plugin somewhere but I haven't
seen it. Anything that goes into the effect comes out as an arpeggio (a
quick, overlapping sequence of pitches) that can either be used to decorate
the orginal sound or by itself as an abstract-sounding musical cloud.
The network consists of a delay line (just a delwrite~) that is
read out by 19 copies of an abstraction. The abstraction contains a
delread~ and a bandpass filter (bp~). Each copy gets a different delay and
a different filter setting so that if you put a short sound in (for example) you
hear the 19 filters in order of the delay times. In the example here, the
delay times are just 17, 34, 51, ... (the multiples of 17) - of course, the
number 17 is just a setting that you can change later. The filters are
tuned to a whole-time scale, specifically, the MIDI pitches 72, 74, 76, ...,
108. (these are chosen roughly to span the formantic regions of most vowels
so that this setting works particularly well with speech.) The steps are
as folows (with, as usual, each worth 2 points):
- Once more, make a sampler that can play the tired old radio sample. If
you wish, you may substitute your own, different sample - that might help
preserve everyone's sanity. Send the output into a delread~ with plenty of
room, say 10 seconds. Also send the sample output to the patch's output so
we hear the "dry" sample along with what will come out of the delays.
- Make an abstraction to read and filter the signal from the delay line; the
abstraction should have only one delread~ and bp~, and should have some
mechanism for summing the outputs of all of them (throw~/catch~ or the
stacking trick from Pd example D13.additive.qlist.pd or D11.sampler.poly.pd).
- Fix the abstraction to use two arguments a bit like the Risset bell example
(D07.additive.pd): the first argument should be a multiplier for a base delay
time (this should range from 1 to 19) and the second should be a pitch offset, a
number of half-tones above a base pitch (0, 2, .., 36 so that if the base pitch
is 72 you should hear the pitches 72, 74, ...108).
- Inside the abstraction, multiply the first argument by a receive to compute
the desired delay time, and feed that to the delread~ object. Also add the
pitch offset to the output of another receive to compute the resonant pitch.
This should go to the bp~ object's resonant frequency input, and also to
the input for Q so that the bandwidth, equal to frequency/Q, is one Hz.
This will be a tightly resonant filter.
- Outside the abstractio, in the main patch, make number boxes feeding into
sends to control the base delay time (17 for me) and the base pitch (72). If
you like find your own values that go well with whatever sample you're using.
As usual, fix a lodabang and mesage box to get the good values into the number
boxes. Finally, collect the output of all the filters, and multiply it by
something to raise its level to something that mixes well with the "dry"
unprocessed sample (I used 50; the filter outputs are quite soft)
Your successful patch should sound something like
this.
back to music 171 main page