For many years I have wanted to develop a generative music system that uses passive interactivity. Essentially, a system that generates music based on the users’ everyday activity.
In 2012 I developed the first of a series of generative music objects, programmed in C++. The first is simply called dynamo, which stands for Dynamic Musical Objects (e.g., DynaMO). It generates harmonic sequences using a very specialized algorithm. This algorithm was inspired by a social behavior model. Certain pitches “get along” well with other pitches. They tend to “hang out” more. While every once in a while, depending on how “wild” a pitch is, it will choose to hang out with someone that it does not get along well with. Thus creating waves of dissonance and consonance. If you set the system for relatively low dissonance you get a very mellow and serene harmonic sequence.
Overall in this algorithm each pitch knows what came before and makes decisions on who it wants to hang out with depending on their propensity to be “wild” or more reserved.
Right now the project is not open source, but it appears in my installation work and in the my recent iOS app, Cetus Square. Though I have posted here the Pure Data object, compiled in Mac 10.8, with a starter patch. The audio example here is produced in Pure Data using a very simple synthesizer and a 9 second swell.
I used this same concept of social behavior to develop three more objects. Rhynamo is the rhythmic generator. It uses “strong” and “weak” beats as its behavioral engine. Mynamo is the melodic generator. It uses a musical “terrain” map to figure out where it will go next.
Finally, there is Stynamo a form generator. Right now it is more of a storage device that can recall previous structures, and transpose their pitch and rhythmic values. Together these objects have been used to create dynamic music for most of my public sound art installations on this site and urbanstew.org Also see a demo of other objects: here.
DynaMOs can collectively create music that will never end, use little memory, produce high-fidelity audio and evolve and adapt to any user.
It is possible that the names for these objects leave much to be desired. I don’t care. I’m not trying to market them.
– a demonstration of how these objects can be used. You will hear three distinct musical areas. All of these are generated by changing either the timbre or object parameters.
dynamoTest – rendering of the first object, which generates harmonic sequences.
trooba– Here is the collection of objects compiled for Pure Data 32-bit, Mac OS 10.9. The source is not public for this library. Here is a 64-bit version for 10.12: trooba-64-bit. I don’t have other compiled versions at the moment, but if you are truly interested please contact me: robert {at} urbanstew :dot: org.