pure data and data structures

I hate it when I arrive on that place where I start to really think about art and the tools that I use to make it. it really does put me in a mood. why spend time thinking about how I do things when I could be using that same time to do it? I suppose that’s just part of the creative process. or at least my creative process.

so I think about it.

I think about how I work. the tools I choose. the method. when I have an inkling of an idea, where do I start to realize it? the sad truth is that I sometimes let my instrument lead me.

I always thought that one of my greatest strengths as a student composer was that I was a horrible pianist. I spent a lot of time in front of a baby grand pounding out all manner of sonorities with none of the prejudice of a skilled performer pouring forth from my fingers. as any of my poor former teachers (those patient and wonderful artists!) would point out, my hands just didn’t get it. I was not predisposed to any of the shapes that sometimes lead to predictable sounds. this is precisely why I never compose for the guitar with it in my lap. it’s too easy to let my hands lead. but what does one do when the medium, the instrument, and the performer is a computer?

I have been playing around with data structures in pure data. there are a few papers out there and I would send anyone interested in the topic either to wikipedia (http://en.wikipedia.org/wiki/Pure_Data) or to frank barknect’s paper found here: http://lac.zkm.de/2006/papers/lac2006_frank_barknecht.pdf. one might also look up references to hans-christoph steiner’s work “solitude.”

I tend to work in a determinate fashion with my computer music. I may set up some scenarios where chance is involved, but I usually like to know what i’m going to get when I set one of my creations in motion (think of a music box that winds up or down at random but still plays a set tune). maybe not to the specificity of a midi file, but perhaps with the same level of certainty I have when I present a human performer with a traditional score. I know that there will be some interpretation, but I can rely on certain elements occurring in a particular fashion and order. staccato is staccato, forte is forte, and this pitches will come in the order specified (if it is specified). and it’s this desire for some form of control over the output that interested me in the data structures. this desire to encode my intentions led down quite an interesting path.

when I started playing around with the data structures, I tried to create a piano roll interface. I quickly lost interest in this when I studied the score for the aforementioned “solitude” and the pure data documentation. there is more to life than lines and rectangles. there are points! and colors! and slopes! and did I say colors?

colors. what a brilliant idea! I started immediately to encode data by color. I could set the color of lines and points. each would trigger some sort of change in the instrument. it was like marking dynamics or articulation. but it started me thinking: do the colors matter?

I caught myself doing something silly: I made a chart of colors and what they “mean.” then I wrote a patch that translated the colors into numbers that I could use to manipulate voices or sound files. i’m not sure how it dawned on me, but it eventually did: the computer doesn’t care. 900 isn’t “red.” 900 is 900. an integer. a simple number. 9 isn’t “blue.” it’s 9. nine. 5 + 4. 10 – 1. all the same.

but something in me cared. i’m not reading the score. i’m not interpreting it. i’m using it to program a sequence of events. as long as my LFO changes at that point in time to 9 Hz, I should be happy. yet i’m not. I want blue to signify something. I want it to mean that the vibrato is going to decrease. that the sound is going to become more placid. that tranquility is spreading across my piece like the brilliant western sky.

nevertheless, all pure data gets out of it is 9.

when I set up an interface like this, when I start to encode sounds in lines and colors and shapes, am I losing some of the intellectual control over the sound and giving in to an instinct that may lead me toward a score that looks attractive instead of a sound that is? after all, the listener will likely never see the score. and there is no way to interpret the score outside of the patch. blue only means 9 Hz in this specific patch. there is no standard application for blue. perhaps if I were to codify my use of symbols…but that sounds like an awful lot of work.

I think that most users of pure data will agree that though there are times when things can be reused it is more often the case that a patch is used for a particular piece and that is the end of it. in a strange way, each patch becomes a unique endeavor and is almost a work of art in itself. and not in the “is-programming-art-?-(no,-it’s-not)-slashdot-wank-fest” way either. it’s the encoding of a process that leads to an end in a very particular fashion. it’s a process of discovery and when one is open to it, it can lead to unforeseen and incredible results. and I wonder if that’s where my experiments with these data structures will take me.

and I wonder what the practical implications of encoding data this way might be. it’s likely not the most efficient way to encode the data, but it might be the fastest way to alter it. maybe that will turn out to be the genius of it. perhaps it will prove to be most useful in the fine tuning of a composition and the easiest way to avoid messy text files, etc for storing performance data.

more on this after further experimentation.

Leave a Comment