Physical Models (bowed string)
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.
Here's one way of doing it;
BTW, your rig has a pitch scaling problem going on, hehe.
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.
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.
I would like to make the model explained in this article: https://ccrma.stanford.edu/~jos/BowedStrings/BowedStrings.pdf
+1 for that request Dave. I love reading Julius' papers but I just don't have the math to translate them into MaxMSP
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..
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.
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~.
--removed this double post--