Protest Songs
Protest Songs brings the live activity of the UK Parliament petitions website into a single soundspace, turning the collective actions of thousands of petition signatories into an evolving vocal texture.
It draws on the robotic voices and sense of scale in Hansen and Rubin's Listening Post, the spoken-word practices of Juxtavoices, and Steve Reich's layered voice works, using computer-generated speech to create a constantly changing litany from the activity of the petitions site.
Read more about the piece
I didn't think it was going to be possible to bring Protest Songs over to the web via Web Audio. This was mainly because the mechanism it used was a (deliberately) primitive text-to-speech engine called eSpeak. It was chosen to mimic the sound of early voice synthesis heard in 2001: A Space Odyssey or Radiohead's Fitter Happier. In my original version, eSpeak was a desktop application which I manipulated via command-line prompts injected by a Python script. It was a roundabout way of doing things, but it meant I could generate a library of samples for further manipulation in Pure Data.
In my early experiments with text-to-speech in the browser, I kept bumping up against either the native TTS support that browsers offer, which is great but not capable of parallel processing, or ludicrously expensive APIs whose voices were far too human-like for my purposes. I don't know why it didn't occur to me to simply look for eSpeak in the browser because, when I did, it turned out that the original code had been recompiled to run in JavaScript. Not only that, but with some AI Copilot help I was able to render voices in the old eSpeak manner and write them to AudioBuffers, allowing the whole world of the Web Audio API to manipulate them.
With that technological hurdle cleared, the rewriting of Protest Songs became straightforward. The UK Government Petitions site offers its data as JSON. This is read by a processing script which pulls the title of the petition and its signature count. Newly signed petitions are placed into a pool to be rendered by a random voice. eSpeak offers more than twenty variations of accent and gender within British English. As with the original piece, I called this the "litany" layer. A further layer, called the "babble", features a rolling texture of voices split into smaller fragments. The desired effect is that the litany petitions remain intelligible over the babble, but only just.
As a data sonification, there was one further element specified in the original work: the "anger" index. I regret this terminology a little, as not all of the petitions are written in that spirit. Perhaps "activity" would be a more neutral term. The more activity recorded - that is, the more individual signatures added between readings of the petitions page - the more animated the piece becomes. The gaps between petitions in the litany decrease, while the density of the babble, a combination of the number of voices and the rate at which they occur, increases. The speed of the undertone layer, determined by the granulator pointer's progress through a file, also increases.
This undertone layer is the one major change I made between the original piece and this new realisation. The original work featured a layer of real protest sounds: people chanting slogans that became more active as signatures arrived. This was achieved through crossfading between a relatively sedate recording and a louder, more animated one. On listening back to recordings of the original piece, however, I felt that this, whilst a good idea, wasn't executed particularly well and remained somewhat disjointed from the dry computer-voice layers. I think I overreached slightly and was perhaps trying to force too many ideas into a single piece. This can happen when thesis works are required to address research questions and occupy particular niches within a portfolio.
I replaced this musique concrète layer with a more abstract undertone. This is also drawn from the bank of voice samples but is granulated into much finer particles than the babble. It becomes a stream of clicks, textures and small noises that gently flow beneath the other layers.
I'm pleased with this more minimalist version and think it fulfils the original vision of producing a sonification work that is almost pure sound art, featuring no "notes" or conventional musical material. If I may place myself amongst august company, it cites Steve Reich's seminal voice works as a precedent. I am particularly taken with the idea, one that ran throughout my PhD research, that people can become unconscious co-composers of a work. In this instance, everyone who logs on to the petitions website contributes to the unfolding of the piece.
The original version of Protest Songs is documented in my PhD thesis.
Acknowledgements
The browser-based speech synthesis in this work uses espeakng.js, a JavaScript port of eSpeak-ng compiled using Emscripten. The original JavaScript port was developed by Eitan Isaacson and adapted for eSpeak-ng by Alberto Pettarin. The port is released under the GNU General Public License (GPLv3).
The data used in Protest Songs is sourced from the UK Parliament Petitions website. The work is an independent artistic project and is not affiliated with, endorsed by, or produced in association with the UK Government or UK Parliament.