Golden Ratio Synthesis

I made a VST software instrument that uses the Golden Ratio to generate frequencies off a given note. You can download it here if you want to lash it into your music program and try it out. It’s unfinished though – more details below.

This didn’t come from any particular intention – it was a discovery I made while messing about in Synthedit many months ago. I was trying to make a normal additive synth where you mix the relative levels of each harmonic within a single note. But I found that if I took the frequency multipliers for the harmonics (which are normally just 1, 2, 3, 4 – so the second harmonic is twice the frequency of the first/root, the third is three times its frequency, fourth four times and so on) and raised them to a particular power around 0.6, a cool sound came out.

“Around 0.6” turned out to be 0.618034 – the “Conjugate Golden Ratio” (or one over the Golden Ratio).

Now it’s not possible to discover some “alternate harmonic series” because harmonics are a physical phenomenon: if you have a vibrating object with a fundamental frequency, whole-number multiples of that frequency can likely also form waves in it. So, each half of a guitar string vibrates one octave higher than the open string, and each third vibrates one fifth higher than that, and so on. Our sense of hearing subconsciously interprets the presence and tuning of harmonics as derived from physical properties: material and size and density. No other frequency series could have this same effect.

Nonetheless, the Golden Ratio seems more musical and harmonious than any other I could get by that exponentiating technique – actually it sounds like a jazzy chord. And it has what Gerhard Kubik calls “timbre-harmonic” aspects – like a Thelonious Monk chord, the harmony bleeds into the perceived timbre. My synth (on default settings) has a silky, bonky, dense timbre. (That territory between noise and harmony is where I like to be, musically. Check out the sounds I used for my drum programming experiment, for example.)

I could hear that it wasn’t in tune to equal tempered notes (nor to the non-equal tempered ratios found in the natural overtone series). But it was tuneful enough to sound concordant rather than discordant. If you download the synth and try the other ratios in the drop down menu you’ll hear the difference, I hope.

Here are the ratios: Golden Ratio conjugate on top, then normal harmonics, then the non-inverse Golden Ratio. You can see that the Golden Ratio conjugate results in a somewhat out of tune minor 11th chord – definitely jazzy! (The normal overtone series results in a dominant chord.)

Here are the ratios for exponents of: 1/Golden Ratio, 1, and the Golden Ratio

I whipped up some little riffs so you can hear the synth. It’s very digital-sounding, like additive synths generally are, and also reminiscent of the stacked, sometimes exotic overtones of FM synthesis at its icier end.

Note I didn’t sequence any chords in these – the “harmony” is from the voices of the synth. And there are no effects added.

I’ll evaluate the musical aspect at the end of this post. For now I want to discuss the synth-making software I used: Synthedit.

When I first started messing with production as a teen, the free synths I downloaded were mostly built in Synthedit. I soon got to know its characteristic signs – exuberant amateur graphics, slightly misplaced buttons and sliders due to the software’s drag-and-drop interface, and I guess a lack of quality. I remember one bass synth that was pitched way off A=440 – rank sloppiness. I used it anyway. The Flea, it was called.

Most freeware Synthedit VSTs were like that: knock-off bass synths or delay effects, easy and obvious stuff, frequently derided by snobs on forums.

Synthedit enabled a flood of low-quality, imitative software synths by lowering the barrier to entry. Instead of coding C++, you could (and can today) just drag and drop components, add in other people’s custom components, and instantly see/hear the result in your DAW interfacing with your MIDI gear and other FX.

I was blown away when I first did this a couple of days ago. I clicked export, set some easy options, and then couldn’t find the exported file. Irritated, I went back to REAPER, my production software – and there was my synth just sitting there! And it worked! And nothing crashed!

Having studied programming for the last year, I know how hard it is to make software like that. The default mode of enthusiast-made nerdy software is to fail aggressively until you figure out some subtle, annoying configuration stuff.

So, today’s post is a celebration of a great tool, very much like the one I did about Processing. Once again, I want to emphasise how great it is that people make such programming tools for beginners, where the hard and horrid configuration stuff is done for you.

This is priceless. It can change culture, like Synthedit changed bedroom production culture and marked my adolescence.

Amazingly, the program is developed by a single man called Jeff McClintock. He is active on the forum and from reading a few of his posts I get an impression of someone who takes any user’s difficulty as a sign to improve the program. I really admire that. And it shows in the robustness of the app (even the old free version I’m using).

To make a synth, you drag connections between “modules” that provide a tiny bit of functionality or logic. It’s like wiring up a modular synth. The downside is that, if you already know how to code, it’s a drag having to do repetitive fixes or changes that in a programming language could be handled with a single line. Also, when a module you want isn’t available, you are forced to make silly workarounds, download third party stuff or change your idea. In Java or Python you could just do it yourself.

All told, I enjoyed the experience of making Golden (so I have baptised my synth). The best part is having impressively reliable access to powerful, mainstream standards: MIDI and VST. That made it a lot more fun than my previous synth which took in melodies as comma separated values and outputted raw audio data. It was brilliant to have all the capabilities of my DAW – clock/tempo, MIDI sequencing, parameter automation – talking to my little baby.

The drag-and-drop interface builder is also great. Once again, amazingly, McClintock hides all the donkey work of making interfaces, the boilerplate code and updating and events. You just put the slider where you want it, then it works. The downsides are being locked into standard interface elements unless you want to go much more advanced. So, I wanted to have one envelope take the values from another at the flick of a switch, but I couldn’t. (I’m sure it can be done, but I couldn’t find it easily online. In general, the documentation for Synthedit is weak, and online tutorials scanty. I think that’s due to the narrow niche served – people nerdy enough to make synths, but not nerdy enough to code.)

Although I had a great time with Synthedit, I’d like to keep learning and do this work in a procedural or OOP language next time.

Let’s finish. Do I think this Golden Ratio thing has musical value? Yes, and I would like to use it soon in a hip hop beat or tracker music production. (It could also serve as root material for spectral composition, I strongly suspect.) Is my synth very good as is? No, the envelopes don’t work nicely for immediately consecutive notes (I should make it polyphonic to fix that) and I’m not happy with the use of….

Actually, I should quickly explain the synth’s features.

My beautiful interface, in resplendent “Default Blue”. I’m not even sure it’s possible to change skins without paying for the full version of Synthedit. Which is entirely fair – I got a lot out of this free version.

At the top are overall options: the choice of exponent, then various tuning knobs. “Exponent fine tuning” lets you alter the exponent, “Voice shift” is an interval cumulatively added to each voice, “Keyscaled flattening” is a hack-y tuning knob that applies more to higher notes. Use these to massage the microtonality into sitting better with other harmony/instruments.

Then there are two instances of the basic synth, as you can see, each with 8 voices you can mix. You can turn each one up or down with the little knob on its left end. You can also change its tone with the lowpass filter big knob.

The idea of the two synth engines in one was to be able to double voices at Golden Ratio intervals. Sorry if this only makes sense in my head, but I thought that these dank Golden Ratio sounds should be harmonised using their own kind of interval rather than standard fifths or thirds, so by selecting the interval in one synth instance’s drop-down box you can set it apart from the other by one of those intervals. Selecting “First overtone” with “Golden Ratio Conjugate” set in the Exponent menu will, therefore, displace the 8 voices of that synth instance upwards by a perfect fifth + 42 cents.

Finally, to create some simple motion within the sound, I use two ADSR envelopes for each engine and linearly interpolate between them. The bottom one directly affects the bottom voice, the top one the top voice (always voice 8 BTW – I wanted it to detect how many voices are in use but had to abandon it – one of those workarounds I was talking about) – and voices in between are blended between these two, unless you click the “Link Envelopes” switch in which case only the bottom envelope is used.

And each engine has an LFO which affects the exponent, and therefore has a greater effect on the higher voices.

… I can see why they say writing docs is hard! Hope you could withstand that raw brain dump.

As I was saying, this synth is rough, but hey I’ve seen rougher on KVR Audio so it’s a release.

I’ve been listening to SNES-era game soundtracks so I’m tempted to try make some dreamy, pretty melodies using Golden. I think it might also be good for some woozy house or hip hop.

If I was to develop the synth, the first thing to change would be the two envelopes idea – really it should be some more sophisticated morphing. I saw an additive synth where each voice had its own envelope but that’s too much clicking. Some intelligent system – interpolating but using a selection of curves rather than linear, or maybe something like setting percentages of each voice over time while overall amplitude is determined by a single envelope – would be nice.

It also badly needs some convenience stuff: overall volume and pitch, an octave select, polyphony.

I’m leaving Golden as a nice weekend project. I’ll come back when I have some chops in C++, I would think.

Well, thanks for reading if you made it this far. You get a “True Synth Nerd” badge! If you want to talk about the Golden Ratio or synths, get in touch 🙂 And don’t hesitate to try out the instrument.

A Bass Practice Setup in Reaper

A satisfying practice session can involve many subtasks. I’ve been using the music production program, Reaper, to conveniently manage some of these. In this post I’ll go through my setup. It’s a work in progress. Eventually, I want to have a friendly and supportive digital environment for my creative mind, something to help sustain the musical work I’m doing and minimise clicking around on the computer.

My setup uses one free VST plugin, some drum samples I found for free, three plugins that came with Reaper, the webcam software that was bundled with my (Dell, Windows) laptop, and Reaper itself. An unlimited licence to Reaper costs €60 for personal or small business use, that’s the only thing I paid for. Here’s what it looks like in action:

It took me a while to figure out the arrangement of screen space, so I’ll go through it bit by bit. The aim was to minimise mouse clicks and maximise time with my hands on my bass. This setup is what I leave running as I play.

  1. These are the basic track controls for the recording of my bass. Sometimes I use monitoring i.e. listening to the bass sound as it comes out of Reaper through my speakers, rather than my bass amp – but usually not. Using monitoring would allow use of effects, but there’s still perceptible latency (in the low two digits milliseconds) which I don’t like. I record everything and throw it out after. I keep my amp plugged into my soundcard all the time. I suspect this habit of recording everything may have led to some recent slight corruption errors on my hard drive, because recording involves constant drive access and I left it running for a few hours at a time more than once, by accident. So I put a recording time limit of 45 minutes in my default project options.
  2. My teacher in Amsterdam years ago, David de Marez Oyens, recommended using the waveform of recorded bass as a visual aid to check one’s playing, but I only realised how powerful it is recently. Seeing the waveform instantly gives information on note length and attack, timing and perhaps most of all dynamics. The consistency of my playing has improved from routinely having the waveform on the screen.
  3. The webcam image of my lovely self provides a check on my posture and particularly hand position (especially fretting hand wrist angle and finger curvature). As I’ve had health issues in the past from bad technique, this is a bit of a godsend.
  4. Reaper has a handy tap tempo function so I can click here to change the project tempo (i.e. if I want a slightly different metronome tempo).
  5. Assuming I pressed record at the start, this shows how long my practice session has lasted.
  6. Transport controls to start and stop recording, say if I’m listening back to myself or whatever. Eh, my point is that I don’t allow any of the other windows to cover this up.
  7. This is a cool little thing I discovered recently. You can “expose parameters”, or as I like to say “expose the knobs”, which means putting in a little dial in the track control which will control a parameter in one of the track’s FX plugins. In this case, this little dial controls what pattern my drum sequencer is on – here 0, which is an empty pattern and so plays nothing. But I can load up the sequencer with various patterns like a dance beat, claves, hip hop beat or whatever, and choose between them with this knob, without having to keep the sequencer window open.
  8. Track controls for the drums and metronome, if I need to adjust levels or whatever.
  9. I have lost probably about ten electronic tuners in my life. I just leave them behind routinely at gigs. So a digital solution is nice to have. Reaper’s standard “ReaTune” plugin works grand for bass once you turn up the window size to 100 milliseconds to allow for those big fat bass wavelengths.
  10. For drums and click I use the bundled plugin “JS: MIDI Sequencer Megababy” which is a nice piece of software. It takes a bit of learning as it uses a lot of keyboard shortcuts and some of its design choices aren’t immediately evident, but it’s great and minimises the clicks needed to input a rhythm (because you don‘t have to put in a new MIDI item). The controls could be easily used to manage polymetrically related click tempos (“okay put the metronome once every two and half bars of 4”).
  11. This purple horizontal bar is the click rhythm, in case I wanted to throw in a clave or something here. I could similarly display the current drum machine sequence, but it would take more screen space than this single bar, and also I don’t want my practising to be derailed by drum programming. For the same reason, I haven’t prioritised ease of adding or replacing drum samples – another rabbit hole.

To summarise, this setup lets me have the following functions available at all times as I play:
Tuner
Metronome
Drum machine with preset beats
Waveform visualisation
Video of myself

The plugins I use are:
JS: MIDI Sequencer Megababy (Cockos)
ReaTune (Cockos)
shortcircuit (Vember Audio) (a nice sampler)

Another function I haven’t tried yet would be putting in sound files to play along with (in full or looped). I used to use Audacity for this but it’d be easily done in Reaper.

The main downside from a user interface point of view is that each time after I change anything in Reaper or start recording, I have to click on the webcam software to open up that window again. Another thing is that changing tempo confuses things if done mid-recording and so necessitates a stop and a few clicks, although I could perhaps change some options to mitigate that.

Okay that’s it, I hope you enjoyed the tour. Feel free to comment about any software or configurations you use for practising!