Physical Models (bowed string)

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

I've been trying to create a physical model of a bowed string. So far I've experimented with a plucked string instead. That model looks like this:

Does anyone know how to change the excitation source to a bow instead of a pick? The articles I have found are way over my head. I've studied some Reaktor patches, but can't translate them to MSP.

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

Here's one way of doing it;

BTW, your rig has a pitch scaling problem going on, hehe.

Dave Mollen's icon

I know. I didn't bother to look at the tuning yet. Is it happening because the filter introduces one sample delay? Or has it got to do with the rounding of delay times in [tapout~]? Or both.

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

Anyway your solution is pretty straight-forward. I came across the same solution on the internet aswell. The one I found is a bit more fine tuned though.

But I believe there are way more convincing models out there. They are based on more math, taking the velocity and force of the bow as input. I'm just wondering if there are some examples in Max.

Dave Mollen's icon

I would like to make the model explained in this article: https://ccrma.stanford.edu/~jos/BowedStrings/BowedStrings.pdf

brendan mccloskey's icon

+1 for that request Dave. I love reading Julius' papers but I just don't have the math to translate them into MaxMSP

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

Here's my first shot at Julius' described model. I think it isn't what's supposed to happen. But I do think this is the basic mechanism. I suppose you can get more pleasant results when you know the function for the lookup table. And when you know how to vary the lookup table. Julius describes that the lookup table changes when you change the applied force.

Maybe someone can look at the patch..

Dave Mollen's icon

I've been fiddling around with this lately. This model works pretty well, especially when you use your mouse as a controller. It's based on research by Julius O. Smith. And I ripped some parts of the patch from the Synthesis ToolKit in C++ of Perry R. Cook & Gary P. Scavone.

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

To get the patch to work make sure you set the signal vector size to 1 sample. Otherwise, the tuning will be off. I could have wrapped a part of the patch into a poly~ to set the vector size to 1, but I didn't do that just yet. I also know gen~ is better for this kind of application. But I don't own gen~.

Dave Mollen's icon

--removed this double post--