Author |
Message |
Chet
Joined: Nov 19, 2004 Posts: 231 Location: Lititz,PA,USA
Audio files: 7
G2 patch files: 35
|
Posted: Mon Sep 01, 2008 7:01 pm Post subject:
Violin physical modeling |
|
|
Hello,
I've been trying off and on for a few years to figure out how bowed string instruments work, so that I can build a physically modeled violin or cello using waveguides.
I've recently made two changes which have excited me and encouraged me to continue. The first was discovering that I was incorrectly modeling the string's impedance. Fixing that meant that I finally heard the initial scratchy sound that been eluding me. The second was deciding to model the wooden body resonances by using convolved impulses of real instruments. This meant that I no longer had to hand-build complicated filters.
Attached is short mp3 of the results, along with the experimental Reaktor ensemble used to create it. The ensemble is still a work in progress, but is mostly complete. The violin impulse used to model the body is also included, which I loaded into the SIR2 realtime convolution software.
Description: |
PM violin Reaktor ensemble. Also includes an impulse file from a Klotz violin. |
|
Download |
Filename: |
Serenade220.zip |
Filesize: |
1.83 MB |
Downloaded: |
2021 Time(s) |
Description: |
Sample mp3 file, convolved with the Klotz violin body impulse |
|
Download |
Filename: |
Serenade223-1.mp3 |
Filesize: |
632.01 KB |
Downloaded: |
2343 Time(s) |
|
|
Back to top
|
|
|
blue hell
Site Admin
Joined: Apr 03, 2004 Posts: 24075 Location: The Netherlands, Enschede
Audio files: 277
G2 patch files: 320
|
Posted: Mon Sep 08, 2008 1:18 pm Post subject:
|
|
|
Sounds good Chet!
( too bad you switched to Reaktor ) _________________ Jan
also .. could someone please turn down the thermostat a bit.
|
|
Back to top
|
|
|
ian-s
Joined: Apr 01, 2004 Posts: 2669 Location: Auckland, New Zealand
Audio files: 42
G2 patch files: 626
|
Posted: Mon Sep 08, 2008 2:27 pm Post subject:
|
|
|
Blue Hell wrote: | Sounds good Chet!
( too bad you switched to Reaktor ) |
2nded
Any chance of a screen shot of the guts? |
|
Back to top
|
|
|
Chet
Joined: Nov 19, 2004 Posts: 231 Location: Lititz,PA,USA
Audio files: 7
G2 patch files: 35
|
Posted: Mon Sep 08, 2008 6:59 pm Post subject:
|
|
|
Sure. Here's most of the model itself. Very little is actually changed from the G2 patches I posted.
The main changes are:
1. The bow driver shape has hysteresis, which makes for a stickier bow. This wasn't possible on the G2.
2. There's an 'obstruction', which can model a finger lightly held on the string, or the string hitting the fretboard. I did this on the G2, also, on a slap bass patch.
3. The feedback path from the string back to the bow is no longer divided by two. This turned out to be really important, and creates the initial scraping sound that I had been searching for.
4. Torsional waves are modeled. The effect is subtle, but noticeable.
Unfortunately, I hit some architectural limitations when trying to do this on the G2. I ran out of DSP and inter-slot cables, and the shape of the bow driver couldn't be accurately modeled. It was a bummer, because the G2 patches much faster than Reaktor, imo.
Description: |
|
Filesize: |
12.91 KB |
Viewed: |
1082 Time(s) |
This image has been reduced to fit the page. Click on it to enlarge. |
|
Description: |
|
Filesize: |
53.93 KB |
Viewed: |
1156 Time(s) |
This image has been reduced to fit the page. Click on it to enlarge. |
|
Description: |
|
Filesize: |
24.68 KB |
Viewed: |
1080 Time(s) |
This image has been reduced to fit the page. Click on it to enlarge. |
|
Description: |
|
Filesize: |
21.93 KB |
Viewed: |
1140 Time(s) |
This image has been reduced to fit the page. Click on it to enlarge. |
|
Description: |
|
Filesize: |
25.07 KB |
Viewed: |
1178 Time(s) |
This image has been reduced to fit the page. Click on it to enlarge. |
|
|
|
Back to top
|
|
|
Chet
Joined: Nov 19, 2004 Posts: 231 Location: Lititz,PA,USA
Audio files: 7
G2 patch files: 35
|
Posted: Mon Sep 08, 2008 7:02 pm Post subject:
|
|
|
Some pictures didn't make it.
Description: |
|
Filesize: |
27.28 KB |
Viewed: |
1039 Time(s) |
This image has been reduced to fit the page. Click on it to enlarge. |
|
Description: |
|
Filesize: |
147.67 KB |
Viewed: |
1202 Time(s) |
This image has been reduced to fit the page. Click on it to enlarge. |
|
|
|
Back to top
|
|
|
ehdyn
Joined: Sep 13, 2007 Posts: 33 Location: Caerdydd, Palau
|
Posted: Tue May 19, 2009 12:36 am Post subject:
|
|
|
Wah, that is some sick Core patching. How are you doing this?
How do you model torsional waves in Reaktor?
How...
This is ridiculous - Head asplodes... |
|
Back to top
|
|
|
Inventor
Stream Operator
Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Tue May 19, 2009 2:05 am Post subject:
|
|
|
Very nice, great job! _________________ "Let's make noise for peace." - Kijjaz |
|
Back to top
|
|
|
Chet
Joined: Nov 19, 2004 Posts: 231 Location: Lititz,PA,USA
Audio files: 7
G2 patch files: 35
|
Posted: Tue May 19, 2009 4:46 am Post subject:
|
|
|
ehdyn wrote: | Wah, that is some sick Core patching. How are you doing this?
How do you model torsional waves in Reaktor?
How...
This is ridiculous - Head asplodes... |
Thanks! Yeah, it's grown pretty complicated.
The design for the torsional waves was taken from some publications by Drs. Stefania Serafin and Knut Guettler. Even then, I couldn't get it to work properly until I found some C++ code for Dr. Serafin's 'strad' model and saw what was actually going on. I'll find their links and post them later today. |
|
Back to top
|
|
|
Chet
Joined: Nov 19, 2004 Posts: 231 Location: Lititz,PA,USA
Audio files: 7
G2 patch files: 35
|
|
Back to top
|
|
|
ehdyn
Joined: Sep 13, 2007 Posts: 33 Location: Caerdydd, Palau
|
Posted: Wed May 20, 2009 12:40 pm Post subject:
|
|
|
Hi Chet,
Tried diving into your patch last night but my snorkels not going to cut it. Keeps going on and on.
Do you sketch out your ideas on paper first?
You're so specific about what phenomena are being modelled and how it should be organized.
Not sure how you're translating such clear ideas into DSP with 0 fat.
Thanks very much for the paper,
Chester |
|
Back to top
|
|
|
Chet
Joined: Nov 19, 2004 Posts: 231 Location: Lititz,PA,USA
Audio files: 7
G2 patch files: 35
|
Posted: Thu May 21, 2009 10:01 am Post subject:
|
|
|
You're welcome for the paper.
I do a lot of sketching on paper. I find I can scribble a lot faster than I can patch. I've been experimenting with that particular model for more than five years. It began as a pretty simple one, and has grown ever more complicated over time.
I still haven't added some of the features Dr. Serafin wrote about such as string stiffness and variable bow width. I've experimented with both, but couldn't get either one to work. |
|
Back to top
|
|
|
"Minks"
Joined: Aug 05, 2009 Posts: 6 Location: UK
|
Posted: Sun Aug 09, 2009 12:59 pm Post subject:
|
|
|
That's intense. I wish I had v5 so I could have a go!
I made an implementation of the Karplus-Strong algorithm (for simulating plucked strings by sending an impulse of noise into a delay line of period x).
It worked well enough but it didn't quite sound in tune though. I think the delay line time was quantised to a sample boundary (even though the tooltip claims it interpolates when the time is not an integer multiple of a sample). _________________ http://www.myspace.com/abattleshipcalledquotminksquot |
|
Back to top
|
|
|
Chet
Joined: Nov 19, 2004 Posts: 231 Location: Lititz,PA,USA
Audio files: 7
G2 patch files: 35
|
Posted: Sun Aug 09, 2009 1:46 pm Post subject:
|
|
|
"Minks" wrote: | That's intense. I wish I had v5 so I could have a go!
I made an implementation of the Karplus-Strong algorithm (for simulating plucked strings by sending an impulse of noise into a delay line of period x).
It worked well enough but it didn't quite sound in tune though. I think the delay line time was quantised to a sample boundary (even though the tooltip claims it interpolates when the time is not an integer multiple of a sample). |
Thanks!
Yeah, waveguide-based models are almost always inherently out of tune. This is typically due to three reasons:
* The delay line isn't interpolated.
* The termination lowpass filter adds phase delay.
* The modules aren't executed in the desired, order, adding a sample here and there.
All of these things can be compensated for by shortening the delay line slightly. The Steampipe ensemble has a single knob that does this, which works pretty well. I tend to be a little more precise and make a separate adjustment at each octave, or even at each 1/2 or 1/4 octave. |
|
Back to top
|
|
|
Chet
Joined: Nov 19, 2004 Posts: 231 Location: Lititz,PA,USA
Audio files: 7
G2 patch files: 35
|
Posted: Sat Sep 12, 2009 3:59 pm Post subject:
|
|
|
I periodically return to this project. Attached is a physically modeled cello created in Reaktor, along with a short mp3 of it.
Description: |
Reaktor ensemble of a bowed string physical model. Also includes an impulse file that represents the body of a cello. Convolve the snapshot named "Flat Cello" through the impulse file. For best results run at 96 kHz. |
|
Download |
Filename: |
Serenade294.zip |
Filesize: |
2.13 MB |
Downloaded: |
1080 Time(s) |
Description: |
A short mp3 of the bowed string physical model, using the 'Flat Cello' snapshot and convolving the result with the cello impulse file. |
|
Download |
Filename: |
Serenade294-1.mp3 |
Filesize: |
861.56 KB |
Downloaded: |
1654 Time(s) |
|
|
Back to top
|
|
|
Chet
Joined: Nov 19, 2004 Posts: 231 Location: Lititz,PA,USA
Audio files: 7
G2 patch files: 35
|
Posted: Sat Sep 19, 2009 6:23 pm Post subject:
|
|
|
Here are a set of PM strings performing the fugue at the beginning of G. F. Handel's Messiah.
Being a MIDI sequence I grabbed off the web, it's without expression and robotic. It also has awful trills that I didn't bother to remove.
Attached is the Reaktor ensemble used to create the song, and the impulses used to model the wooden body resonances.
Description: |
String quintet fugue from G. F. Handel's Messiah, performed by physically modeled strings. |
|
Download |
Filename: |
HandelQuintet.mp3 |
Filesize: |
4.75 MB |
Downloaded: |
1768 Time(s) |
Description: |
Reaktor ensemble for physically modeled strings, along with wooden body responses for violin, viola, and cello. |
|
Download |
Filename: |
Serenade298.zip |
Filesize: |
2 MB |
Downloaded: |
1088 Time(s) |
|
|
Back to top
|
|
|
martin1981
Joined: Nov 14, 2008 Posts: 11 Location: UK
|
Posted: Mon Dec 28, 2009 1:04 pm Post subject:
|
|
|
Hello,
I've only just seen these examples, I'm really impressed with how you've managed to capture the woody resonance of the violin and cello through a synth!
I'm working on getting a good tone out of my electric cello, and have spent a long time trying out different mics/positions/preamps etc. I'm really happy with the tone, however as it's basically a "plank of wood with strings", what I am missing is exactly the woody resonance that you seem to have captured perfectly here.
I'm sure this is very basic indeed, but I have literally only just installed Reaktor and have never used it before in my life. So please bear with me for the moment! I understand your ensemble is mainly to be used as a synth. However what I want to do is use just the convolution effect of the body resonance on electric cello recordings I already have. So use only that part of your ensemble as a processor. Is this easy to do?
I don't really know what I'm doing at all at the moment, currently I've loaded up the ensemble from within Logic, and inserted it on my track. However I assume this is not working because it is set up as a synth. I guess I may need to use Reaktor in standalone instead, and tweak the ensemble? Sorry, I'm completely new to this! I will probably work it out eventually, as I plan to spend the next few days mucking around with Reaktor, but any advice you could give me would be great. Thanks! |
|
Back to top
|
|
|
Chet
Joined: Nov 19, 2004 Posts: 231 Location: Lititz,PA,USA
Audio files: 7
G2 patch files: 35
|
Posted: Mon Dec 28, 2009 8:33 pm Post subject:
|
|
|
Martin, what you need isn’t Reaktor, but convolution software.
While Serenade’s string is created in Reaktor, the sound it makes is somewhat like your electric cello: it contains no resonances. Passing the signal through a special filter called a convolver creates those resonances. I use a separate real-time convolver called SIR2, because Reaktor doesn’t include a convolver.
Convolvers are typically used to add reverb to tracks. Suppose you want your track to sound like it was played in Carnegie Hall. What you can do is go there, record the sound of a balloon popping in the hall, load that sound into the convolver, and then play your track through the convolver. The track will then sound like it’s being played in the hall. It sounds weird, but it works.
I did the same thing with the Serenade tracks. I have the sound of a cello’s bridge being struck by a small object. I then loaded that sound into the convolver, and when I played the synthetic sound through it, it sounded like the string was being played through the body of the cello.
What you need is:
1. Real-time convolution software. I use SIR2, which can be found at http://www.knufinke.de/sir/sir2.html It’s not free, but a free demo can be downloaded so you can experiment. The demo adds annoying "dings".
2. The sound of a cello’s bridge being struck. The serenade298.zip file includes one named CALCANI_7k_cello.wav.
3. A VST host, because SIR2 is a VST plugin only.
Then do this:
1. Connect up your VST software and verify that you can play your cello through your computer.
2. Load SIR2 into your VST host.
3. Load the impulse file into SIR2.
4. Play. Begin with 100% wet.
You’ll probably want to mess with SIR2's multi-band equalizer to tailor the sound.
Some added bonuses are that you may be able to make your instrument sound violin-like or viola-like by using the violin and viola impulses in the zip file. Also, SIR2 lets you transpose your impulse file up or down, making your “cello body” smaller or larger.
This is all pretty technical, so feel free to pepper me with questions. I find this stuff fun.
EDIT: I just had an idea. If you post an audio track of your cello, I'll convolve it and send it back for you to listen to. Also include a couple of sustained notes with vibrato at various pitches so I can try to equalize the output to some cello reference samples I have. Give me a day or so for turnaround. |
|
Back to top
|
|
|
martin1981
Joined: Nov 14, 2008 Posts: 11 Location: UK
|
Posted: Tue Dec 29, 2009 12:38 pm Post subject:
|
|
|
Hi there, thanks for the quick and detailed response, you are amazing! Thanks for taking such an interest in what I'm trying to do.
It probably didn't sound like it from my previous post, but I'm familiar with the concept of convolution, but have never used any standalone software to perform it (only convolution reverb plugins, I used Soundhack before but a long time ago). I assumed the convolution was part of the Reaktor ensemble. Can Reaktor not do convolution at all then? That surprises me a little bit... I guess it's just easier with standalone software?
Your suggestion sounds great, if you're sure you can take the time and are interested enough to do this. I haven't had a chance to do any recording today, but will do tomorrow. Will prob PM you rather than put each stage of the process on the forum, then maybe post final results or whatever, we'll see. Thanks again! |
|
Back to top
|
|
|
Chet
Joined: Nov 19, 2004 Posts: 231 Location: Lititz,PA,USA
Audio files: 7
G2 patch files: 35
|
Posted: Tue Dec 29, 2009 5:23 pm Post subject:
|
|
|
Reaktor can't do convolution at all. Zip, zero, nada. There are a lot of folks on the NI forum asking that the next version of Reaktor include convolution. My fingers are crossed. If it does, I'll clean up Serenade and post it in the Reaktor User Library.
Regarding convolution and your cello, I have a lot of interest in this. I'd like to see how successfully convolution can turn an electric instrument into an "acoustic" one. It'll be fun.
I'd like to ask for the following:
1. Some sustained tones with vibrato, about 4 or 5 seconds long. The lowest one being a low C# or D, and then the higher ones spaced apart in pitch by about a 4th or 5th. I'll use these to help me EQ the impulse until the tones resemble some cello samples I have. If you include higher pitches I'll experiment with the viola and violin impulses, too.
2. A few tunes. I'll play them through the EQ'd convolver and we'll find out how convincing the results are. |
|
Back to top
|
|
|
BobTheDog
Joined: Feb 28, 2005 Posts: 4044 Location: England
Audio files: 32
G2 patch files: 15
|
Posted: Tue Jan 05, 2010 8:41 am Post subject:
|
|
|
Hi Chet,
is convolution not possible using Core then?
Cheers
Andy |
|
Back to top
|
|
|
Chet
Joined: Nov 19, 2004 Posts: 231 Location: Lititz,PA,USA
Audio files: 7
G2 patch files: 35
|
Posted: Tue Jan 05, 2010 10:20 am Post subject:
|
|
|
I won't go as far as say it's not possible. But it's not available. There are some FFT tools available for those who know how to use them, but I don't think they support the impulse lengths needed to model musical instrument bodies. |
|
Back to top
|
|
|
Chet
Joined: Nov 19, 2004 Posts: 231 Location: Lititz,PA,USA
Audio files: 7
G2 patch files: 35
|
Posted: Mon Jan 25, 2010 8:37 pm Post subject:
|
|
|
Here’s a Reaktor physical modeling ensemble that does gesture-controlled synthesis of a violin. It is “bowed” by moving the pitch wheel back and forth.
The physical model requires two variables: bow velocity, which is the speed that the bow is drawn across a string, and bow force, which is the contact pressure the bow places on the string as it is drawn.
As a violin is played by pressing the bow onto a string and moving it back and forth, the ensemble is played by pressing a key and moving the pitch wheel back and forth.
Press a key to make contact between the bow and the string. Then move the pitch wheel back and forth to simulate bow velocity. Upwards is positive velocity while downwards is negative velocity. Lift the key while the wheel is off-center to make the string ring.
If a pitch wheel isn’t available, the on-screen slider can be “bowed” by dragging it with the mouse.
The output of the ensemble must be convolved with a wooden body impulse. A violin impulse is included in the zip file. Use real-time convolution software such as SIR2 and set the output to 100% wet.
For proper tuning and high-quality sound, a sample rate of 96k must be used.
Description: |
Picture of gesture-controlled violin synthesizer. |
|
Filesize: |
106.9 KB |
Viewed: |
756 Time(s) |
This image has been reduced to fit the page. Click on it to enlarge. |
|
Description: |
Reaktor ensemble that is a gesture-controlled physical model of a violin. |
|
Download |
Filename: |
Serenade318.zip |
Filesize: |
2.84 MB |
Downloaded: |
1382 Time(s) |
|
|
Back to top
|
|
|
BobTheDog
Joined: Feb 28, 2005 Posts: 4044 Location: England
Audio files: 32
G2 patch files: 15
|
Posted: Tue Jan 26, 2010 1:09 am Post subject:
|
|
|
Nice one Chet, looking forward to having a play....
Andy |
|
Back to top
|
|
|
Chet
Joined: Nov 19, 2004 Posts: 231 Location: Lititz,PA,USA
Audio files: 7
G2 patch files: 35
|
Posted: Tue Jan 18, 2011 11:01 am Post subject:
|
|
|
Here's an updated ensemble that synthesizes a violin or cello. It's a physical model that's controlled using gesture.
As a violin is played by pressing the bow against the string and then moving the bow back and forth, Serenade is played by pressing down a key and moving the bow fader control or modulation wheel back and forth.
The zip file includes the ensemble and two impulse files (a violin and a cello) that the output must be convolved with (100% wet).
Also attached is an mp3 file of a short violin and cello duet, played with the ensemble.
Description: |
|
Filesize: |
180.72 KB |
Viewed: |
732 Time(s) |
This image has been reduced to fit the page. Click on it to enlarge. |
|
Description: |
Physically modeled violin and cello, playing a Bach minuet. |
|
Download |
Filename: |
BachMinuetIII.mp3 |
Filesize: |
1.89 MB |
Downloaded: |
1626 Time(s) |
Description: |
Physically modeled gesture-controlled violin and cello. Accompanied by two impulse files for convolving with. |
|
Download |
Filename: |
Serenade427.zip |
Filesize: |
1.45 MB |
Downloaded: |
1183 Time(s) |
|
|
Back to top
|
|
|
Aum Generator
Joined: Aug 15, 2011 Posts: 11 Location: Bratislava
|
Posted: Mon Aug 29, 2011 7:31 am Post subject:
|
|
|
wow, it sounds really good
thanks for sharing! |
|
Back to top
|
|
|
|