On “parasoftware”

Recently, I have made significant headway on the development of my Max patch that turns a live gameplay session of Doom into a musical instrument. A particular challenge was parsing the data; information coming through the shell would have to be separated and processed in order to be ‘legible’ to Max’s interface and affordances. Throughout the process, I’ve been asking myself: what exactly is this patch?

While it is true that someone could ‘play’ the Max patch using text input, the real performance of the patch rests upon incoming data from a live Doom session: this piece is not parsing an existing doom demo-play file, but instead handling incoming live data with regular checks to a log file. So, on one hand, Doom does not make music in the way we could consider it, and the patch itself, while containing the possibility of sound output is ultimately reliant on the live Doom input to be dynamically controllable as an instrument.

I have come to describe this scenario and relationship as “parasoftware.” The Max patch and Doom are working together to create sound based upon player actions and choices.

This concept of parasoftware would be helpful to describe the means of a larger project of data sonification; where this is data, there is a means to sonify it for purposes that are artistic, entertainment, or educational. I have not written any obscure code to make these softwares interact the way that they do - I am merely using the standard affordances and bending them to speak the same language.

The language itself is a particular challenge. For parasoftware to function, it must transform the incoming data into a readable and useable format. Doom essentially prints text to the terminal shell during a live session. Although, the text that is printed sometime contains commas. Commas are a particularly thorny sticking point in Max; they are essentially reserved characters that separate messages in a string. As reserved characters, they are difficult to parse; regex in Max doesn’t recognize them, and while I was able to write Javascript code to recognize incoming string as a parsable array, but again, getting the string into the dictionary runs into the same problem (a classic Max feature) of only accepting the final message in the string.

Finally, after much trial and error, I discovered that an old object with Max will automatically remove commas once text is fed into it! This doesn’t seem to be a distinct feature, but an odd benefit of the object’s under-the-hood work to parse multiple messages into a single string, something it can recognize internally.

The parasitization of other software’s data is not lost on me, but nonetheless, this term and concept sum up the function and form of this Max patch, and hopefully open new conceptual doors to the imagining of data sonification amongst local softwares, and over networks…

Previous
Previous

Comma Parsing in Max *solved!*

Next
Next

Imagining the Modern Bass Studio