@stschoen suggested a sawtooth version so I replaced the sine output with a saw. With just a little bit of a tuning curve I find it quite effective at generating a rich ‘analogue’ sound with a minimum of fuss.
I also put together a micro version. Since having a visual representation of the curves is quite useful, especially when getting to know the module, I’ve kept the meters on the inside of the module. Open it up for a quick reference peek.
Since making some modfications to STS’ Harmonium last week, I’ve been experimenting with ways in which to slightly stretch the pure ratios of the harmonic frequencies, and listening to the timbral changes that result. Fortunately STS and Robert Syrett had already put together a Tiltatron that provided a good starting point for making adustments to the 16 values with a minimum of controls.
By reducing the range of some of the Tiltatron controls, fixing others, and adding a further offset control I manged to set up a controller that could give me the various ‘spread’ shapes I was after with just two parameters – the ‘shape’ control adjusts the intensity and direction of the curves, and the pivot point makes it possible to select a fixed harmonic around which the shape can fold. For example, a fixed root with gradualy increasing deviations as the harmonics increase, or vice versa. Or a central harmonic as a fixed point with deviations (up or down) towards the higher and lower frequencies.
I’ve posted a tryout patch on the Audulus forum. Rather than automating the spread and pivot I’ve left them standing for manual interaction. The option to invert the values for the even/odd harmonics can lead to some nice bell like tones, and the ‘scan’ row of controls on the Tiltatron provides a nice way of highlighting specific harmonics.
A next step could be to strip it all down and put together a compact module with only four controls. A shape and pivot for adjusting the frequencies of the harmonics, and a shape and pivot for adjusting their intensity.
A few days ago I started experimenting with using Mark Boyd’s 1D Chaos Module to generate small pitch fluctuations. However, since Audulus very conveniently takes care of polyphony behind the scenes, I realized that fluctuations applied to a held chord, for example, would effect all the notes in parallel. I started experimenting a little with splitting the incoming notes into individual voices, each with their own pitch and amplitude fluctuations. There are still some things to figured out with the envelopes, but it’s a start – fun for creating sustained drone-like textures along the lines of the Hyve.
Following on yesterday’s thoughts on which models to use when introducing small pitch fluctuations with digital oscillators, I tried substituting the S&H in Mark Boyd’s Drifting Gateable Quantizer with his 1D Chaos module. I find the pitch fluctuations quite satisfying and more subtle than simply providing a micro-offset with a sample and hold value. Perhaps a little closer to the fluctuations one might find with a wind player than the slow drift of an analogue oscillator.
I’ve also been wondering about the stretching at the high and low extremes that occurs with analogue oscillators or when tuning a piano, for example. In the case of piano tuning that stretching makes sense in relation to equal temperament and the slightly inharmonic overtone structure of piano tones. With the relatively ‘pure’ starting point that is possible with digital oscillators, as well as the myriad of waveshaping and filtering possibilities that may follow, that kind of stretching doesn’t makes sense – unless one is deliberately setting out to imitate that kind of behaviour. There’s also the changing sensitivity of our ears at different parts of the frequency spectrum, but perhaps with digital oscillators a single kind of slightly chaotic fluctuation across the entire spectrum is the way to go.
Mark Boyd (biminiroad) recently teased a little strange attractor on Twitter – and presented it in full detail as part of the Audulus Tutorial Livestream on Chaos & 3D Modules. “A chaotic signal is not a random signal” as Rob Hordijk pointed out in his Leeds Rungler Demo. The tutorial goes on to explain how those chaotic signals can be used to trace paths through a 3D cube that can be applied to mixing, sequencing, and modulation.
It’s a wonderful tutorial covering a lot of material. For now I’m content to let some of the strange attractor chaos sink in – wondering how it might be applied as a modern approach to introducing slight fluctuations with digital oscillators, rather than simply modelling analogue drift.
I made some adjustments to Biminiroad’s Drift VCO with a reset as described in the Richard D. James interview: the oscillator is set back to its starting point when tones are no longer being generated. For frequencies above 1000Hz the LFO is reset, and for frequencies below that point the feedback loop is interrupted and fades back in when tones are generated again.
The drift cycle is around 50 seconds and it’s fun to hold a perfect fifth (e.g with middle C as the upper note) and listen to the beating increase and eventually reach a perfectly tuned interval before slowly starting to beat again. Due to the feedback loop the drift amount is slightly different for frequencies below 1000 Hz (see the explanation in a previous post) whereas the LFO rate is constant for the frequencies above that point. That means that at least for frequencies below the switching point one has the possibility of a slightly different drift for each note, without running into the complexities of post-quantizer bending.
Richard D. James on tuning and drift in his interview with Tatsuya Takahashi:
RDJ: …I guess some people like their Osc’s drifty and others not so. It changes with the context I guess. Also, if you’re doing FM you might want to keep them dead on, and for analogue lead sounds, really drifty. Anyway I think I mentioned it before, but the drift on the monologue sounds REALLY nice. It seems to move, but then never go out… Sounds to me like it gets reset/synced at some point…
TT: That’s bang on! So same thing in the minilogue and the volcas too: the oscillators are re-tuned when they’re not being used.
Mark Boyd (biminiroad) has posted a few patches on the Audulus forum exploring different approaches to simulating oscillator drift and detuning. His Drifting Gateable Quantizer doesn’t drift so much as introduce small pitch deviations that can be dialed in post-quantizer to get a pseudo micro-detuning effect. Simple (and light on CPU) but effective.
His Drift VCO takes a more complex approach: When the oscillator frequency is below 1000Hz, an adjustable amount of FM feedback (also scaled by the pitch) is sent to the oscillator’s input, and since the lower frequencies have more feedback, they are also more out of tune. Above 1000Hz (roughly two octaves above middle C) a slow sine LFO modulates the pitch in order to avoid FM noise. I’ve been taking a look at the patch and wondering how best to introduce something similar – a reset when there’s a pause in activity.
It’s interesting that now that we have the possibility of perfectly tuned oscillators we yearn for the beauty of slight imperfections. Certain of Jerobeam Fenderson’s visualizations in his oscilloscope tutorial come to mind – the spinning (around 5 mins into the video) introduced by an overtone having a slightly imperfect ratio, for example.
Looking through a (physical) folder dating back to my student days many, many years ago, I came across a 40 page printout of tuning systems.1 Some of the scales are expressed as ratios, others in cents. It seems quite comprehensive: Ancient Greek scales, Indian modes, Werckmeister, Rameau, lute and bagpipe tunings - even Xenakis’s Byzantine Liturgical modes. Wendy Carlos is in there too.
Here’s a scan of the printout. I ran a quick OCR on it so it should be searchable to some degree.
Unfortunately I can’t credit the person who put the list together – all I know is that I probably picked it up while taking some classes at the Akademie für Alte Musik while studying in Bremen in the late 90s. ↩
A few weeks ago I tried measuring the pitch deviations of the Analog tuning in the Korg ODYSSEi app using a little patch built in Audulus using the ZeroCross node. It turned out that those measurements were increasingly inaccurate as I progressed up the frequency range, and in the end I turned to another app to map the deviations. Puzzled at the time, I should have taken a closer look at the Audulus docs first, since they provide a thorough explanation of why accuracy decreases as the frequency increases.
The reason for this margin of error has to do with sample rate. At a sample rate of 44.1kHz (the default for Audulus in standalone mode), the ZeroCross node has 44,100 samples per second to evaluate the zero-crossings of a 1Hz wave, whereas it only has 4.41 samples per second to evalute the zero-crossings of a 10,000Hz wave.
Those sample rate considerations also have important implications when creating waveforms digitally. The docs provide, with copious examples, a thorough explanation of what is going on with the Osc and Phasor nodes. A fine, and it seems ever-evolving, resource.
I’ve now added an extra set of external inputs to my Audulus Scale Bender so that scales can easily be constructed using a few additional micro-modules. With three or four of the ratio micro-modules, for example, one already has a number of possibilities at hand, and they can also be stacked on top of each other – i.e. the result of one ratio can provide the base for the next. One can also provide a specific (c.v.) base value for a scale (or ratio) – if none is provided the micro-modules default to A = 440 Hz.
Looking at the video for the latest C.V. Toolkit update I was inspired to also include a micro-module for fraction based intervals. As a start I’ve only included one for the octave divided into seven equal parts, but that could easily be adapted for other fractions.
I’ve also included a quick demo with a Pythagorean scale as an example and, with Mozambican Timbila music in mind, one with the octave divided into seven equal parts.