forking-a

so i'm still playing with the idea of using l-systems as pop music structures.  let me recap as to why this interests me, because i'm also trying to reaffirm that i'm not just doing this as a technical exercise.

first, let me position myself as a practitioner of western music investigating western applications of "pop" culture.  while western "pop" music is heavily constrained in terms of form, it has a high degree of semantic power because those constraints are conventional and solutions can be predicted from within a range of legal possibilities.  this is not unlike other highly constrained art forms.  because of this, and because of other socio-political assumptions implicit in its making, "pop" has the potential to profoundly express emotions.  among these socio-political assumptions implicit in its making are those of class, gender and race.  of those three axes, only one is presumed to exist, that being gender, which is generally treated fairly conservatively to the extent that it exists at all.  the "pop" gambit is to make distinctions disappear, so all potential consumers are pleased, and perhaps even feel liberation in performing traditional roles and customs.  additionally, since class doesn't exist, or perhaps since only the middle class exists, one must be completely blindsighted to the means of production which exploits the class system in order to survive.

all the while, this music is so heavily constrained that it can be inflected with many subtleties, and in order to pick up on these subtleties, one must be privy to the constraints that the format entails.  the same phenomenon happens with other formal structures like the blues.   however, these understandings are generally assumed to be unconscious.  very few "pop" songs call direct attention to their formal composition, although of course exceptions exist.

this leads me to a problem in such rigorously constrained musical forms: given all these very specific rules for how to make a "legal" solution, how does one still manage to convey such a wide range of emotional content?  i believe i already answered this question, but it's still a problem.  this can be expanded into other problems, such as, given an arbitrary but similarly constrained ruleset, how can one still achieve such a high level of affect in a solution?  the answer clearly does not lie in the use of words, since i would place tonal counterpoint practice in a similar category of strict rulesets.  also in karnatak music, where melodic improvisation is constrained to such a degree that within a few improvised notes, the audience is able to make conclusions as to the identity of the piece.  Note this is not due to a limited cannon.  (One possible explanation for this phenomenon at karnatak music concerts may also be the shared notion of the learned audience as a social virtue.)

This brings me to l-systems.  L-systems are formal rewrite languages used to produce self-similar, occasionally plant-like structures and fractals.  These systems have sprung up in many sound and visual art works.  I do not pretend that my concept is unique in that respect.  To my understanding of the current work in place, my position is unique because I am striving to produce music that, while constrained by these algorithms, remains evocative and subtle.  Furthermore, I am attempting to draw comparisons with poetic grammatical substitutions (ie epic poetry) and other spoken but extra-natural grammars (such as solkattu).   In so doing, terms in a generated 'sentence' are comprised of short phrases which are context sensitive but also highly constrained.  While the form is strict, its interpretation is indeterminate within a significant range.

Not much of the above is news.  I have posted about this project several times previously, and if you want more specific examples and anecdotes I refer you to my earlier posts: more algae and factory factories .

The news comes from an issue I am having with certain types of l-systems that branch or fork off.  Since those terms are vague and abstract, and also apply to most l-systems, let me clarify.   I am having problems of rendering parallel branches.  The issue is of implementation, to be sure, and I'm close to a solution as well, but I thought I'd share some thoughts before I totally figure it out and get sick of it.

To allow sclang to choose which patterns to tell the server(s) to play, I have been piping in a commandline script Mike Clemow and I have been working on that generates the l-system instructions.  It is fairly simple python code, and with Mike's help it has been abstracted to allow for user-defined rulesets, and stochastic applications of those rulesets.  The problem comes down to the definition of a pipe.  A pipe is the result of a commandline operation that can be read as a UnixFile into sclang.  This process I have implemented in a serial fashion, reading in bytewise as characters.  Herein lies the problem.  A branching l-system looks like this:

a -> [aab]; b-> a;  axiom a;

a

[aab]

[[aab][aab]a]

[[[aab][aab]a][[aab][aab]a]]

... and so on.  the '[' represents a matrix push, where the current values for position are saved and restored at the matrix pop ']' .  This can be accomplished in sound by forking off a thread from the main thread to follow the instructions contained within the brackets while the main thread continues simultaneously.  Thus, instructions that are read in series must be used in parallel by many processes.  Unfortunately, this does not fly, at least without some considerable tomfoolery.

I am considering saving the forked instructions into arrays stored in sclang.  The prospect kind of scares me.  Of course in a distributed environment I can send those forked messages to remote ips for synthesis, but that still leaves sclang with all these arrays to deal with.  Another implementation of the clustering could allow sclang to be distributed across the network as well, but I'm not sure what I think about that just yet.

One thought on “forking-a

Leave a Reply

Your email address will not be published. Required fields are marked *