|a generative composition|
Here's a little generative composition I made: ogg mp3
Most of it is my own creation, although the controls/clock patches are adapted from obiwannabe's music tutorials, and I also used Johannes Kreidler's limiter in places. It also requires pd-extended, as it uses some Zexy externals and the reverb from the examples folder. I'll put some more explanation and subpatcher screenshots here later, but for now, here's the patch:
I should pare it down a bit by using only one body resonance subpatcher per "guitar" instrument, as in my second guitar patch, but then I would have to program in the decision to hold a fretted string or mute it. I guess I'll come back to it at some point.
UPDATE: Here's a little more description, excerpted from the comments I put inside the patch:
This patch plays a cheesy little song when the radio
button is on the top selector, and then does an avant-garde interlude
when you switch to the bottom one. But note that whenever you switch
to the interlude, it will start a series of gradual tempo changes
that won't be complete until the "seconds-remaining" timer below reaches
0 (but if you want, you can switch back to the main melody before
it finishes, and the tempo will jump back to normal). Above you can
see a whole bunch of faders that modify both the sonic and control
aspects of each instrument.
A basic concept of several components of this patch
is the generation of semi-improvisational variety to maintain listener
interest. So even when it's playing the insipid melodic part, the
bass and "rhythm guitar" are doing relatively unpredictable stuff.
But to maintain some semblance of rhythmic and harmonic order, sometimes
they're doing pre-programmed patterns (rhythmic strumming on the rhythm
guitar/root notes on the bass). But there's a Markov chain in each
that switches it between that pre-programmed part and a random arpeggiator
(which determines its own distribution of notes and rests according
to another Markov chain). "Clustering" refers to the percent chance
that the Markov chain will stay in its current state on the next beat.
The "how-often-root" selector for the bass determines how often the
root note will play when the Markov chain is sending it the stream
of beat triggers.
I could have programmed the drums in a similar fashion, but I was having too much fun manually switching between drum patterns.
The HYPER-AVANT interlude bit (bottom option on the
radio button) generally involves different control modules than the
banal main theme. The "melody" here (if it can be called such) is generated
randomly, with different probabilities of going up or down different
intervals along a diatonic scale in a preset key. And that preset key
changes constantly according to a random walk around the circle of
fifths. Harmony turns on and off according to a Markov chain. The drums
randomly change time signature with the beginning of each phrase (defined
as a group of notes bookended by rests), and there's no drum pattern
selection here. The bass here is just a random arpeggiator, but the
rhythm guitar works basically the same way as it did in the main theme
The stringed instruments are all modeled by feeding
brief distorted noise impulses into basic Karplus-Strong waveguides
with a set of bandpass filters approximating a wood formant in the
middle of each feedback loop. The pluck impulses are also comb-filtered
to represent the position of the pick. The drums are made of noise
impulses and vcf~ variable-frequency bandpass filters. The cymbals
are ring-modulated square waves (with some noise in the hat as well). [Note: I've posted all of the individual instruments on the other pages.]
The interlude section also contains a delay line that
quickly turns off its input and becomes a recirculating feedback instrument
that follows the current root note. It is sent to a waveshaper and
panner that change parameters on their own, then to yet another delay, and finally to the dac~ in dry and reverbed form.