Scanned Synthesis in Max Msp

fen's icon

Hi everyone,

I just was wondering whether anyone has successfully implemented scanned synthesis in max without using csound~ or scansynth~, and could offer some advice.
I'm aware of jobo's "Scanned Synthesizer" (listed in the c74 Projects page), and have put together a quick patch which I think approximates the technique. It uses the msd object to model a string which is then fed into an instance of multislider. From here, the data is streamed into buffer~ to create a dynamic wavetable which is then read by wave~. It works, but produces an irritating crackle (perhaps due to the rate at which the model is being updated). I was hoping that someone with more experience could share their thoughts on the underlying principle (it's limitations, better techniques etc). Any advice would be great.

Max Patch
Copy patch and select New From Clipboard in Max.

Anyway, here's the patch (and link to the msd external):

I'd be really interested to see other peoples experiments in this area.

Many Thanks

Fen

Roman Thilenius's icon

indeed it will always crackle when you read from a buffer which is permanently updated.

i dont see any way of doing this with standard externals, but i am curious if someone
has an idea.

-110

Anthony Palomba's icon

Hey this is pretty cool! I had to dig out msd from my archive
but sure enough it works. This could also be great as a generic modulator
for audio signals. Thanks for sharing Fen.

jprocto's icon

The Scanned Synth Pro VST/AU plugin (which I developed) always stores the last wavetable along with the current one and crossfades smoothly between them. I would have thought you could do this in Max/MSP without too much trouble. I haven't actually tried your patch yet and I'm assuming that you are not updating the wavetable at audio rate. I probably better check it out :)

fen's icon

Hi everyone, thanks for your input/comments.

jprocto, congratulations on 'Scanned Synth Pro' – I've been aware of it for a while and I'm looking forward to trying the demo. You've identified the main flaw, namely, that the physical model isn't being updated at audio rate. At present the msd object/buffer is being updated by a 5ms metro.
I've been working on a synth that can crossfade smoothly between static waveforms (using 2d.wave~), but I'm not sure yet how I'd implement this at the rates necessary in this case.

I'm still relatively new to max so any further advice would be great, but if I make any headway I'll post the improved version.

Thanks again.

razzkazz's icon
Max Patch
Copy patch and select New From Clipboard in Max.

This might be slightly off topic but I am also trying to figure a way to crossfade smoothly between static waveforms using 2d.wave~. Using an example given by Barry Threw in this thread https://cycling74.com/forums/morphing-waveforms I have implemented the following. There are some bugs with it that I can't figure out. You are also limited to a certain file length. Maybe it will be of some use.

FP's icon

does somebody can post a zipped version of scansynth~ object ? (I don't want to install stuffit on my computer...). thx a lot.

dtr's icon

Here you go. Great stuff.

Renewed interest in scanned sythesis hé? Got to do with this by any chance? ;) http://createdigitalmusic.com/2012/12/make-a-new-sound-scanned-synthesis-on-wablet-for-ipad-features-utterly-mad-meshes/

4715.scansynth.zip
zip
FP's icon

thx a lot. :-)