Waveguide Synthesis Help


So I needed to take a break from building the Ratcheting Sequencer, and I decided to try building a waveguide synth.

Here’s what I have so far. It’s making sounds like it should, but I’m not exactly sure how to tune it. I must be missing something essential.

I’d post some resources about it, but you can just google “waveguide synthesis” - most of what I read I can’t understand, and I’m just basing it off block diagrams.

It’s a little like Karplus-Strong’s big brother. Excitation through filtered delay lines. You can do cool things like modelling drum heads and even rooms with 2 and 3d meshes. This is a 1D string model.

Basically you’re propogating a wave down a string, it hits a terminal and gets reflected back, hits the other side, gets reflected back, and on and on.

If I build exactly what’s in the block diagrams you find, I get white wires, so I added a kind of dampener towards the end (the level node).

The z-1 node is there to force the loop to run in single-sample mode.

This is a pseudo violin type sound.

Waveguide Confused v0.1.audulus (378.2 KB)


Waveguide synthesis is actually the synth engine for the mysteron from makenoise. I’m pretty use it is the basis for one of the MI rings mode, which is called “String with non-linearity/dispersion.

When I was making the update for the uKarplus-Strong module, I noticed that external feedback loops are difficult to tune at high frequencies when it comes to delays. Internal feedback works like it should according to the DSP tutorial but the external did not, and the z-1 didn’t remedy the issue.

z-1 seems to work for just about everything else, so I think it might be the delay. If Audlus 4 is going to have a sample node, that might be a better tool for this type of synthesis, since presumably the delay node isn’t going to get an update.


Waveguide Confused with added exciter options.audulus (454.1 KB)

I had fun messing around with enveloped and pitch tracked resonant noise for the feedback loop. Thought you might enjoy. Also, there is a connection missing between the time via and the bottom left delay block in the initial upload.