[sdiy] Generating acyclic waveforms?

cheater cheater cheater00 at gmail.com
Sun Mar 21 17:58:56 CET 2010


Hi guys,
I was lately considering acyclic waveforms for use in music synthesis,
and I'm wondering about techniques of realizing them in synthesizers.

Acyclic waveforms are interesting for the purpose of making the sound
less static. An acyclic waveform will interact with nonlinearities in
such a manner that the timbre will change ever so slightly over time.
It is also good for making certain harmonic tricks easier or possible
at all: an acyclic waveform hides problems in pitch articulation; on
the other hand, something like a stretched-harmonic waveform could be
used to play music compatible with the piano.

Most people here know that in piano timbre the partials are sine waves
that are not spaced like in synth waveforms. That is, in the
synthesizer, if the note's fundamental frequency is F, then harmonics
will be at 1F, 2F, 3F, 4F etc. In a stretched-harmonic waveform, the
frequencies will for example be of the form 1sF, 2sF, 3sF, 4sF, and so
on, where s is the stretching factor. For s=1 we have the usual
harmonic series. For s which is not an integer and not a specially
chosen rational number, we have a probability of 100% of generating an
acyclic waveform. Of course, the spacing of harmonics in the piano is
more complex than that, but this is the first approximation.

Here's what researchers had to say about acyclic waveforms:

> Inharmonicity is not necessarily unpleasant. In 1962, research
> by Harvey Fletcher and his collaborators indicated that the spectral
> inharmonicity is important for tones to sound piano-like. They
> proposed that inharmonicity is responsible for the "warmth" property
> common to real piano tones.[2] According to their research
> synthesized piano tones sounded more natural when some
> inharmonicity was introduced.[3] In general, electronic instruments
> that duplicate acoustic instruments must duplicate both the
> inharmonicity and the resulting stretched tuning of the original
> instruments.
>
> 2. Acoustical Society of America - Large grand and small upright
> pianos by Alexander Galembo and Lola L. Cuddy]
> http://www.acoustics.org/press/134th/galembo.htm
> 3. Matti Karjalainen (1999). "Audibility of Inharmonicity in String
> Instrument Sounds, and Implications to Digital Sound Systems"
> http://www.acoustics.hut.fi/~hjarvela/publications/icmc99.pdf

(taken from http://en.wikipedia.org/wiki/Inharmonicity )

Of course we've since learnt better than to try and immitate the piano
timbre with synths. It's a stupid want and will never happen; if you
want a piano, buy a piano. But I think it is a very worthwhile
consideration which can be used to greatly enhance the timbre of
synthesizers, and can also make synthesizers musically compatible with
accoustic instruments which, in my opinion, differ most from what we
can timbrally do with synthesizers because of their stretched-harmonic
nature.

What are some ways of generating acyclic waveforms - either in
stretched-harmonic spectra, or just generally acyclic?

Of course, trivially enough, noise is an acyclic waveform. (Unless
you're using a certain 80s synth that I forgot the name of...)

Additive approaches are one way of doing this. Pros are that
absolutely everything can be controlled about the waveform. Cons are
that these approaches are computationally intensive, the functionality
difficult to expose to the user easily, and generally this is a
digital technique, which is not always desirable. Of course, doing an
additive engine that only transforms between waveforms (by using the
harmonic levels from cyclic oscillators, i.e.

One way of generating an acyclic waveform is - I think - taking a
usual oscillator core and adding a small amount of noise to the reset
comparator's reference voltage. This is only a theory, I haven't been
able to try it. What should happen is that the waveform will still
look like the normal waveform (for triangle and ramp), and the
segments will still be linear, but the peaks will happen either sooner
or later than they should. Think of it as something similar to hard
sync, except because of the balanced nature of noise statistically the
pitch doesn't change: this means that segments will be shorter or
longer (effectively being higher or lower in pitch), but as we measure
more and more cycles the oscillator is more and more in-tune. The pros
of this approach are that it could be easy to implement in most
existing designs; that it is well behaved enough to let people
understand it; that it animates the waveform while not really altering
it that much. The cons are that it does not go very far from where we
started out, leaving a lot of space for exploration via other
techniques. Of course, it does not generate stretched tuning.

One way to generate stretched tuning in the analogue domain is to use
a frequency shifter on a normal oscillator. I anticipate this is going
to be expensive to do and failure prone: the process might not be that
well behaved. However, I'm not sure what's involved in this. Are there
good precision frequency shifters that you guys could recommend? The
frequency would only need to be shifted by a few hz, much less than
one semitone. I will leave out the pros and cons for now because I
simply don't know much about frequency shifters, so I'll leave this up
to people more knowledgable like me.

Chorus and (large, as in more than 5) oscillator stacks are some more
or less valid way of making acyclic waveforms. In this approach - as I
understand it - the power of the harmonics of the oscillator(s) is
centered around the frequencies F, 2F, 3F, ... and the further we move
away from the exact frequency nF the less power there is in the
spectrum of the resultant waveform.

But the lingering question is: is there a way to generate an acyclic
waveform algorithmically in the digital domain without using additive
approaches, and more importantly, is it possible to create an
inherently acyclic oscillator in the analogue domain, without
resorting to secondary processing such as frequency shifting,
chorusing, or stacking?

And as a follow up question: is it possible to create an inherently
stretched-harmonic oscillator in analog? Is there a specialized
algorithm in digital that can do this? We are either talking about
something that generates waveforms with partials on frequencies n*a*F,
n*a^b*F, or some other thing similar to that.

Thanks
D.



More information about the Synth-diy mailing list