(Update: Next post is here)
I was having trouble at the start of the year figuring out what projects I’d do this year. So I just rambled back and forth amongst the ideas I had (I’ve posted about them previously here). Finally, obsession emerges from ennui, and I know what it is that I’m going to do.
The project is codenamed Esteso Voce (“Extended Voice”, italian speakers please correct me and I’ll fix it). The intent is to create an instrument which extends what a highly trained singing voice can do, allowing the singer (me!) to achieve sounds and music which could not be achieved unaided, but only including sounds which would be judged by an expert in voice as “authentic acoustic sounds”.
Some explanations to come, but first a little rundown of the history of this idea.
A few years ago (2006 it turns out) I had this idea for making the “poly voce”. I really didn’t know much about digital audio, so I conceptualized it from whole cloth.
Here’s the original document where I laid out the vision/requirements as I saw them.
Realtime Vocal Ensemble Instrument
I sent this to Tyrell Blackburn (a classmate of Jodie’s at the time at Adelaide Uni), and he gave me very interesting feedback, the most important of which was to point me at Max/MSP.
I was just going over the email exchange from 2006 (thank you gmail for remembering everything), and noticed that the day after he told me about Max/MSP, I sent him the first prototype working patches for the concept. It was a manic period.
Tyrell also warned me about the concept of using a midi keyboard for relative pitches, (I talk about it in Realtime Vocal Ensemble Instrument), that it would confuse people who were used to the keyboard mapping to absolute pitches (ie: everyone). It turns out that was absolutely true!
Where I managed to get to was that I made successive prototypes (thank you to Christian Haynes from the Adelaide Con Electronic Music Unit for introducing me to the poly~ object), but they had a lot of lag, and weren’t really ever going to be reliable. I didn’t have a decent laptop and audio equipment for the job at the time, so I was using an underpowered PC, which didn’t help (this stuff is CPU intensive).
I wish I’d made a recording of it in action, but I never did. What I have found are the first prototype patches that I sent to Tyrell, I probably have the others lying around.
Now, the main thing I found out from this process was that this has already been done, this kind of effect is called a Vocal Harmonizer. Christian sent me a link to this, for example. Really amazing stuff. So, I lost my head of steam a bit, thought about buying some off the shelf effects, but never got around to it.
What I also learned in the process was about the PSOLA algorithm (well, I learned only that it exists, and that it requires real-time pitch detection, so all my ranting about no pitch detection is somewhat nullified, but I’ll live). I used a free PSOLA implementation.
Some years passed. During that time I’ve done a few other related things. The most relevant has been a bunch of work with Ableton Live, which I used to make polyphonic music with only my voice, via recording samples in realtime and looping them. Some examples are here, here and here.
The Ableton Live thing shows promise, but honestly I just don’t like that software. It’s just not flexible. There is no user scripting or macros, not much customization for live performance. It has this crappy facility to map keystrokes to actions for using it live, and people go to town with midi->keystroke mapping software, and all kinds of funny stuff, to tie it to foot pedals and the like (and get great results, no doubt about it, eg: this).
And then, I moved to Ubuntu for my main notebook. No more windows only software like Ableton. I really want to embrace the free software scene anyway, and there’s a lot of stuff available for linux, so it’s all good.
And we come to the present. It grabbed me recently that what I want is more than a vocal harmonizer. A vocal harmonizer is an effect, a gimmick. What it does is good, but the context is wrong.
What I want to build is an instrument, not a piece of software, not a set of effects, not a sound module. The aesthetic is that of a violin or a trumpet or a bassoon. Something acoustically rich, simple in concept. Something which you have to learn to play. Something you don’t particularly customize, rather you master it. An instrument is a musical paradigm in itself.
What does all that high faluting stuff mean though? Well, it means that it can be limited, not endlessly accomodating. So, if I want vocal harmonizer functions, I can have a limited number of voices (I’m thinking of 4). Also, an instrument should have its own unique control system, and I think I’ve invented something a little bit weird but cool for this (for next blog post). Finally, an instrument should sound excellent, and define its own sound, not try to sound like something else. In this, I’m bending things a little, in that the sound is the human voice, but I want to stick to the following principle. This instrument is not for making a mediocre voice sound better. It is for taking a great voice further than the human voice could otherwise go. If being easy to use and sounding beautiful conflict, then beauty wins.
The short list of functions this instrument will have are:
- A vocal harmoniser, optimising for excellent sound (they should sound like a plausible, unaltered human voice).
- Harmonised voices might support gender changes and other timbral modifications, probably this will involve fun with formants.
- Voices can be delayed by a multiple of a player chosen fixed interval (think roughly a “bar”). This allows the player to sing in canon with themselves.
- Harmoniser functions and delay functions can be combined.
- May want support for just intonation or other non-even tempered tunings.
The devil will be in the details, but the core idea is combining a vocal harmoniser and a simple delay mechanism.
That’s all I’ve got the energy to write tonight. This will be continued.
Oh, the other important thing: I found the free software successor to Max/MSP, called Pd. Miller Puckette is a genius. It looks as though my first versions will be built in Pd.