When I started working on collective minimal improvisation with Jennie Zimmermann and a group of musicians and dancers, my personal goals were very much inspired by rhythmic music.
I was and still am fascinated by polyphonic pygmy singing. To get an idea, have a look at this video I recorded at a workshop in switzerland:
For this fascination of mine, I found different outlets. I did my own interpretation of a particular pygmy melody:
Next to reading on the subject, I did my own analysis of pygmy music:
So when we started – mostly using our voices and movements – to research collective improvisation, I was very much working towards the developement of rhythmical structures. This expectation was very much reflected by stating the six phases of minimal improvisation, as follows:
1. Phase – Finding a Sound
Finding one sound and sticking to it
2. Phase – Sounding together
Singing, playing the respective sounds
3. Phase – Sequence of Sounds
Forming a sequence of these sounds
4. Phase – Rhythmic Pattern
Transferring the sequence to a rhythmic pattern by relating to a common pulse
5. Phase – Variation
Using the rhythmic pattern as a starting point for variation
6. Phase – Structure
Playing around with different combinations of the phases
These phases could be decribed as a slow developement towards rhythmic patterns (1st to 4th phase), which evolve further (5th and 6th phase). That was my personal focus, but it turned out that the focus of the whole group was much more on exploring the many qualities of interplay that come up before a steady rhythm is established. A prominent example of what we were working on is the imitation game. Being a group that consisted of both musicians and dancers, we spend a lot of time looking at the differences and connections of both disciplines, asking fundamental questions about the nature of music and dance which left little time to actually cultivate the specific rhythmic qualities I was after.
But the group research showed me the beauty of co-creation that is collective improvisation. It set me on the direction to keep on researching the potential non-determinated processes.
Instead of composing polyrhythmic music, I set out to understand the rules of this music, so that I could set up conditions for such music to emerge. If not with a group of performers, then with the code of a music software. In turn, this code could be used as a formula to create similar music with a group of musicians.
The following music code – see below, to be executed in Sonic Pi – owes a lot to the minimal improvisation research. Instead of four performers deciding on what sound to make (phase 1), four different pitches within a specified range are set; that is, they are defined according to a randomized procedure. In doing so, I do not act as a composer who specifies what pitches are to be heard but I am defining the range of possibilities, which could be seen as meta-composition.
The four pitches (which may change in the proceeding of the music) are subject to two processes. First, they are triggered in relation to each other, within a certain pattern length. Second, each of the pitches has it´s own position within this pattern length. Both, pattern length and individual position may change (phase 4), but there is a certain emphasis on continuity (phase 3) due to my interest in minimalism.
#Evolving live_loops 1 t = Time.now.to_i use_random_seed t puts rand use_synth :sine #Setting the minimum rhythmic unit live_loop :define_delay do set :teim, (ring 0.125, 0.25, 0.375).choose sleep rrand_i(1, 256) end #Setting the length of the repeated pattern live_loop :define_phrase do set :taim, (ring 0.375, 0.5, 0.75, 1, 1.5, 2).choose sleep rrand_i(1, 256) end #Setting the four different pitches live_loop :setting_pitch_one do set :pitch_one, rrand(50, 85) sleep rrand_i(1, 512) end live_loop :setting_pitch_two do set :pitch_two, rrand(50, 85) sleep rrand_i(1, 512) end live_loop :setting_pitch_three do set :pitch_three, rrand(50, 85) sleep rrand_i(1, 512) end live_loop :setting_pitch_four do set :pitch_four, rrand(50, 85) sleep rrand_i(1, 512) end #Sending out regular cues live_loop :cues do cue :zakkk cue :pakkk cue :rakkk cue :rikkk sleep get[:taim] end #Adding the individual delay defined above to be applied to each sound creates a rhythmic pattern live_loop :chooser_one do #Choosing the delay which is actually applied below set :wa, (ring 0, 1, 2, 3, 4, 5, 6, 7).choose*get[:teim] #After some time, the delay is changed, thus the pattern changes sleep rrand_i(1, 256) end live_loop :chooser_two do set :wo, (ring 0, 1, 2, 3, 4, 5, 6, 7).choose*get[:teim] sleep rrand_i(1, 256) end live_loop :chooser_three do set :wu, (ring 0, 1, 2, 3, 4, 5, 6, 7).choose*get[:teim] sleep rrand_i(1, 256) end live_loop :chooser_four do set :wi, (ring 0, 1, 2, 3, 4, 5, 6, 7).choose*get[:teim] sleep rrand_i(1, 256) end live_loop :sound_one do sync :zakkk #The choosen amount of delay is applied wait get[:wa] #The sound is played play get[:pitch_one], amp: rrand(0.1, 1), release: rrand(0.1, 0.8) end live_loop :sound_two do sync :pakkk wait get[:wo] play get[:pitch_two], amp: rrand(0.1, 1), release: rrand(0.1, 0.8) end live_loop :sound_three do sync :rakkk wait get[:wu] play get[:pitch_three], amp: rrand(0.1, 1), release: rrand(0.1, 0.8) end live_loop :sound_four do sync :rikkk wait get[:wi] play get[:pitch_four], amp: rrand(0.1, 1), release: rrand(0.1, 0.8) end
So how does this sound like? Have a listen to these five executions of the code above.
Why is it different each time the code is executed? Sonic Pi uses a random seed to mimic randomness. In the case of the code above, it uses a different seed according to the time at the moment of execution.
As mentioned above, it would be totally possible to use this approach to create and variate rhythmic patterns with a group of performers. But I do also love the results of the machine, I am a proud father to all these little Frankenstein sounds.
Apart from using sine sounds, it´s possible to use any other sounds, for example drum samples. Here are some examples of slightly different code used as a drum pattern creator.
Sine sounds and drum sounds can be combined, this time with a version of the code that creates overlapping symetrical and asymetrical patterns, inspired by african rhythmical structures:
A next step could be to use the code not with internal sounds or samples of Sonic Pi but to trigger external synths and samplers via midi. This is exactly what I did when on tour with the free folk formation My Sister Grenadine in May. Sonic Pi served as a sequencer, triggering spontaneus live samples in the ReSlice app and Ableton live.
Sound examples of such uses may follow, but for now, let´s leave it at that.