CLASS PROJECT
Simulation of a Drum Circle
The concept of community drumming has become increasingly popular over the recent years. Culturally, drum circles are far from a new phenomenon: such form in music is a means of social, religious or spiritual expression. A drum circle is a collection of drummers, whether it be 5 or 50, who gather and create music together by listening to each other and evolving a rhythm pattern over time. "When the circle works as a team, everyone benefits, because we all hit THE GROOVE, where the energy flows, time stops and we all evaporate....(from RhythmWeb)" - This might be seem intangible, but it is this sensation that this project inteded to create.
The goal of this project was to use mathematical tools to simulate the experience of drummers attempting to synchronize and form a rhythm that would evolve in a meaningful way. Issues that must be considered are the following:
* To what extent do drummers want to synchronize rather than create their own unique pattern?
* How does a drummer decide to change his/her own pattern over time?
* When is there "too many notes" in the pattern? How does this relate to the 'information' of the group?
* Can drummers form independently to an established pattern, only by knowing the target pattern while playing independently of others?
To explore some of these questions, several methods were tested. All programs were implemented in MATLAB, running on a 450MHz PIII.
First Implementation: Paying attention to drum-beat lengths
In the first iteration, there was no rhythm evolution over time; rather, two random drum sequences were created, and the similarity was measured in synchronicity. In order to generate the two sequences, attention was paid to the amount of time it would likely take a drummer to hit a drum of a specific size. For example, one might only hit a drum with a low-frequency sound (such as the 'doum' of a doumbek) once every quarter note division, whereas a high conga sound might get hit as frequently as a thirty-second note. If the two drummers had more than three of 32 beats in common, one of the drummers had his pattern shifted over by a thirty-second beat. The idea here was that two drummers would want as little in common as possible, while possibly still having some common drum hits. This implementation was merely a first attempt at getting drum sounds out, with little attention paid to the theory behind the drumming.
M-file: first iteration
Second Implementation: New synchronization, Entropy Maximization
The second implementation still used the concept of unequal beat lengths. This made it a challenge for evolving the pattern over time, since it was difficult to place a new sequence among the existing pattern, deciding if it would fit.
In order to simulate the evolution of the drum pattern over time, the concept of entropy was introduced. Entropy can be defined as:
Entropy tells us how much information is present in the system by giving a measure of how many bits it would require to describe the system
[1] [2]
But what are these probabilities? This is an excellent question, and by doing this project I see there are several answers. There are two kinds of distributions that are significant:
1. The distribution of on/off drum beats of one's own drum pattern, and
2. The distribution of on/off drum beats as a contribution to the drum circle's rhythm as a whole.
This implementation attempted to ressolve the latter issue. Probabilities were calculated by histogramming the number of occurances of each drum beat. To increase the entropy, whichever sound had the smallest representation was increased by adding a drum pattern of that sound. This became difficult while keeping the constraint of having the different lengths of allowable drum beats.
Synchronization became slightly more sophisticated in this iteration. Coincident beats were noted and the number of occurances was expressed as a probability over the total number of possible beats, later formed into a CDF. A random number was generated, and the index was taken (if greater than the probability) to determine the sequence that got added in.
M-file: second iteration
Third Implementation: synchronization from the start, entropy maximization over time, no beat-length constraints
Since it was becoming difficult to add in new drum 'primitives' ensuring that they would fit given the time constraints I had set up, I decided to abandon this constraint, in an effort to focus more attention on the actual synchronization and time evolution. This was a wise decision.
In this case, 5 drummers were used. At the start, each was given a pattern consisting of 6 or 7 (of a possible 8) quarter note beats on to start, occuring on strong beats. The theory here was that drummers would start to drum near-synchronously and would deviate over time. This method was intuitively satisfying as it was easier to hear the evolution over time.
This evolution was done using the entropy method mentioned above. The probability, p(i), was the [number of note on's / total beats (32)], thus there were five p(i)'s. Entropy was calculated using the formula above. Whichever drummer had the lowest p(i) got a new drum beat, ensuring that the new beat location would not coincide with an existing beat. At each iteration, it was verified that the total entropy was increasing (otherwise a new drummer and beat location would be selected). This proved to be pleasing to the ear.
The main shortcoming of this method is in the entropy calculation. This method gives no information about the contribution among each drummer to the entropy of the system; that is, it is not clear how much information is contained among drummers. Merely adding an 'on' beat will always increase the entropy, in the way this implementation was set up. However, this method gave insight into the future direction of this work.
M-file: third iteration
Fourth Implementation: Something different: simmulated annealing to achieve a target pattern
What was of interest in this case was how drummers might independently alter their own beat to 'fit in' to the overall sound of the group, independent of each other. This method tells us nothing about how drummers interact; however, it is interesting to see that drummers can eventually choose their own pattern to fit an overall target.
The method used in this implementation was Simulated Annealing [3] , in order to partition a space of 5 drummers to achieve one target sound. The target pattern was generated at random, using one of 5 possible drum beats (represented symbolically as 1-5) or a silence. Five drum strings, consisting only of 'on' or 'off', were then generated, also at random, and were summed together. This sum was compared to the target sound using the following difference metric:
One of the drum beats was then 'flipped' (changed on/off state), and the difference was recalculated. If the energy increased, the move was rejected with probability:
where alpha was chosen as 0.001 for a slower decay rate.
The following figure shows the convergence of the difference (referred to as energy) measure over several iterations:
The last few iterations were played in real-time (along with the target). The resulting sum of the five drummers seemed to be converging to the target pattern.
This method was useful in achieving a target pattern. However, as mentioned, no information was gained on the interaction of the drummers. It was more of a study in the collective and 'unselfish' aspect of drum circles. One might consider revisiting the difference metric used in the calculation. It is also important to note that the target sound contains specific drum sounds at particular locations. By generating five random patterns, we are getting a sum, but the sum at a particular beat may not sound like the desired target; rather, it will simply be the addition of the number of drummers playing at that time.
M-file: fourth iteration
Conclusions
This project skims only the surface of what is a very interesting study of human interaction in a musical setting such as a drum circle. The various implementations explored some of the factors, including synchronization and pattern evolution over time. However, there is still a great deal that remains to be studied with respect to the information that is contained between two or more drummers and the mutual information present between one drummer and the pattern as a whole. To show this relation, the figure below demonstrates how it is necessary to figure out each drummer's contribution to the total distribution. This would serve as a measure of how much entropy is being added to the system.
Entropy seems to be a good starting place for further exploration of this interesting phenomenon.
Appendix
Other required MATLAB M-files:
makestring.m
zpad.m
Drum Samples:
"Doum" sound [4]
"Bek" sound [4]
Low conga sound [5]
Mid conga sound [5]
High conga sound [5]
Drum Circle Links:
Drum Circle FAQ on RhytmWeb
Drum Circle Course - has a good list of books on the subject
Listen to a clip - online drum circle samples are hard to come by; this site has a clip that loops as the background music.
Listen to MP3: This shows a good example of how drummers start synchronized and then individuals 'mutate' the pattern gradually. (Listen to Here and Now).
References
[1] Cover, T. M. and Thomas, Joy A. Elements of Information Theory. New York : Wiley, c1991.
[2] Shannon, C.E. A Mathematical Theory of Communication. Board of Trustees of the University of Illinois, 1949.
[3] Gershenfeld, N. The Nature of Mathematical Modeling. Cambridge: Cambridge University Press, 1999.