Hallo, Michael Garrett hat gesagt: // Michael Garrett wrote:
Here is a link to the simple synth I am starting with. It simulates the sound of a PVC type xylophone. It adjusts the delay length based on the requested note.
It is this synth that got me thinking about pre-exiting the delay line in order to get low frequency sounds.
You synth sounds very nice! A little hint: You can use $0 in the name of delay lines instead of $1. That way you could get rid of the A, B, C, ... stuff that you use to differentiate between delays. As all your delays are in a seperate abstraction $0 will be unique.
Yeah, great resonator sound. It makes some nice basses in the lowest registers. You could optimise by using a [bp~] insetad of a [vcf~] in the waveguide, because you aren't moving the center frequency, and I think [block~ 1] is possibly overkill, you should get away with a much bigger blocksize, that makes the voices more CPU hungry.
Then I don't really understand why preloading the delay line should give better low frequency sounds. Is it, because with lower notes and thus longer delay times you will have to wait longer for the first result? Isn't that the same with a real double bass, which also has a certain inertia?
Yes, but that wouldn't be appropriate for a xylophone. I think it depends on the excitation mode and what instrument you're modelling whether to pass the excitation impulse directly through (or through a body formant), or only take it from the "cold" side of the delay where it's one period late. I think this is how you decide.. If it's a displacement that you're modelling, like plucking a bass string at the middle (antinode) then yes you want to have the delay, that's the time until you really hear anything from the moment the pick is released, the time to propagate along the string. But for struck instruments, the hammer excites the whole thing locally, and the waves spread out and travel back and forth until they fall into phase with the waveguide (delay), (Karplus-Strong), and then you want to hear the delay contents as quickly as you can, so you want the buffer to be preloaded with an image of the impulse.
Are you doing that here? How do you do it, I cant see it? Is that why you set the blocksize so low?
a.
You have some minor bugs in your patch: First the [poly] number "4" is too small to get all possible polyphony. You could raise it to 8. Then you should check the triggering in pcv_synth_001.pd: You have to make sure, that the [1000( gets sent to the [/ ] after the [mtof] was send there. This isn't sure in your patch. Attached is a version with a fix that involves creating an additional outlet for the trigger-object.
Ciao
Frank Barknecht _ ______footils.org_ __goto10.org__
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Hallo,
(the early bird...)
padawan12@obiwannabe.co.uk hat gesagt: // padawan12@obiwannabe.co.uk wrote:
Yes, but that wouldn't be appropriate for a xylophone. I think it depends on the excitation mode and what instrument you're modelling whether to pass the excitation impulse directly through (or through a body formant), or only take it from the "cold" side of the delay where it's one period late. I think this is how you decide.. If it's a displacement that you're modelling, like plucking a bass string at the middle (antinode) then yes you want to have the delay, that's the time until you really hear anything from the moment the pick is released, the time to propagate along the string. But for struck instruments, the hammer excites the whole thing locally, and the waves spread out and travel back and forth until they fall into phase with the waveguide (delay), (Karplus-Strong), and then you want to hear the delay contents as quickly as you can, so you want the buffer to be preloaded with an image of the impulse.
Hm, I still don't quite get it: In the patch Michael already plays out the excitation pulse because his "pickup" is next to the [delwrite~] so everything that goes into the delay is played out, especially the first excitation. The second repetition of the (filtered) excitation will arrive after the first delay period, but doesn't it have to wait that long? Because if it would come any earlier you would have a tone with a different and *higher* frequency because basically you just set the delay period to be shorter for a short time. Or am I totally off-track?
Are you doing that here? How do you do it, I cant see it? Is that why you set the blocksize so low?
The blocksize is low because it specifies the lowest possible delay time, if you have a feedback delay and through that the highes possible frequency of the delay waveguide. See Miller's book, the chapters on recirculating and non-recirculating delay lines.
For a bass player the block size could be larger, though. ;)
Frank Barknecht _ ______footils.org_ __goto10.org__
On Fri, 8 Dec 2006 07:49:26 +0100 Frank Barknecht fbar@footils.org wrote:
Hallo,
(the early bird...)
padawan12@obiwannabe.co.uk hat gesagt: // padawan12@obiwannabe.co.uk wrote:
Yes, but that wouldn't be appropriate for a xylophone. I think it depends on the excitation mode and what instrument you're modelling whether to pass the excitation impulse directly through (or through a body formant), or only take it from the "cold" side of the delay where it's one period late. I think this is how you decide.. If it's a displacement that you're modelling, like plucking a bass string at the middle (antinode) then yes you want to have the delay, that's the time until you really hear anything from the moment the pick is released, the time to propagate along the string. But for struck instruments, the hammer excites the whole thing locally, and the waves spread out and travel back and forth until they fall into phase with the waveguide (delay), (Karplus-Strong), and then you want to hear the delay contents as quickly as you can, so you want the buffer to be preloaded with an image of the impulse.
Hm, I still don't quite get it: In the patch Michael already plays out the excitation pulse because his "pickup" is next to the [delwrite~] so everything that goes into the delay is played out, especially the first excitation. The second repetition of the (filtered) excitation will arrive after the first delay period, but doesn't it have to wait that long? Because if it would come any earlier you would have a tone with a different and *higher* frequency because basically you just set the delay period to be shorter for a short time. Or am I totally off-track?
I see it, in the waveguide, he sends the impulse straight through, so yes you always hear that click in the attack. I wonder. Is the optimal buffer size the size of the impulse table? Any difference in the first cycle is going to end up absorbed into the sound as a difference frequency I imagine. So, one would really want to resample the excitation so it fits properly into the first frame. If your delay is set to the right period and already preloaded from the table the problem is solved.
And I wonder, what's the pros and cons of using a symmetrical impulse seed (negative and positve) vs storing only a half cycle and fliping phases alternately?
It's good to discuss this, because the best implementation isn't obvious in Pd. Am I talking crap when I say that it would be nice to use arrays in a more flexible way?
Of course there is [dynwav~], which I haven't played with much. Has anyone done anything demonstrative with it like scanned synthesis or something?
Are you doing that here? How do you do it, I cant see it? Is that why you set the blocksize so low?
The blocksize is low because it specifies the lowest possible delay time, if you have a feedback delay and through that the highes possible frequency of the delay waveguide. See Miller's book, the chapters on recirculating and non-recirculating delay lines.
For a bass player the block size could be larger, though. ;)
Aha OK, Duh, I see. When using 64byte blocks I definitely lose accuracy for higher notes.For bass what works out good in my experience is a hybrid of a waveguide and waveshaper, where the delay buffer is used to create a signal that has all the right shape for a plucked string, but a meager amount of harmonics (so a very low frequency impulse of one cycle) and follow that up with a chebychev or other distortion to bring out the harmonics you want. It "exagerates" the harmonic movements that are already there in the first part.
A xylophone is a tougher one though. xylo == wood right? It's a more diffuse sound. I would think a good angle would be to introduce some lf noise into the delay modulation and get a more wooden collection of sidebands.
Ciao
Frank Barknecht _ ______footils.org_ __goto10.org__
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Thanks for all the great conversation!!!
First thing, now that I have done some research, I am getting KS, and Waveguide synthesis confused. What I have patched up is a Karplus Strong synth, that sounds like a PVC pipe... It is not really a waveguide synth in the true sense. The initial noise burst, which comes through, is desirable in this synth, since it represents the percussive hit of the pipe end.
One thing about pre loading the delay line, is getting the true sound of the recalculating line itself, without the noise pulse at the beginning. You can output the delayed signal, but it appears 20 msec or so 'late' for bass notes.
I picture it similar to pulling a bass string with your finger, you are adding energy to the string, but there is no sound from adding this energy. So the string, in cross section looks like a single cycle of a saw tooth. The pickup is located someplace on the string, and starts producing sound the instant the string is released, not 20 msec later, the timbre of the sound based on the energy stored by the finger being released.
What I am describing in the last paragraph is a true 'waveguide' implementation, with a pre load. (Covered under various patents etc.... as I discovered last night) otherwise known as a 'Physical Modeling Synth' very well described by Julius O. Smith et.al etc. etc....
Are there examples of 'Physical Modeling' PD synths???
mcg
-----Original Message----- From: pd-list-bounces@iem.at [mailto:pd-list-bounces@iem.at] On Behalf Of padawan12 Sent: Friday, December 08, 2006 5:08 PM To: Frank Barknecht Cc: pd-list@iem.at Subject: Re: [PD] Pre Loading a Delay Line
On Fri, 8 Dec 2006 07:49:26 +0100 Frank Barknecht fbar@footils.org wrote:
Hallo,
(the early bird...)
padawan12@obiwannabe.co.uk hat gesagt: // padawan12@obiwannabe.co.uk
wrote:
Yes, but that wouldn't be appropriate for a xylophone. I think it depends on the excitation mode and what instrument you're modelling whether to pass the excitation impulse directly through (or through a body formant), or only take it from the "cold" side of the delay where it's one period late. I think this is how you decide.. If it's a displacement that you're modelling, like plucking a bass string at the middle (antinode) then yes you want to have the delay, that's the time until you really hear anything from the moment the pick is released, the time to propagate along the string. But for struck instruments, the hammer excites the whole thing locally, and the waves spread out and travel back and forth until they fall into phase with the waveguide (delay), (Karplus-Strong), and then you want to hear the delay contents as quickly as you can, so you want the buffer to be preloaded with an image of the impulse.
Hm, I still don't quite get it: In the patch Michael already plays out the excitation pulse because his "pickup" is next to the [delwrite~] so everything that goes into the delay is played out, especially the first excitation. The second repetition of the (filtered) excitation will arrive after the first delay period, but doesn't it have to wait that long? Because if it would come any earlier you would have a tone with a different and *higher* frequency because basically you just set the delay period to be shorter for a short time. Or am I totally off-track?
I see it, in the waveguide, he sends the impulse straight through, so yes you always hear that click in the attack. I wonder. Is the optimal buffer size the size of the impulse table? Any difference in the first cycle is going to end up absorbed into the sound as a difference frequency I imagine. So, one would really want to resample the excitation so it fits properly into the first frame. If your delay is set to the right period and already preloaded from the table the problem is solved.
And I wonder, what's the pros and cons of using a symmetrical impulse seed (negative and positve) vs storing only a half cycle and fliping phases alternately?
It's good to discuss this, because the best implementation isn't obvious in Pd. Am I talking crap when I say that it would be nice to use arrays in a more flexible way?
Of course there is [dynwav~], which I haven't played with much. Has anyone done anything demonstrative with it like scanned synthesis or something?
Are you doing that here? How do you do it, I cant see it? Is that why you set the blocksize so low?
The blocksize is low because it specifies the lowest possible delay time, if you have a feedback delay and through that the highes possible frequency of the delay waveguide. See Miller's book, the chapters on recirculating and non-recirculating delay lines.
For a bass player the block size could be larger, though. ;)
Aha OK, Duh, I see. When using 64byte blocks I definitely lose accuracy for higher notes.For bass what works out good in my experience is a hybrid of a waveguide and waveshaper, where the delay buffer is used to create a signal that has all the right shape for a plucked string, but a meager amount of harmonics (so a very low frequency impulse of one cycle) and follow that up with a chebychev or other distortion to bring out the harmonics you want. It "exagerates" the harmonic movements that are already there in the first part.
A xylophone is a tougher one though. xylo == wood right? It's a more diffuse sound. I would think a good angle would be to introduce some lf noise into the delay modulation and get a more wooden collection of sidebands.
Ciao
Frank Barknecht _ ______footils.org_ __goto10.org__
PD-list@iem.at mailing list UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Hallo, Michael Garrett hat gesagt: // Michael Garrett wrote:
Thanks for all the great conversation!!!
First thing, now that I have done some research, I am getting KS, and Waveguide synthesis confused. What I have patched up is a Karplus Strong synth, that sounds like a PVC pipe... It is not really a waveguide synth in the true sense. The initial noise burst, which comes through, is desirable in this synth, since it represents the percussive hit of the pipe end.
One thing about pre loading the delay line, is getting the true sound of the recalculating line itself, without the noise pulse at the beginning. You can output the delayed signal, but it appears 20 msec or so 'late' for bass notes.
I picture it similar to pulling a bass string with your finger, you are adding energy to the string, but there is no sound from adding this energy. So the string, in cross section looks like a single cycle of a saw tooth. The pickup is located someplace on the string, and starts producing sound the instant the string is released, not 20 msec later, the timbre of the sound based on the energy stored by the finger being released.
But isn't it like this: Even there, the travelling wave will only be heard once it was reflected at the end of the string and reaches the pickup again. What you hear before that moment is the "impulse" created by letting go of the string.
As I see it, the only difference between the original impulse and the first delayed impulse that you hear from the [vd~] 20ms later is that the delayed impulse is filtered by the [vcf~]. You could filter the initial impulse at the pickup-[outlet~] in the same way if you want to.
Frank Barknecht _ ______footils.org_ __goto10.org__