Bowed String Additive Synth

About 12 years ago, someone told me that additive synthesis will never be practical. My initial reaction was, “we’ll see about that.” This person’s background was that of modular subtractive synths, and was quite knowledgeable. From that perspective, I could see their point. Who want’s to take the time to create complex envelopes for each individual harmonic? My mind has often wondered back to this incident.

Today, additive synths are becoming more common thanks to faster computers. Many of their UIs do help programmers with the large amounts of complexity additive brings to the table. And there are many useful and valid approaches, each with their own strengths and weaknesses.

Download: bowed_string.csd

My approach has been floating around my head on and off for about a decade. The first iteration was completed around 2002, and was shelved until recently. Today’s csd is a continuation of the second iteration of the design, which I had originally intended to use with Fragments (see here), but ran out of time. For the next couple of weeks, I plan on taking this instrument to its illogical conclusion (I have no idea what it’ll be like when it’s done.) When I am finished, I’ll write an in depth article for The Csound Journal on the final design.

The premise for my approach is to use f-tables as a shortcut for specifying and controlling additive synth data. In today’s example, the audio generator produces a 32 band-limited sawtooth wave. However, before the sine waves are generated with oscil, the synth data is run through two transfer functions, stored as f-tables. One transfer function changes the amplitudes of the harmonics, emulating the EQ of a virtual acoustic body. The other bends the frequencies, causing frequency distortions. Frequencies continue to be processed by the transfer functions, even as they are modulated, which I believe is key to convincing acoustic viability.

The reason why this sounds similar to a bowed stringed instrument is because the amplitude transfer function is filled with the right amount of bipolar noise. The truth is, I had no intention of creating a string-like sound. I was just toying with it and thought I’d try something drastic like using a table filled with noise. After the discovery, I spent considerable time tweaking the values trying to get it to sound a little bit more expressive.

I should warn you, there are some clear cases of aliasing occurring in today’s example. I think I know what’s causing it, but I’ll have to go back and run some tests to be certain. In the mean time, I hope you enjoy.

5 thoughts on “Bowed String Additive Synth

  1. I like the sound. I’ll want to take a look at the .csd and see if I can figure out what’s going on. Some of the vibrato was deeper than on a real cello, but some of it was very much in the right ballpark. Interesting work!

  2. Hi Jake, this is interesting to me for two reasons.  First, I’ve always suspected that really interesting, acoustically viable things could be done with additive synthesis.  Second,I’ve always hoped that someone would undertake a companion to ‘Cooking with Csound’ that dealt with the stringed instruments of the orchestra.  Perhaps you’d consider going farther along with your ideas with this as an eventual goal?

  3. Jim: Yeah, I went a little overboard on that vibrato. :)

    Robert: I’m actually fiddling, no pun intended, with the bowed instrument right now, trying to get it to sound more authentic. While I’m unsure virtual string instruments will be a personal long term goal of mine, I will be developing some of these ideas at least in the short term and presenting them here and in the Csound Journal. I’ll know more once I get more of this additive synth built.

  4. Pingback: The Csound Blog » Additive Synth Upgrade

  5. Pingback: The Csound Blog » Graph Layout Music