Scanned synthesis


#1

A versatile synthesis technique that hasn't been implemented very often. The Qu-Bit Scanned is the only commercial / hardware implementation around that I know. There are a few source codes online. But I'm not skilled enough to translate them directly to Axoloti.

Here is the original article: www.billverplank.com/ScannedSynthesis.PDF
It works as a combination of a wavetable and physical modelling of a spring-mass-damper system. The system has a number of connected mass points that oscillate when excited. The structural oscillation ideally occurs at a 'haptic rate'; a low frequency. The wavetable is then composed of a scan of the mass points at every moment (or at least at a certain update rate) and is played at note frequency. So you're essentially playing the wave shape of the mass-spring system which changes through time at the much lower, structural frequency. What you get is a dynamic and organic sounding oscillator.

So far I have a rudimentary implementation that works, but it's not very robust. Still very sensitive to the setting of the masses (m), springs between the masses (k), centering springs (c) and damping (d). With 'mesh' set to 7, there are 128 mass points on a string with fixed boundaries.

scanner.axp (5.6 KB)

To figure out and add:
- stability limits!
- adjustable update rate (in a way that will also save CPU)
- non-uniform mass and spring distribution (mentioned in the article that non-uniform settings really makes the sound more interesting, but also not implemented in the Qu-Bit module)
- different 'hammers' for excitation: pluck, sine, saw, random squares, ... and interpolation between them
- audio injection (envelope) for excitation
- different excitation methods: applied force, velocity, position release
- different mass point connection matrices and scanning sequences
- wavetable interpolation


#2

Another article on scanned synthesis:
https://researchportal.bath.ac.uk/files/641286/BoulangerSmaragdisffitch00.pdf

And implementation for Csound with source code:
http://www.csounds.com/scanned/

More code:
github.com/dmchristiansen/scanned_synthesis_oscillator
github.com/alltom/springy