Hello lllist,
I am still pretty new at FFT things but I am having a lot of fun. I know Tom Erbe's soundhack has something called a "spectral gate" so I thought I'd give it a shot and try to make my own in Pd after reading about it. Doesn't sound all that great, it actually ends up sounding like a really low quality wma file or something :)
Is this technically a spectral gate? I'm using [>~] from zexy which in my mind says, "Look at all of the frequencies in the block and only allow those which are above value x to pass through." I've attached the patch here - any info or guidance is much appreciated. Any sound that goes through it pretty much loses all definition and clarity - is there a fix for this?
Kevin
yeah i think you're distorting the daylights out of it. have a look at the help patch i03-resynthesis. it shows how to divide the signal so it doesn't max out crazily.
on this topic, i would really love to know about more experiments and creations with fft usage. i have found that the sounds that are available with Max/Msp patches and the magnitude of VST plugins tend to have an amazing depth to the sounds and processing capabilities. alsa, i am committed to linux and bost these things are so out of reach. pd seems to have all the theory and capability to do the impressive fft audio processing but i find really nice examples difficult to find. i tend to get base level examples of what you have described.(wma files :).
thanks
On 2/20/07, hard off hard.off@gmail.com wrote:
yeah i think you're distorting the daylights out of it. have a look at the help patch i03-resynthesis. it shows how to divide the signal so it doesn't max out crazily.
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
reach. pd seems to have all the theory and capability to do the impressive fft audio processing but i find really nice examples difficult to find. i tend to get base level examples of what you have described.(wma files :).
Check out the phase vocoder examples in the audioexamples, a use- and beautiful (imho) realworld application of FFT, changing pitch and speed of samples independently.
Another application is a way of convolution for 2 signals by multiplying the spectra.
Cheers,
Malte Steiner media art + development -www.block4.com-
I wish there was an "fft for dumbies" ... or, I guess, some kind of fft "black boxes" to play with, where you don't need to understand the math. Frank's recent post completely lost me, though given a bit of study I can probably decode it.
But, for instance, in Reaktor or Plogue Bidule, you can move stuff into fft, mess with it, and resynthesize, without having any idea what the hell the math is. In comparison, I really couldn't understand the PD fft examples at all, it's just been too many years since I had a math class. I hope to get back into the math soon and understand at least enough for the PD fft stuff, but I have a lot of coding and design work and tracks I have to finish, before I can do that.
~David
On 2/20/07, Malte Steiner steiner@block4.com wrote:
reach. pd seems to have all the theory and capability to do the impressive fft audio processing but i find really nice examples difficult to find. i tend to get base level examples of what you have described.(wma files :).
Check out the phase vocoder examples in the audioexamples, a use- and beautiful (imho) realworld application of FFT, changing pitch and speed of samples independently.
Another application is a way of convolution for 2 signals by multiplying the spectra.
Cheers,
Malte
Malte Steiner media art + development -www.block4.com-
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
David,
I sympathize - what about the fftease package? I don't know anything about it but it may have something like you described if I remember correctly. I was really screwed on understanding FFT until I looked at the VASP examples and then it made a little sense. The wonderful thing about Pd is that you still don't always need to understand the math, just playing with trial and error works too! Which would have been fine for me except my patch sounded like poo, hence the post.
Frank,
When I got the mail I was like "damn, boy!" Thanks for the info, I will go over it for the next couple of days and see if I can't get something going. I really appreciate the time you put into that - this is not the first time you've helped me out, and I am always grateful.
Kevin
On 2/20/07, David Powers cyborgk@gmail.com wrote:
I wish there was an "fft for dumbies" ... or, I guess, some kind of fft "black boxes" to play with, where you don't need to understand the math. Frank's recent post completely lost me, though given a bit of study I can probably decode it.
But, for instance, in Reaktor or Plogue Bidule, you can move stuff into fft, mess with it, and resynthesize, without having any idea what the hell the math is. In comparison, I really couldn't understand the PD fft examples at all, it's just been too many years since I had a math class. I hope to get back into the math soon and understand at least enough for the PD fft stuff, but I have a lot of coding and design work and tracks I have to finish, before I can do that.
~David
On 2/20/07, Malte Steiner steiner@block4.com wrote:
reach. pd seems to have all the theory and capability to do the impressive fft audio processing but i find really nice examples difficult to find. i tend to get base level examples of what you have described.(wma files :).
Check out the phase vocoder examples in the audioexamples, a use- and beautiful (imho) realworld application of FFT, changing pitch and speed of samples independently.
Another application is a way of convolution for 2 signals by multiplying the spectra.
Cheers,
Malte
Malte Steiner media art + development -www.block4.com-
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
Wow, I heard of "fftease" before, but I had never actually looked carefully at it. That looks incredibly promising, thanks so much!
I should probably start to look seriously at VASP too - I'm really starting to get more interested in PD for non-realtime sound design anyway, as opposed to a realtime tweaking environment.
~David
On 2/21/07, Kevin McCoy km.takewithyou@gmail.com wrote:
David,
I sympathize - what about the fftease package? I don't know anything about it but it may have something like you described if I remember correctly. I was really screwed on understanding FFT until I looked at the VASP examples and then it made a little sense. The wonderful thing about Pd is that you still don't always need to understand the math, just playing with trial and error works too! Which would have been fine for me except my patch sounded like poo, hence the post.
Frank,
When I got the mail I was like "damn, boy!" Thanks for the info, I will go over it for the next couple of days and see if I can't get something going. I really appreciate the time you put into that - this is not the first time you've helped me out, and I am always grateful.
Kevin
On 2/20/07, David Powers cyborgk@gmail.com wrote:
I wish there was an "fft for dumbies" ... or, I guess, some kind of fft "black boxes" to play with, where you don't need to understand the math. Frank's recent post completely lost me, though given a bit of study I can probably decode it.
But, for instance, in Reaktor or Plogue Bidule, you can move stuff into fft, mess with it, and resynthesize, without having any idea what the hell the math is. In comparison, I really couldn't understand the PD fft examples at all, it's just been too many years since I had a math class. I hope to get back into the math soon and understand at least enough for the PD fft stuff, but I have a lot of coding and design work and tracks I have to finish, before I can do that.
~David
On 2/20/07, Malte Steiner steiner@block4.com wrote:
reach. pd seems to have all the theory and capability to do the impressive fft audio processing but i find really nice examples difficult to find. i tend to get base level examples of what you have described.(wma files :).
Check out the phase vocoder examples in the audioexamples, a use- and beautiful (imho) realworld application of FFT, changing pitch and speed of samples independently.
Another application is a way of convolution for 2 signals by multiplying the spectra.
Cheers,
Malte
Malte Steiner media art + development -www.block4.com-
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
--
Frank,
OK I was able to look at this sooner than I expected (can't sleep!). Thank you *so* much. It makes perfect sense now!! Even though I don't understand their basis completely, those formulas for amp/phase really help. I can't wait to do some insane stuff, and of course I will post my results to the list.
On a second note, I don't understand why basic FFT is thought of as being "advanced". I think other things are much more difficult to understand! Let's do as Kyle suggested and get this on the community site somewhere maybe with some images of arrays to clarify? Vasp was such a help to me because I could look at the arrays after the calcs were done.
Thanks again - I owe you a beer if we ever meet.
K
Hallo, Kevin McCoy hat gesagt: // Kevin McCoy wrote:
Let's do as Kyle suggested and get this on the community site somewhere maybe with some images of arrays to clarify?
Hm, seems my mail from yesterday git lost: I already put it on my site here: http://footils.org/cms/show/60 including some corrections. I guess I'll add some images to that the next day as well and clarify stuff a bit more.
Frank Barknecht _ ______footils.org_ __goto10.org__
Hallo, David Powers hat gesagt: // David Powers wrote:
I wish there was an "fft for dumbies" ... or, I guess, some kind of fft "black boxes" to play with, where you don't need to understand the math. Frank's recent post completely lost me,
Now I'm disappointed ...
though given a bit of study I can probably decode it.
... ah, and relieved a bit again. ;)
But, for instance, in Reaktor or Plogue Bidule, you can move stuff into fft, mess with it, and resynthesize, without having any idea what the hell the math is. In comparison, I really couldn't understand the PD fft examples at all, it's just been too many years since I had a math class.
The power of Pd of course is, that you can influence things on a much lower level than NI allows you to do in Reaktor - although I admit, that I only know Reaktor from screenshots. The downside is, that you have to dig deeper to make the most out of Pd. This is especially true for FFT applications. The actual FFT patches often are very simple and they contain just of a handful of objects. It's the knowledge hidden inside that makes them difficult to understand.
While you can skip a lot of the math, you cannot do FFT in Pd without at least understanding what kind of data is generated by the two [rfft~] outlets. Because without understanding this, you cannot even "fool around" with the data in between [rfft~] and [rifft~] in a meaningful way.
Anyway, to give you a blackbox maybe like in Reaktor, attached is a Spectral Delay GOP abstraction ready to be dropped into any glitch patch.
Frank Barknecht _ ______footils.org_ __goto10.org__
This looks sweet, thanks Frank! Hoping to have a play with this as soon as I get to do some actual music making later this week. By the way, I thought I'd clarify what I meant with the example of Plogue Bidule. The website invites one to: "Transform audio in the spectral domain, with Bidule's FFT modules. Time domain audio is split into two types of data, frequencies and magnitudes, which can be manipulated using a wide variety of spectral bidules." http://www.plogue.com/img/Spectral.png
So basically, in most of the "simple" fft software, they split the signal into freq and amplitude. You can see in the screenshot this is represented by yellow and orange connectors, and they have specific objects so you can play with a whole bunch of crazy transformations on both freq and amp, and then you can resynthesize it back with an inverse fft module.
I see that I can also get the freq and amplitude info from PD's fft, once I'm awake enough to follow your math anyway! But I'm wondering where the phase comes in exactly - in Plogue I'm assuming the phases are somehow calculated auto-magically? They DO let you set the blocksize of the signal with the fft. Also, how does this relate to [fiddle~], because fiddle I understand, it gives me a fundamental freq and the amplitude of some number of harmonics, and I could take that info (for instance) to resynthesize stuff in some additive synth.
~David
On 2/21/07, Frank Barknecht fbar@footils.org wrote:
Hallo, David Powers hat gesagt: // David Powers wrote:
I wish there was an "fft for dumbies" ... or, I guess, some kind of fft "black boxes" to play with, where you don't need to understand the math. Frank's recent post completely lost me,
Now I'm disappointed ...
though given a bit of study I can probably decode it.
... ah, and relieved a bit again. ;)
But, for instance, in Reaktor or Plogue Bidule, you can move stuff into fft, mess with it, and resynthesize, without having any idea what the hell the math is. In comparison, I really couldn't understand the PD fft examples at all, it's just been too many years since I had a math class.
The power of Pd of course is, that you can influence things on a much lower level than NI allows you to do in Reaktor - although I admit, that I only know Reaktor from screenshots. The downside is, that you have to dig deeper to make the most out of Pd. This is especially true for FFT applications. The actual FFT patches often are very simple and they contain just of a handful of objects. It's the knowledge hidden inside that makes them difficult to understand.
While you can skip a lot of the math, you cannot do FFT in Pd without at least understanding what kind of data is generated by the two [rfft~] outlets. Because without understanding this, you cannot even "fool around" with the data in between [rfft~] and [rifft~] in a meaningful way.
Anyway, to give you a blackbox maybe like in Reaktor, attached is a Spectral Delay GOP abstraction ready to be dropped into any glitch patch.
Ciao
Frank Barknecht _ ______footils.org_ __goto10.org__
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
On 2/21/07, David Powers cyborgk@gmail.com wrote:
I see that I can also get the freq and amplitude info from PD's fft, once I'm awake enough to follow your math anyway! But I'm wondering where the phase comes in exactly - in Plogue I'm assuming the phases are somehow calculated auto-magically? They DO let you set the blocksize of the signal with the fft.
Forgot to mention: in Bidule, they do also let you change the windowing settings for the fft and inverse-fft, it's another built-in part of the module.
And from reading your tutorial another time, it's slowly making more sense, I think it's the phase stuff that I wasn't taking into account, has been confusing me.
~David
This looks sweet, thanks Frank! Hoping to have a play with this as soon as I get to do some actual music making later this week
Hey guys, sorry I arrived a little late to the thread....
Frank, did you post an example of the FFT patch that you explained?
If so, would you mind posting it again? :-)
Thanks,
Jared
jared wrote:
Hey guys, sorry I arrived a little late to the thread....
Frank, did you post an example of the FFT patch that you explained?
If so, would you mind posting it again? J
all postings are archived at http://lists.puredata.info
there you can search what people have said in the past years as well as getting all the attachments.
fmga.sdr IOhannes
Great, thanks. I wasn't sure if it was just a quick patch that he posted via the list.....
-----Original Message----- From: IOhannes m zmoelnig [mailto:zmoelnig@iem.at] Sent: Wednesday, February 21, 2007 7:38 PM To: jared Cc: 'David Powers'; pd-list@iem.at Subject: Re: [PD] is this a spectral gate?
jared wrote:
Hey guys, sorry I arrived a little late to the thread....
Frank, did you post an example of the FFT patch that you explained?
If so, would you mind posting it again? J
all postings are archived at http://lists.puredata.info
there you can search what people have said in the past years as well as getting all the attachments.
fmga.sdr IOhannes
Hallo, David Powers hat gesagt: // David Powers wrote:
This looks sweet, thanks Frank! Hoping to have a play with this as soon as I get to do some actual music making later this week. By the way, I thought I'd clarify what I meant with the example of Plogue Bidule. The website invites one to: "Transform audio in the spectral domain, with Bidule's FFT modules. Time domain audio is split into two types of data, frequencies and magnitudes, which can be manipulated using a wide variety of spectral bidules." http://www.plogue.com/img/Spectral.png
Funny: That image looks like it does exactly the same as the specdelay~.pd patch I posted. The only difference is that the Bin_Delay module in Bidule is two objects in Pd: delwrite~ and vd~. ;)
So basically, in most of the "simple" fft software, they split the signal into freq and amplitude. You can see in the screenshot this is represented by yellow and orange connectors, and they have specific objects so you can play with a whole bunch of crazy transformations on both freq and amp, and then you can resynthesize it back with an inverse fft module.
Yes, the same principle is in use in Pd as well, only that instead of phase and amplitude (often also called "magnitude") you get "real" and "imaginary" data in Pd. But this is only a different point of view on the same thing: one is a "rectangular" view the other is "polar". But you can convert between both views back and forth. The DSP-Guide has a nicer explanation of the conversion: http://www.dspguide.com/ch8/8.htm
Polar and rectangular (or cartesian) is just expressing the same thing with different words. It's like saying:
versus saying:
Both instructions will let you end in the same spot, although they use completely different numbers:
o
|
|
|
|____x
o
\
\
\
\x
Ah, how I love ASCII!
I see that I can also get the freq and amplitude info from PD's fft, once I'm awake enough to follow your math anyway! But I'm wondering where the phase comes in exactly - in Plogue I'm assuming the phases are somehow calculated auto-magically?
Maybe they are using the formulas I gave in my little guide. Really, re/im vs. phs/amp is just a conversion.
I guess, the FFT_0 module in Bidule has phase information in its left outlet and amplitude info in the right, orange path. As you can see in the screenshot the phase info in Bidule is passed practically unchanged (only delayed a bit), because the operations like gain or filtering only work on amplitudes: They multiply the amplitudes. This doesn't affect the phases at all.
It's similar with Pd's real/imaginary view on the issue. In fact for pure amplitde scaling you don't even need to convert from re/im to phase/amplitude, you can just multiply the re/im data directly with something to scale the amplitudes. (Because phase information is not affected by gain changes.) However you need to multiply both signal paths to actually keep the phases unchanged. See I03.resynthesis.pd for this in action.
They DO let you set the blocksize of the signal with the fft. Also, how does this relate to [fiddle~], because fiddle I understand, it gives me a fundamental freq and the amplitude of some number of harmonics, and I could take that info (for instance) to resynthesize stuff in some additive synth.
fiddle works a bit differently, but it will not give enough information to make a clean resynthesis. Remember: An FFT on a blocksize of 1024 will give you 1024/2 = 512 resynthesis channels, or 512 virtual "oscillators". fiddle~ basically only gives one frequency.
Frank Barknecht _ ______footils.org_ __goto10.org__
On 2/21/07, Frank Barknecht fbar@footils.org wrote:
fiddle works a bit differently, but it will not give enough information to make a clean resynthesis. Remember: An FFT on a blocksize of 1024 will give you 1024/2 = 512 resynthesis channels, or 512 virtual "oscillators". fiddle~ basically only gives one frequency.
Aha, okay. I'm really beginning to understand this more, everything you said made things much more clear to me.
Oh, and just to clarify: I think you mean that [fiddle~] will give you more than one frequency, but all the additional freqs are harmonics of one fundamental frequency - so you can get timbre information about a single note melody, at least I had some success doing this in experiments, and resynthesizing with an additive bank of [osc~]... Not, by any means, a super-accurate resynthesis, but I was using it more to do timbre morphs rather than any accurate representation.
~David
Frank Barknecht wrote:
So basically, in most of the "simple" fft software, they split the signal into freq and amplitude. You can see in the screenshot this is represented by yellow and orange connectors, and they have specific objects so you can play with a whole bunch of crazy transformations on both freq and amp, and then you can resynthesize it back with an inverse fft module.
Yes, the same principle is in use in Pd as well, only that instead of phase and amplitude (often also called "magnitude") you get "real" and "imaginary" data in Pd. But this is only a different point of view on the same thing: one is a "rectangular" view the other is "polar". But you can convert between both views back and forth. The DSP-Guide has a nicer explanation of the conversion: http://www.dspguide.com/ch8/8.htm
what is the advantage of spitting out these values in polar coords?
Hallo, Josh Steiner hat gesagt: // Josh Steiner wrote:
what is the advantage of spitting out these values in polar coords?
According to the DSP-Guide it this:
When should you use rectangular notation and when should you use polar? Rectangular notation is usually the best choice for calculations, such as in equations and computer programs. In comparison, graphs are almost always in polar form. As shown by the previous example, it is nearly impossible for humans to understand the characteristics of a frequency domain signal by looking at the real and imaginary parts. In a typical program, the frequency domain signals are kept in rectangular notation until an observer needs to look at them, at which time a rectangular-to-polar conversion is done.
http://www.dspguide.com/ch8/8.htm
Probably Miller thinks of Pd primarily as a tool for calculations so he kept the re/im representation. I also think, that the algorithm to calculate the Fourier transform, the Fast-FT or FFT, generates re/im pairs, so skipping the final conversion to polar unless necessary is faster. But I need to verify this. Maybe some DSP expert (Chuck?) can confirm this?
Frank Barknecht _ ______footils.org_ __goto10.org__
Yes, this is true. For many FFT based effects (like spectral gates),
you don't really need to convert completely to polar (this conversion
can be more expensive than the FFT).
For a spectral gate, just calculate the amplitude from real and imag,
make your gate decision based on the amplitude and threshold, and
then apply the same gain reduction to both real and imag. Add attack
and release to the gate-gain for smoother results.
Or even quicker, avoid the sqrt in amplitude calculation, and use a
squared threshold to compare against the squared amplitude.
On Feb 21, 2007, at 11:33 PM, Frank Barknecht wrote:
I also think, that the algorithm to calculate the Fourier transform, the Fast-FT or FFT, generates re/im pairs, so skipping the final conversion to polar unless necessary is faster.
tom erbe ~ tre@ucsd.edu ~ studio director ~ ucsd department of music
When should you use rectangular notation and when should you use polar?
Addition vs. Multiplication, of course
Addition must be done in rectangular coordinates a+bi + c+di=(a+c) + (b+d)i which we cannot do in polar coordinates, we have to convert back to rect. coords
Multiplication is simpler in polar coordinates (a+bi) * (c+di)=(a*c-b*d) + (a*d+b*c)i vs. polar coordinates: r1*e^(a*i) * r2*e^(b*i)=r1*r2*e^((a+b)*i) it's simpler in polar coordinates--requires fewer calculations
Rectangular notation is usually the best choice for calculations, such as in equations and computer programs.
This is also true for the FFT. FFT is just a convenient factorization of the fourier transform, that speeds up computations from O(N^2) to O(N*log(N)). The fourier transform consists of multiplying and adding complex numbers (a complex valued matrix equation), so the numbers should be kept in rect. form for the sake of doing addition.
Plus, of course, we have no native data types in C for doing complex multiplication. Fortran is another thing; it even works with complex vectors. In C, you have to write the loop and write the whole equation for doing complex multiplication. In fortran, you just say x*y. Multiply this matrix, A*b....Fortran says, yes, sir. (Fortran 90, at least, not sure about Fortran 77)
It is nearly pointless to convert to polar coordinates just for the sake of doing multiplication, unless you have a lot of things you want to multiply. I think we should have some simple abstractions to do the simple operations for complex multiplication, division, conjugate, addition, subtraction, probably several more. I don't know why I haven't done it yet. *Every single time I have to do one of the butterfly calculations on a pair of fft's, I have to write it down on paper first.* :)
I agree that the polar form is easier to read, and the multiplication of two complex numbers shows very clearly what happens. The amplitudes multiply, and the phases add.
Chuck
On 2/21/07, Frank Barknecht fbar@footils.org wrote:
Anyway, to give you a blackbox maybe like in Reaktor, attached is a Spectral Delay GOP abstraction ready to be dropped into any glitch patch.
Thanks Frank this little black box is wonderful. i think pd would be really attractive to more people of there were more patches like this around. sure it is simplistic to want "plugins" without knowing anything about the math behind it, but having gadgets to mess with in this way allows new users and intermediate pders real tools to play with and perform with from the outset, as well as tools to investigate and hack. (i guess i'm one without a mathmatical bone in my body) the help examples that come with pd are great but limited. would be awesome to see more little blackboxes that sound this great, cheers!
oh and thanks for the fft tute to frank!
On 2/23/07, we are gateswideopen@gmail.com wrote:
On 2/21/07, Frank Barknecht fbar@footils.org wrote:
Anyway, to give you a blackbox maybe like in Reaktor, attached is a Spectral Delay GOP abstraction ready to be dropped into any glitch patch.
Thanks Frank this little black box is wonderful. i think pd would be really attractive to more people of there were more patches like this around. sure it is simplistic to want "plugins" without knowing anything about the math behind it, but having gadgets to mess with in this way allows new users and intermediate pders real tools to play with and perform with from the outset, as well as tools to investigate and hack. (i guess i'm one without a mathmatical bone in my body) the help examples that come with pd are great but limited. would be awesome to see more little blackboxes that sound this great, cheers!
On Wed, 21 Feb 2007 10:30:28 +0100 Frank Barknecht fbar@footils.org wrote:
A couple of little improvements to specdelay to make it more useful as an audio effect.
Hallo, David Powers hat gesagt: // David Powers wrote:
I wish there was an "fft for dumbies" ... or, I guess, some kind of fft "black boxes" to play with, where you don't need to understand the math. Frank's recent post completely lost me,
Now I'm disappointed ...
though given a bit of study I can probably decode it.
... ah, and relieved a bit again. ;)
But, for instance, in Reaktor or Plogue Bidule, you can move stuff into fft, mess with it, and resynthesize, without having any idea what the hell the math is. In comparison, I really couldn't understand the PD fft examples at all, it's just been too many years since I had a math class.
The power of Pd of course is, that you can influence things on a much lower level than NI allows you to do in Reaktor - although I admit, that I only know Reaktor from screenshots. The downside is, that you have to dig deeper to make the most out of Pd. This is especially true for FFT applications. The actual FFT patches often are very simple and they contain just of a handful of objects. It's the knowledge hidden inside that makes them difficult to understand.
While you can skip a lot of the math, you cannot do FFT in Pd without at least understanding what kind of data is generated by the two [rfft~] outlets. Because without understanding this, you cannot even "fool around" with the data in between [rfft~] and [rifft~] in a meaningful way.
Anyway, to give you a blackbox maybe like in Reaktor, attached is a Spectral Delay GOP abstraction ready to be dropped into any glitch patch.
Ciao
Frank Barknecht _ ______footils.org_ __goto10.org__
that is one hell of a lot of fun to play with.
padawan12 wrote:
On Wed, 21 Feb 2007 10:30:28 +0100 Frank Barknecht fbar@footils.org wrote:
A couple of little improvements to specdelay to make it more useful as an audio effect.
Hallo, David Powers hat gesagt: // David Powers wrote:
I wish there was an "fft for dumbies" ... or, I guess, some kind of fft "black boxes" to play with, where you don't need to understand the math. Frank's recent post completely lost me,
Now I'm disappointed ...
though given a bit of study I can probably decode it.
... ah, and relieved a bit again. ;)
But, for instance, in Reaktor or Plogue Bidule, you can move stuff into fft, mess with it, and resynthesize, without having any idea what the hell the math is. In comparison, I really couldn't understand the PD fft examples at all, it's just been too many years since I had a math class.
The power of Pd of course is, that you can influence things on a much lower level than NI allows you to do in Reaktor - although I admit, that I only know Reaktor from screenshots. The downside is, that you have to dig deeper to make the most out of Pd. This is especially true for FFT applications. The actual FFT patches often are very simple and they contain just of a handful of objects. It's the knowledge hidden inside that makes them difficult to understand.
While you can skip a lot of the math, you cannot do FFT in Pd without at least understanding what kind of data is generated by the two [rfft~] outlets. Because without understanding this, you cannot even "fool around" with the data in between [rfft~] and [rifft~] in a meaningful way.
Anyway, to give you a blackbox maybe like in Reaktor, attached is a Spectral Delay GOP abstraction ready to be dropped into any glitch patch.
Ciao
Frank Barknecht _ ______footils.org_ __goto10.org__
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
That is very nice. We need more stuff like this!
Unfortunately, the sound breaks up badly when I draw in the arrays.
Does that happen on other platforms? I am on Mac OS X. I wonder if
there is a more efficient way to do the drawing part.
I added a little splash of color and some simple step-by-step
instructions for the newbies. Stuff like this is the perfect way to
inspire people to learn Pd.
.hc
On Feb 23, 2007, at 1:10 PM, Josh Steiner wrote:
that is one hell of a lot of fun to play with.
padawan12 wrote:
On Wed, 21 Feb 2007 10:30:28 +0100 Frank Barknecht fbar@footils.org wrote:
A couple of little improvements to specdelay to make it more
useful as an audio effect.Hallo, David Powers hat gesagt: // David Powers wrote:
I wish there was an "fft for dumbies" ... or, I guess, some kind of fft "black boxes" to play with, where you don't need to
understand the math. Frank's recent post completely lost me,Now I'm disappointed ...
though given a bit of study I can probably decode it.
... ah, and relieved a bit again. ;)
But, for instance, in Reaktor or Plogue Bidule, you can move stuff into fft, mess with it, and resynthesize, without having any
idea what the hell the math is. In comparison, I really couldn't
understand the PD fft examples at all, it's just been too many years since I had a math class.The power of Pd of course is, that you can influence things on a
much lower level than NI allows you to do in Reaktor - although I admit, that I only know Reaktor from screenshots. The downside is, that you have to dig deeper to make the most out of Pd. This is especially
true for FFT applications. The actual FFT patches often are very
simple and they contain just of a handful of objects. It's the knowledge hidden inside that makes them difficult to understand.While you can skip a lot of the math, you cannot do FFT in Pd
without at least understanding what kind of data is generated by the two [rfft~] outlets. Because without understanding this, you cannot even "fool around" with the data in between [rfft~] and [rifft~] in a meaningful way.Anyway, to give you a blackbox maybe like in Reaktor, attached is a Spectral Delay GOP abstraction ready to be dropped into any glitch patch.
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
All information should be free. - the hacker ethic
Yeah - I agree. This would be a nice addition to the pd examples since it uses all standard objects, or maybe there could be a package that includes things like this. I started learning Pd in May of last year and I always thought the audio examples were fine; effective but a little dry. Something like this would allow people to have a lot more fun from the get-go! It's things like this, or Derek's particlechamber (too bad it needs grid) that would be great especially for people coming from other softwares or the electronic music scene, just to demonstrate that these kind of things are happening in pd right off the bat :) Might be a nice little bit of encouragement.
I don't have any problems with drawing the arrays on an iMac g5 10.4.
Kevin
On 3/1/07, Hans-Christoph Steiner hans@eds.org wrote:
That is very nice. We need more stuff like this!
Unfortunately, the sound breaks up badly when I draw in the arrays. Does that happen on other platforms? I am on Mac OS X. I wonder if there is a more efficient way to do the drawing part.
I added a little splash of color and some simple step-by-step instructions for the newbies. Stuff like this is the perfect way to inspire people to learn Pd.
.hc
On Feb 23, 2007, at 1:10 PM, Josh Steiner wrote:
that is one hell of a lot of fun to play with.
padawan12 wrote:
On Wed, 21 Feb 2007 10:30:28 +0100 Frank Barknecht fbar@footils.org wrote:
A couple of little improvements to specdelay to make it more useful as an audio effect.
Hallo, David Powers hat gesagt: // David Powers wrote:
I wish there was an "fft for dumbies" ... or, I guess, some kind of fft "black boxes" to play with, where you don't need to understand the math. Frank's recent post completely lost me,
Now I'm disappointed ...
though given a bit of study I can probably decode it.
... ah, and relieved a bit again. ;)
But, for instance, in Reaktor or Plogue Bidule, you can move stuff into fft, mess with it, and resynthesize, without having any idea what the hell the math is. In comparison, I really couldn't understand the PD fft examples at all, it's just been too many years since I had a math class.
The power of Pd of course is, that you can influence things on a much lower level than NI allows you to do in Reaktor - although I admit, that I only know Reaktor from screenshots. The downside is, that you have to dig deeper to make the most out of Pd. This is especially true for FFT applications. The actual FFT patches often are very simple and they contain just of a handful of objects. It's the knowledge hidden inside that makes them difficult to understand.
While you can skip a lot of the math, you cannot do FFT in Pd without at least understanding what kind of data is generated by the two [rfft~] outlets. Because without understanding this, you cannot even "fool around" with the data in between [rfft~] and [rifft~] in a meaningful way.
Anyway, to give you a blackbox maybe like in Reaktor, attached is a Spectral Delay GOP abstraction ready to be dropped into any glitch patch.
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
All information should be free. - the hacker ethic
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Hallo, padawan12 hat gesagt: // padawan12 wrote:
A couple of little improvements to specdelay to make it more useful as an audio effect.
Very nice. Now one can do instant french filter house with it as well!
With under 100 objects:
$ grep obj specdelay~.pd | wc -l 98
Frank Barknecht _ ______footils.org_ __goto10.org__
fftease covers most popular spectral manipulation goodies. Originally by Eric Lyon and ported to pd by Thomas Grill, IIRC.
./MiS
"David Powers" cyborgk@gmail.com writes:
I wish there was an "fft for dumbies" ... or, I guess, some kind of fft "black boxes" to play with, where you don't need to understand the math. Frank's recent post completely lost me, though given a bit of study I can probably decode it.
David Powers wrote:
I wish there was an "fft for dumbies" ... or, I guess, some kind of fft "black boxes" to play with,
I started my fftadventure this way, using the phase vocoder examples and embed them into my patches. I think meanwhile there is a pvoc object out to simplify things but didnt checked out yet. Funny is the catch up the commercial vendors play, having these techniques later in nice packages like Roland V-Synth and their so called elastic audio (I love marketing), long after we have this available here, but whom I tell this...
Cheers,
Malte
Hallo, Kevin McCoy hat gesagt: // Kevin McCoy wrote:
I am still pretty new at FFT things but I am having a lot of fun. I know Tom Erbe's soundhack has something called a "spectral gate" so I thought I'd give it a shot and try to make my own in Pd after reading about it. Doesn't sound all that great, it actually ends up sounding like a really low quality wma file or something :)
Is this technically a spectral gate? I'm using [>~] from zexy which in my mind says, "Look at all of the frequencies in the block and only allow those which are above value x to pass through." I've attached the patch here - any info or guidance is much appreciated. Any sound that goes through it pretty much loses all definition and clarity - is there a fix for this?
I'm not really sure what spectral gate does, but you've probably seen doc/3.audio.examples/I03.resynthesis.pd which is a kind of equalizer or multiband-filter.
Maybe you've taken this patch as a model for your patch. But then some things are wrong in your adaption. First: [tabreceive $0-hann] will not receive anything, because [table $0-hann] is missing. So it will only output zeros. Either remove the multiplication with $0-hann, or add the [pd Hann-window] to the patch.
But the real (and imaginary) mistake is the actual "gating" with [>~]. If you open the fft~-help.pd file (Help on rfft~), and print~ what comes out of rfft~'s outlets, you will see something like this:
real: 0.00016968 -4.6019e-07 -2.1632e-07 -3.2469e-07 -9.2026e-07 32 -7.499e-07 -3.2501e-07 -3.1411e-07 -9.6657e-07 -6.2494e-05 -1.4388e-06 -5.035e-07 -5.0472e-07 -1.665e-06 -2.3571e-05 -5.8313e-07 -7.5066e-08 -6.2174e-07 -2.1764e-06 -1.0339e-05 -1.8991e-06 -3.5305e-07 1.376e-07 -2.2529e-06 -4.486e-06 -4.1878e-07 -1.9073e-06 -5.2361e-07 -1.7626e-06 -2.8447e-06 -2.943e-07 -7.6485e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 imaginary: 0 -2.7462e-09 1.9217e-07 -1.4215e-06 -1.0745e-07 -0.00013828 1.4264e-07 -2.5163e-07 1.0069e-07 3.7871e-07 -5.0489e-06 2.0548e-06 -1.8181e-08 -4.5923e-07 1.5607e-07 -6.6416e-06 -2.0862e-07 -5.8076e-07 6.2139e-08 -3.0756e-07 -4.1732e-06 6.2431e-07 -2.9043e-07 -5.2873e-07 -2.2713e-07 -3.1568e-06 -1.1066e-07 -0 -2.0931e-07 -3.162e-07 -6.2198e-07 -2.3119e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Now if you clip this with [>~ 0.8] you will get a series of 0 and 1 in each of these numbers. It might sound funky, but it's not what you want to achieve.
So lets first have a look at what [rfft~] does: It will give you two signals. One is called the real, the other the imaginary part, but lets forget about this for now and look at it from a bit afar:
Generally a FFT will do a spectral analysis. It will calculate, what sine waves you need to add up to get the same signal as that played in the current signal block. Basically it will tell you the frequencies and phases (first and second inlets) and amplitudes of a lot of [osc~] objects that, if you add them all up, would resynthesize your current signal. (You cannot directly use these [osc~] objects to resynthesize what comes from rfft~ but lets for a moment assume that we could.)
How many [osc~] objects you can control, will depend on the block-size: The FFT will generate control data for blocksize/2 oscillators. So with a blocksize of 64, you get frequencies, phase and amplitudes for 32 osc~s.
Now for some deep mathematical reasons all these [osc~] objects have fixed tunings: They all are multiples (harmonics) of Samplerate/Blocksize. So it starts at f0 = 0 Hertz, the next [osc~] would have a frequency f1= 1 * SR/BS, the next at f2=2*SR/BS up to the final one: f_final = (BS/2) * SR/BS == SR/2 or the Nyquist-frequency. For a blocksize of 16 and a samplerate of 48000 Hz this would be:
f0: 0 f1: 1 * 48000/16 = 3000 f2: 2 * 48000/16 = 6000 ... f32: 8 * 48000/16 = 24000
(Actually of course these are bs/2 + 1 frequencies, but 0 and Nyquist are special anyway so I thought I could cheat a bit. ;))
Because the frequencies are fixed and known, the rfft~ object doesn't need to specify them explicitly. It only needs to calculate the amplitude and the phase of every partial [osc~].
Now the tricky parts to understand are these:
[rfft~] will not directly output the amplitudes and the phases, but this strange thing called real and imaginary part. These carry exactly the same information about amplitude and phase, but encoded a bit differently than you are probably used to from working with [osc~]:
They are specified in a kind of polar coordinate system, where the amplitude is the radius (or distance from origin) and the phase is the angle of the polar coordinates. Re and Im however are cartesian coordinates (in the complex plane).
You can convert re/img-pairs to amplitude and phase using these formulas:
amp = sqrt(re^2 + im^2) phs = arctan(re/im)
This is a standard cartesian to polar conversion.
Most of the time you can skip calculating the phase, but more on that later.
The amplitude calculation in Pd lingo looks like this:
amp:
[rfft~]
|\ |
[*~] [*~]
| /
| /
[+~ ] <= just inserted for clarity, you can also directly go to sqrt~
|
[sqrt~] or [q8_sqrt~], which is much faster.
The real and imaginary part (or the phase and amplitudes) are encoded inside the signal blocks, that [rfft~] outputs. The first pair of samples of the left and right outlet~s of [rfft~] contains the info about amplitude and phase for the first [osc~] in our big oscillator bank, that has frequency f0. Each second sample pair contains info for the next osc~ with frequency f1 and so on up to the sample pair number "blocksize/2", which contains the amp and phase for the final oscillator at Nyquist frequency. The rest of the block always is zero, as we don't have oscillators for that.
Some real world data might be useful: Assume we have a blocksize of 8. Then a block of samples might look like this, when print~ed:
orig: 0.13004 0.26951 0.40352 0.52934 0.64446 0.74649 0.83341 0.90344
If you send this through [rfft~] you will get this:
img: 0 1.0317 0.41679 0.17191 0 0 0 0
re: 4.4602 -0.58717 -0.46243 -0.44167 -0.43737 0 0 0
Sending these two to [rifft~] and dividing by blocksize 8 will give you the the original signal block back.
You can also calculate the amplitudes like above, which of course is easy for our first sample: amp = sqrt(4.4602^2 + 0^2) = 4.4602
Actually to get the correct amplitudes you would need to normalize the re/im pairs here as well by dividing them by 8, I just skipped that.
Here's the full scoop:
amp: 4.4602 1.1871 0.62254 0.47394 0.43737 0 0 0
See attached "fft-up-close.pd" to try this on your own.
This means, that resynthesizing this signal at SR=48000 would be similar to using oscillators like this:
[osc~ 0] | [*~ 4.4602]
[osc~ 6000] | [*~ 1.1871]
[osc~ 12000] | [*~ 0.62254]
[osc~ 18000] | [*~ 0.47394]
...
and so on (Note that without normalizing these values are to loud.)
However: All these oscillators would also need to have their phases set accordingly, so you cannot just use above oscillator bank directly in real life.
The inverse FFT objects like [rifft~] will accept the amplitude and phase information in the real/imaginary format directly. This means, you can think of the [rifft~] as a resynthesis bank of blocksize/2 oscillators like above with real and imaginary inputs instead of amplitude and phase input, and every oscillator inside [rifft~] is spaced Samplerate/Blocksize Hertz apart.
As fft~-help.pd and my calculation above shows, connecting an [rfft~] to a [rifft~] will just pass the signal practically unchanged (it's just a bit louder afterwards, that's why you normally normalize it by dividing the output by the blocksize like [/~ 64]). Depending on Windowing and Overlap you need to use a different normalization factor.
Of course it will only get interesting if we wreck havoc to the re/im frequency data in the meantime.
A simple FFT-based modification is shown in I03.resynthesis.pd: Here every re/im sample pair (or every amplitude/phase-info for the respective "oscillator" in rifft~) is multiplied by some value retrieved from the gain table through tabreceive~. If this table has a 1 at a certain sample, this data is passed unchanged, if it has a 0 at another sample, than that oscillator is muted. This is a filter operation, and it only affects the amplitudes of the internal oscillators.
You might ask: "Why only the amplitudes? What about the phases? You said, they are also encoded in the re/im data? Are you cheating again?!" Read on.
If we scale the re/im pair by a value x, then the amplitudes will be scaled by x as well:
amp(x*re,x*im) = sqrt((x * re)^2 + (x * im)^2) = sqrt (x^2 * (re^2+im^2)) = sqrt(x^2) * sqrt(re^2+im^2) = x * amp(re,im)
However the phases will stay the same! Proof:
phs(x*re,x*im) = atan(x*re/x*im) = atan(re/im) = phs(re,im)
Get it? That's why for such modifications you can omit the phase calculation with atan etc.
Note that you need to do this multiplication *on every block* again and again, because the data coming out of [rfft~] is constantly updated - it still is an audio signal! That's why a [tabreceive~] is used: Although the table received is not changing all the time, we still need to read it again on every block and make a signal out of it.
Now for a simple, amplitude-dependent gating or filtering, you first need to calculate the actual amplitude using the formula above. Then compare it to a value and multiply the original re/im-pairs with 0 or 1 depending on the result to change the amplitudes used in the resynthesis.
Attached specgate.pd illustrates this and also has a comparison of the windowed and unwindowed fft, that affects the quality of the result and also your normalization factors.
Frank Barknecht _ ______footils.org_ __goto10.org__
Hallo,
sorry, I made some upside-down-errors:
Frank Barknecht hat gesagt: // Frank Barknecht wrote:
phs = arctan(re/im)
Should be:
phs = arctan(im/re)
phs(x*re,x*im) = atan(x*re/x*im) = atan(re/im) = phs(re,im)
And here as well:
phs(x*re,x*im) = atan(x*im/x*re) = atan(im/re) = phs(re,im)
Frank Barknecht _ ______footils.org_ __goto10.org__
Clap clap clap!
Bravo, that was brilliant. Let's add it to the wiki somewhere!
~Kyle
On 2/20/07, Frank Barknecht fbar@footils.org wrote:
Hallo, Kevin McCoy hat gesagt: // Kevin McCoy wrote:
I am still pretty new at FFT things but I am having a lot of fun. I know Tom Erbe's soundhack has something called a "spectral gate" so I thought I'd give it a shot and try to make my own in Pd after reading about it. Doesn't sound all that great, it actually ends up sounding like a really low quality wma file or something :)
Is this technically a spectral gate? I'm using [>~] from zexy which in my mind says, "Look at all of the frequencies in the block and only allow those which are above value x to pass through." I've attached the patch here - any info or guidance is much appreciated. Any sound that goes through it pretty much loses all definition and clarity - is there a fix for this?
I'm not really sure what spectral gate does, but you've probably seen doc/3.audio.examples/I03.resynthesis.pd which is a kind of equalizer or multiband-filter.
Maybe you've taken this patch as a model for your patch. But then some things are wrong in your adaption. First: [tabreceive $0-hann] will not receive anything, because [table $0-hann] is missing. So it will only output zeros. Either remove the multiplication with $0-hann, or add the [pd Hann-window] to the patch.
But the real (and imaginary) mistake is the actual "gating" with [>~]. If you open the fft~-help.pd file (Help on rfft~), and print~ what comes out of rfft~'s outlets, you will see something like this:
real: 0.00016968 -4.6019e-07 -2.1632e-07 -3.2469e-07 -9.2026e-07 32 -7.499e-07 -3.2501e-07 -3.1411e-07 -9.6657e-07 -6.2494e-05 -1.4388e-06 -5.035e-07 -5.0472e-07 -1.665e-06 -2.3571e-05 -5.8313e-07 -7.5066e-08 -6.2174e-07 -2.1764e-06 -1.0339e-05 -1.8991e-06 -3.5305e-07 1.376e-07 -2.2529e-06 -4.486e-06 -4.1878e-07 -1.9073e-06 -5.2361e-07 -1.7626e-06 -2.8447e-06 -2.943e-07 -7.6485e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 imaginary: 0 -2.7462e-09 1.9217e-07 -1.4215e-06 -1.0745e-07 -0.00013828 1.4264e-07 -2.5163e-07 1.0069e-07 3.7871e-07 -5.0489e-06 2.0548e-06 -1.8181e-08 -4.5923e-07 1.5607e-07 -6.6416e-06 -2.0862e-07 -5.8076e-07 6.2139e-08 -3.0756e-07 -4.1732e-06 6.2431e-07 -2.9043e-07 -5.2873e-07 -2.2713e-07 -3.1568e-06 -1.1066e-07 -0 -2.0931e-07 -3.162e-07 -6.2198e-07 -2.3119e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Now if you clip this with [>~ 0.8] you will get a series of 0 and 1 in each of these numbers. It might sound funky, but it's not what you want to achieve.
So lets first have a look at what [rfft~] does: It will give you two signals. One is called the real, the other the imaginary part, but lets forget about this for now and look at it from a bit afar:
Generally a FFT will do a spectral analysis. It will calculate, what sine waves you need to add up to get the same signal as that played in the current signal block. Basically it will tell you the frequencies and phases (first and second inlets) and amplitudes of a lot of [osc~] objects that, if you add them all up, would resynthesize your current signal. (You cannot directly use these [osc~] objects to resynthesize what comes from rfft~ but lets for a moment assume that we could.)
How many [osc~] objects you can control, will depend on the block-size: The FFT will generate control data for blocksize/2 oscillators. So with a blocksize of 64, you get frequencies, phase and amplitudes for 32 osc~s.
Now for some deep mathematical reasons all these [osc~] objects have fixed tunings: They all are multiples (harmonics) of Samplerate/Blocksize. So it starts at f0 = 0 Hertz, the next [osc~] would have a frequency f1= 1 * SR/BS, the next at f2=2*SR/BS up to the final one: f_final = (BS/2) * SR/BS == SR/2 or the Nyquist-frequency. For a blocksize of 16 and a samplerate of 48000 Hz this would be:
f0: 0 f1: 1 * 48000/16 = 3000 f2: 2 * 48000/16 = 6000 ... f32: 8 * 48000/16 = 24000
(Actually of course these are bs/2 + 1 frequencies, but 0 and Nyquist are special anyway so I thought I could cheat a bit. ;))
Because the frequencies are fixed and known, the rfft~ object doesn't need to specify them explicitly. It only needs to calculate the amplitude and the phase of every partial [osc~].
Now the tricky parts to understand are these:
[rfft~] will not directly output the amplitudes and the phases, but this strange thing called real and imaginary part. These carry exactly the same information about amplitude and phase, but encoded a bit differently than you are probably used to from working with [osc~]:
They are specified in a kind of polar coordinate system, where the amplitude is the radius (or distance from origin) and the phase is the angle of the polar coordinates. Re and Im however are cartesian coordinates (in the complex plane).
You can convert re/img-pairs to amplitude and phase using these formulas:
amp = sqrt(re^2 + im^2) phs = arctan(re/im)
This is a standard cartesian to polar conversion.
Most of the time you can skip calculating the phase, but more on that later.
The amplitude calculation in Pd lingo looks like this:
amp:
[rfft~] |\ |
[*~] [*~] | / | / [+~ ] <= just inserted for clarity, you can also directly go to sqrt~ | [sqrt~] or [q8_sqrt~], which is much faster.The real and imaginary part (or the phase and amplitudes) are encoded inside the signal blocks, that [rfft~] outputs. The first pair of samples of the left and right outlet~s of [rfft~] contains the info about amplitude and phase for the first [osc~] in our big oscillator bank, that has frequency f0. Each second sample pair contains info for the next osc~ with frequency f1 and so on up to the sample pair number "blocksize/2", which contains the amp and phase for the final oscillator at Nyquist frequency. The rest of the block always is zero, as we don't have oscillators for that.
Some real world data might be useful: Assume we have a blocksize of 8. Then a block of samples might look like this, when print~ed:
orig: 0.13004 0.26951 0.40352 0.52934 0.64446 0.74649 0.83341 0.90344
If you send this through [rfft~] you will get this:
img: 0 1.0317 0.41679 0.17191 0 0 0 0
re: 4.4602 -0.58717 -0.46243 -0.44167 -0.43737 0 0 0
Sending these two to [rifft~] and dividing by blocksize 8 will give you the the original signal block back.
You can also calculate the amplitudes like above, which of course is easy for our first sample: amp = sqrt(4.4602^2 + 0^2) = 4.4602
Actually to get the correct amplitudes you would need to normalize the re/im pairs here as well by dividing them by 8, I just skipped that.
Here's the full scoop:
amp: 4.4602 1.1871 0.62254 0.47394 0.43737 0 0 0
See attached "fft-up-close.pd" to try this on your own.
This means, that resynthesizing this signal at SR=48000 would be similar to using oscillators like this:
[osc~ 0] | [*~ 4.4602]
[osc~ 6000] | [*~ 1.1871]
[osc~ 12000] | [*~ 0.62254]
[osc~ 18000] | [*~ 0.47394]
...
and so on (Note that without normalizing these values are to loud.)
However: All these oscillators would also need to have their phases set accordingly, so you cannot just use above oscillator bank directly in real life.
The inverse FFT objects like [rifft~] will accept the amplitude and phase information in the real/imaginary format directly. This means, you can think of the [rifft~] as a resynthesis bank of blocksize/2 oscillators like above with real and imaginary inputs instead of amplitude and phase input, and every oscillator inside [rifft~] is spaced Samplerate/Blocksize Hertz apart.
As fft~-help.pd and my calculation above shows, connecting an [rfft~] to a [rifft~] will just pass the signal practically unchanged (it's just a bit louder afterwards, that's why you normally normalize it by dividing the output by the blocksize like [/~ 64]). Depending on Windowing and Overlap you need to use a different normalization factor.
Of course it will only get interesting if we wreck havoc to the re/im frequency data in the meantime.
A simple FFT-based modification is shown in I03.resynthesis.pd: Here every re/im sample pair (or every amplitude/phase-info for the respective "oscillator" in rifft~) is multiplied by some value retrieved from the gain table through tabreceive~. If this table has a 1 at a certain sample, this data is passed unchanged, if it has a 0 at another sample, than that oscillator is muted. This is a filter operation, and it only affects the amplitudes of the internal oscillators.
You might ask: "Why only the amplitudes? What about the phases? You said, they are also encoded in the re/im data? Are you cheating again?!" Read on.
If we scale the re/im pair by a value x, then the amplitudes will be scaled by x as well:
amp(x*re,x*im) = sqrt((x * re)^2 + (x * im)^2) = sqrt (x^2 * (re^2+im^2)) = sqrt(x^2) * sqrt(re^2+im^2) = x * amp(re,im)
However the phases will stay the same! Proof:
phs(x*re,x*im) = atan(x*re/x*im) = atan(re/im) = phs(re,im)
Get it? That's why for such modifications you can omit the phase calculation with atan etc.
Note that you need to do this multiplication *on every block* again and again, because the data coming out of [rfft~] is constantly updated - it still is an audio signal! That's why a [tabreceive~] is used: Although the table received is not changing all the time, we still need to read it again on every block and make a signal out of it.
Now for a simple, amplitude-dependent gating or filtering, you first need to calculate the actual amplitude using the formula above. Then compare it to a value and multiply the original re/im-pairs with 0 or 1 depending on the result to change the amplitudes used in the resynthesis.
Attached specgate.pd illustrates this and also has a comparison of the windowed and unwindowed fft, that affects the quality of the result and also your normalization factors.
Ciao
Frank Barknecht _ ______footils.org_ __goto10.org__
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
On Tue, Feb 20, 2007 at 12:54:21PM +0100, Frank Barknecht wrote:
This means, that resynthesizing this signal at SR=48000 would be similar to using oscillators like this:
[osc~ 0] | [*~ 4.4602]
[osc~ 6000] | [*~ 1.1871]
[osc~ 12000] | [*~ 0.62254]
[osc~ 18000] | [*~ 0.47394]
...
and so on (Note that without normalizing these values are to loud.)
However: All these oscillators would also need to have their phases set accordingly, so you cannot just use above oscillator bank directly in real life.
Can't you use [osc~]'s right inlet to accomplish that?
Anyway, I've always seen spectral modifiers that work on the amplitude data only. What happens if you work on the phase data only? I mean, what does it sound like? I guess I should just try it.
Best,
Chris.
chris@mccormick.cx http://mccormick.cx
osc~'s right inlet only takes data, if I'm correct.
k
On 2/21/07, Chris McCormick chris@mccormick.cx wrote:
On Tue, Feb 20, 2007 at 12:54:21PM +0100, Frank Barknecht wrote:
This means, that resynthesizing this signal at SR=48000 would be similar to using oscillators like this:
[osc~ 0] | [*~ 4.4602]
[osc~ 6000] | [*~ 1.1871]
[osc~ 12000] | [*~ 0.62254]
[osc~ 18000] | [*~ 0.47394]
...
and so on (Note that without normalizing these values are to loud.)
However: All these oscillators would also need to have their phases set accordingly, so you cannot just use above oscillator bank directly in real life.
Can't you use [osc~]'s right inlet to accomplish that?
Anyway, I've always seen spectral modifiers that work on the amplitude data only. What happens if you work on the phase data only? I mean, what does it sound like? I guess I should just try it.
Best,
Chris.
chris@mccormick.cx http://mccormick.cx
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
On Wed, Feb 21, 2007 at 08:11:01PM -0600, Kevin McCoy wrote:
osc~'s right inlet only takes data, if I'm correct.
Exactly. It takes a message to set the phase, if I remember correctly.
Wait, I'm wrong. It only resets the phase according to the help file. I wonder how hard it would be to make the number at the right inlet actually set the phase.
Best,
Chris.
chris@mccormick.cx http://mccormick.cx
Hello all,
I'm in the middle of downloading the PD Workshop files from:
https://www.cs.tcd.ie/~wardn1/PD_workshop/
Is there, by chance, a zip file floating around that has all of the contents of this workshop? I'm 30 minutes into downloading them manually and I've only finished the 'control' section!
Thanks much,
Jared
try wget, no need to download expiring and full of adverts malware, dunno if windows has wget (?):
wget --secure-protocol=auto --no-check-certificate --force-html --no-directories --recursive --level=0 --accept .pd https://www.cs.tcd.ie/~wardn1/PD_workshop/01.pd-control/
it will get you down all the .pd files in one folder. afterwards just browse the filez by date and you will get the order somehow back.
the line can be limited to only one level and you remove the --no-directories to have some better order.
/a
On 2/22/07, jared microcosm11@msn.com wrote:
Hello all,
I'm in the middle of downloading the PD Workshop files from:
https://www.cs.tcd.ie/~wardn1/PD_workshop/
Is there, by chance, a zip file floating around that has all of the contents of this workshop? I'm 30 minutes into downloading them manually and I've only finished the 'control' section!
Thanks much,
Jared
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Hallo, alejo d hat gesagt: // alejo d wrote:
try wget, no need to download expiring and full of adverts malware, dunno if windows has wget (?):
Google "wget for windows" and you will find plenty.
wget --secure-protocol=auto --no-check-certificate --force-html --no-directories --recursive --level=0 --accept .pd https://www.cs.tcd.ie/~wardn1/PD_workshop/01.pd-control/
This is possible a bit easier with this:
$ wget --mirror --no-parent https://www.cs.tcd.ie/~wardn1/PD_workshop/
You may want to delete some index-files afterwards.
Frank Barknecht _ ______footils.org_ __goto10.org__
This is possible a bit easier with this:
$ wget --mirror --no-parent https://www.cs.tcd.ie/~wardn1/PD_workshop/
You may want to delete some index-files afterwards.
Thanks for this. Unfortunately I have no idea what to do with
it, as I have no knowledge of HTML or coding--unless it has patch cables ;-) There has to be a zip containing these files floating around out there somewhere :-)
Thanks,
Jared
Hi, "wget" is a Linux/Unix command line program, for downloading files. You can get a Windows binary version here: http://users.ugent.be/~bpuype/wget/
Rename the file to "wget.exe" and put it in the directory "C:/WINDOWS"
To test if its installed, open a command prompt and type: wget -h | more
Then to retrieve the files after you install, use the "cd" command to change directories to the place where you want to download the files. Then type the command that Frank listed into a command line prompt (or try the command below**): wget --mirror --no-parent https://www.cs.tcd.ie/~wardn1/PD_workshop/
**Try this command, Frank's version was giving me a certificate error. The following should work instead (all on one line): wget --mirror --no-parent --no-check-certificate https://www.cs.tcd.ie/~wardn1/PD_workshop/
*** From the webpage documentation *** Usage
wget is a command line program. You start it from the command prompt, either command.com in Windows 9x/Me or cmd.exe in Windows 2000/XP. The command prompt can be found in the Start Menu (Accessories).
wget.exe must be placed in your path (e.g. c:\windows)
Hope this helps!
~David
On 2/22/07, jared microcosm11@msn.com wrote:
Thanks for this. Unfortunately I have no idea what to do with
it, as I have no knowledge of HTML or coding--unless it has patch cables ;-)
Thanks, everyone, for the answers! Especially David for taking the time to explain wget. I successfully retrieved the workshop files.
Much appreciated!
jared
-----Original Message----- From: David Powers [mailto:cyborgk@gmail.com] Sent: Friday, February 23, 2007 4:07 PM To: jared Cc: pd-list@iem.at Subject: Re: [PD] PD Workshop files
Hi, "wget" is a Linux/Unix command line program, for downloading files. You can get a Windows binary version here: http://users.ugent.be/~bpuype/wget/
Rename the file to "wget.exe" and put it in the directory "C:/WINDOWS"
To test if its installed, open a command prompt and type: wget -h | more
Then to retrieve the files after you install, use the "cd" command to change directories to the place where you want to download the files. Then type the command that Frank listed into a command line prompt (or try the command below**): wget --mirror --no-parent https://www.cs.tcd.ie/~wardn1/PD_workshop/
**Try this command, Frank's version was giving me a certificate error. The following should work instead (all on one line): wget --mirror --no-parent --no-check-certificate https://www.cs.tcd.ie/~wardn1/PD_workshop/
*** From the webpage documentation *** Usage
wget is a command line program. You start it from the command prompt, either command.com in Windows 9x/Me or cmd.exe in Windows 2000/XP. The command prompt can be found in the Start Menu (Accessories).
wget.exe must be placed in your path (e.g. c:\windows)
Hope this helps!
~David
On 2/22/07, jared microcosm11@msn.com wrote:
Thanks for this. Unfortunately I have no idea what to do with
it, as I have no knowledge of HTML or coding--unless it has patch cables ;-)
Hello all,
I'm using wget to try and download the tutorial files here:
http://pure-data.cvs.sourceforge.net/pure-data/doc/tutorials/
Does anyone know what I have to type into the command line to download successfully?
Thanks all!
jared
-----Original Message----- From: David Powers [mailto:cyborgk@gmail.com] Sent: Friday, February 23, 2007 4:07 PM To: jared Cc: pd-list@iem.at Subject: Re: [PD] PD Workshop files
Hi, "wget" is a Linux/Unix command line program, for downloading files. You can get a Windows binary version here: http://users.ugent.be/~bpuype/wget/
Rename the file to "wget.exe" and put it in the directory "C:/WINDOWS"
To test if its installed, open a command prompt and type: wget -h | more
Then to retrieve the files after you install, use the "cd" command to change directories to the place where you want to download the files. Then type the command that Frank listed into a command line prompt (or try the command below**): wget --mirror --no-parent https://www.cs.tcd.ie/~wardn1/PD_workshop/
**Try this command, Frank's version was giving me a certificate error. The following should work instead (all on one line): wget --mirror --no-parent --no-check-certificate https://www.cs.tcd.ie/~wardn1/PD_workshop/
*** From the webpage documentation *** Usage
wget is a command line program. You start it from the command prompt, either command.com in Windows 9x/Me or cmd.exe in Windows 2000/XP. The command prompt can be found in the Start Menu (Accessories).
wget.exe must be placed in your path (e.g. c:\windows)
Hope this helps!
~David
On 2/22/07, jared microcosm11@msn.com wrote:
Thanks for this. Unfortunately I have no idea what to do with
it, as I have no knowledge of HTML or coding--unless it has patch cables ;-)
jared wrote:
Hello all,
I'm using wget to try and download the tutorial files here:
http://pure-data.cvs.sourceforge.net/pure-data/doc/tutorials/
Does anyone know what I have to type into the command line to download successfully?
have you tried
"wget -r http://pure-data.cvs.sourceforge.net/pure-data/doc/tutorials/"
and
"wget --help"
or "wget /h" (i don't know, i am not on windows)
mfg,.adr IOhannes
Yeah, I've tried those and several others. Thanks anyway.
jared
-----Original Message----- From: IOhannes m zmoelnig [mailto:zmoelnig@iem.at] Sent: Saturday, March 03, 2007 4:02 PM To: jared Cc: pd-list@iem.at Subject: Re: [PD] PD Workshop files
jared wrote:
Hello all,
I'm using wget to try and download the tutorial files here:
http://pure-data.cvs.sourceforge.net/pure-data/doc/tutorials/
Does anyone know what I have to type into the command line to download successfully?
have you tried
"wget -r http://pure-data.cvs.sourceforge.net/pure-data/doc/tutorials/"
and
"wget --help"
or "wget /h" (i don't know, i am not on windows)
mfg,.adr IOhannes
jared wrote:
Hello all,
I'm using wget to try and download the tutorial files here:
http://pure-data.cvs.sourceforge.net/pure-data/doc/tutorials/
Does anyone know what I have to type into the command line to download successfully?
and i forgot 2 links: http://www.gnu.org/software/wget/faq.html and the all-wise trash heap: http://www.google.com/search?q=wget+directory
btw, i really recommend that you bookmark a link to http://www.google.com/ as it is certainly a valuable resource of information in the internet.
mfga.dsr IOhannes
and i forgot 2 links: http://www.gnu.org/software/wget/faq.html and the all-wise trash heap: http://www.google.com/search?q=wget+directory
I've checked the faq. No luck.
btw, i really recommend that you bookmark a link to http://www.google.com/ as it is certainly a valuable resource of information in the internet.
Yeah, I've heard of a little company called google....it's my
default homepage ;-)
Thanks anyway IOhannes.
Best,
Jared
jared wrote:
and i forgot 2 links: http://www.gnu.org/software/wget/faq.html and the all-wise trash heap: http://www.google.com/search?q=wget+directory
I've checked the faq. No luck.
so what is your problem then?
if it is only missing luck, i suggest investigating on magic (like four-leaf clovers) :-)
btw, i would suggest using CVS to get the desired directories anyhow. this will make updating much easier. see the http://puredata.info for more information on how to do that. a good w32 client (imho) is tortoiseCVS.
mfg.asdr IOhannes
On Thu, 2007-02-22 at 21:35 +0100, Frank Barknecht wrote:
This is possible a bit easier with this:
$ wget --mirror --no-parent https://www.cs.tcd.ie/~wardn1/PD_workshop/
You may want to delete some index-files afterwards.
FWIW, only yesterday I downloaded all of the mailing list attachments from the archives with:
wget -m -nd -np -R *.htm* http://lists.puredata.info/pipermail/pd-list/attachments/
I plan to write a little script to sort them in some way. I can then make the files and the script available on puredata.info. Could be a useful resource...
Jamie
Hi,
None of those files are actually mine. All credit must go to Derek
Holzer and Sara Kolzer for putting the collection together. I got
them on a cd at a workshop given by them a couple of years ago and
popped them up there for some students.
Regards
Nick
On 22 Feb 2007, at 20:35, Frank Barknecht wrote:
Hallo, alejo d hat gesagt: // alejo d wrote:
try wget, no need to download expiring and full of adverts
malware, dunno if windows has wget (?):Google "wget for windows" and you will find plenty.
wget --secure-protocol=auto --no-check-certificate --force-html --no-directories --recursive --level=0 --accept .pd https://www.cs.tcd.ie/~wardn1/PD_workshop/01.pd-control/
This is possible a bit easier with this:
$ wget --mirror --no-parent https://www.cs.tcd.ie/~wardn1/PD_workshop/
You may want to delete some index-files afterwards.
Ciao
Frank Barknecht _ ______footils.org_ __goto10.org__
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/ listinfo/pd-list
Hi,
None of those files are actually mine. All credit must go to
Derek
Holzer and Sara Kolzer for putting the collection together. I
got
them on a cd at a workshop given by them a couple of years ago
and
popped them up there for some students.
Regards
Nick
Well, thanks Derek and Sara! And Nick for popping them up there!
jared
Excuse me Sara, Typo Its Sara Kolster
On 23 Feb 2007, at 18:31, jared wrote:
Hi, None of those files are actually mine. All credit must go to Derek Holzer and Sara Kolzer for putting the collection together. I got them on a cd at a workshop given by them a couple of years ago and popped them up there for some students. Regards Nick
Well, thanks Derek and Sara! And Nick for popping them up there!
jared
Hallo!
I'm in the middle of downloading the PD Workshop files from:
https://www.cs.tcd.ie/~wardn1/PD_workshop/
Is there, by chance, a zip file floating around that has all of the contents of this workshop? I'm 30 minutes into downloading them manually and I've only finished the 'control' section!
I downloaded the whole directory structure with wget !
Very nice workshop material - who made this ? Can I put these file on puredata.org?
LG Georg
I downloaded the whole directory structure with wget !
Sorry, but what is wget? Where did you get it?
Very nice workshop material - who made this ?
Nicholas Ward Job Title:Part-time Lecturer (MScMM)
Qualifications: M.A. Music Technology, M.Sc. Multimedia Systems
e-mail: Nicholas dot Ward at cs.tcd.ie
https://www.cs.tcd.ie/Nicholas.Ward/
Thanks Georg!
Jared
hi
jared wrote:
I downloaded the whole directory structure with wget !
Sorry, but what is wget? Where did you get it?
how about asking the all-wise trash heap? http://www.google.at/search?q=wget
mfg.uo.,dfg IOhannes
What would be great is if there would be a nice php script that could automate that process, and create a downloadable zip file snapshot of the current workshop files.
I'm not the one to do it though, but it seems do-able!
~Kyle
On 2/22/07, Georg Holzmann grhPD@gmx.at wrote:
Hallo!
I'm in the middle of downloading the PD Workshop files from:
https://www.cs.tcd.ie/~wardn1/PD_workshop/
Is there, by chance, a zip file floating around that has all of the contents of this workshop? I'm 30 minutes into downloading them manually and I've only finished the 'control' section!
I downloaded the whole directory structure with wget !
Very nice workshop material - who made this ? Can I put these file on puredata.org?
LG Georg
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Hallo!
What would be great is if there would be a nice php script that could automate that process, and create a downloadable zip file snapshot of the current workshop files.
what do you mean with "current workshop files" ? Is this collection a work in progress ? (and this process was automated, I didn't download hundrets of files ... ;)
LG Georg
PS: for the question in the last mail: http://en.wikipedia.org/wiki/Wget
Oops, you're right, I thought it was referring to the wiki structure of the pure-data.org site.
It would still be great to have the 'download whole directory as a zip' option on there though (even though it may take extra space).
~Kyle
On 2/22/07, Georg Holzmann grhPD@gmx.at wrote:
Hallo!
What would be great is if there would be a nice php script that could automate that process, and create a downloadable zip file snapshot of the current workshop files.
what do you mean with "current workshop files" ? Is this collection a work in progress ? (and this process was automated, I didn't download hundrets of files ... ;)
LG Georg
PS: for the question in the last mail: http://en.wikipedia.org/wiki/Wget
Hello all,
I've just downloaded fluid~pd_darwin .rar file. It contains two files: fluid~help.pd and fluid~.pd_darwin.
What kind of file is the .pd Darwin? Where should I put it?
What about the fluid help file? Do I put it here?--> pd\doc\5.reference
I'm not sure where to put the help files because there is the reference folder but there are also many help files in the extra folder as well. What is the difference?
Thanks once again!
Jared
hi
jared wrote:
Hello all,
I've just downloaded fluid~pd_darwin .rar file. It contains two files: fluid~help.pd and fluid~.pd_darwin.
What kind of file is the .pd Darwin? Where should I put it?
it is a dynamically linked library for os-x (the kernel of os-x is called "darwin")
What about the fluid help file? Do I put it here?--> pd\doc\5.reference
according to your syntax of file-paths i assume that you are on windows. it would be nice if you could make this explicit. you will not be able to use a darwin binary on windows, you will need the windows binary. it should be named <something>.dll (at least on pd<=0.40; i have _no_ idea which pd version you are running)
once you have the correct binary, put both the binary (or abstraction) and the help-file into a path where pd will find it.
one _standard_ path for this is the extra/ folder. but you can put it whereever you like as long as you add this path to your private search paths in the File->Path... menu.
I'm not sure where to put the help files because there is the reference folder but there are also many help files in the extra folder as well. What is the difference?
the reference section is for pd "internals"; the "extra" section is for objects that are not compiled into pd (e.g. 3rd party modules). you might find help-patches for externals in the reference section, but this is only for legacy reasons (there was a time, when pd would find help-patches only in the reference folder)
mfga.sdr IOhannes
On 22/02/2007, at 7.02, jared wrote:
What kind of file is the .pd Darwin? Where should I put it?
It's the external file for darwin - ie. mac os x. I take it your on a
windows system, so you have little use for it. Instead you need
something like a file called fluid~.dll
The external files need to be in a place where Pd can find them. If
you put them in the extra folder Pd will find them. But you can put
them anywhere and make Pd look for it there by changing the path
dialog accordingly.
What about the fluid help file? Do I put it here?--> pd\doc \5.reference
I'm not sure where to put the help files because there is the
reference folder but there are also many help files in the extra folder as well. What is the difference?
If you put it in 5.reference folder you can get to it from the help
browser. If you put it in the extra folder (that is next to the
external file) you can open it by right-clicking an [fluid~] object
and choose 'help'. So puting it in both places would maybe give the
best enduser experience. Other then that, there is something as a
helpfilepath that can be set.
There is some info here: http://puredata.info/docs/developer/Libdir
Steffen wrote:
On 22/02/2007, at 7.02, jared wrote:
If you put it in 5.reference folder you can get to it from the help
browser. If you put it in the extra folder (that is next to the
external file) you can open it by right-clicking an [fluid~] object
and choose 'help'. So puting it in both places would maybe give the
best enduser experience.
i would definitely NOT recommend putting the file in 2 places. this will lead to inconsistencies over time and you will never know what is going on. and nobody will be able to help you ;-(
btw, 'help''-clicking on [object] will open the help-patch in the reference-folder too, so this is not the reason why you should put it into ./extra
as for the help-browser not being able to browse extra/: this is imo a bug in the help-browser and should be fixed there. please send petitions to the upstream authors to fix it.
mfg.adsr IOhannes
PS: i accidentally deleted this in my first answer: please always start new threads if you start new threads. the mailing list's name is simple enough and you can always put it into your addressbook if you don't care remembering it. more information can be found at http://puredata.info/community/lists/netiquette#threads
mfg.asdr IOhannes
On 22/02/2007, at 11.02, IOhannes m zmoelnig wrote:
Steffen wrote:
On 22/02/2007, at 7.02, jared wrote:
If you put it in 5.reference folder you can get to it from the help browser. If you put it in the extra folder (that is next to the external file) you can open it by right-clicking an [fluid~] object and choose 'help'. So puting it in both places would maybe give the best enduser experience.
i would definitely NOT recommend putting the file in 2 places. this will lead to inconsistencies over time and you will never know
what is going on. and nobody will be able to help you ;-(
I agree it's dirty, and that it may lead to inconsistencies over
time. But for example a diff could help out locating problems. I
think i'd go for symlinks myself though, just not sure if that's
doable on win32.
btw, 'help''-clicking on [object] will open the help-patch in the reference-folder too, so this is not the reason why you should put it into ./extra
Thanks for clarifying! I was in fact hoping to provoke (in the
positive sense) a reply like this, to gain knowledge my self.
as for the help-browser not being able to browse extra/: this is imo a bug in the help-browser and should be fixed there. please send
petitions to the upstream authors to fix it.
Not to be anal, but i think it is more like a design issue. But
having a 6.extra(-references) that shows the help files from the
extra folder in a organized manner, and leave internal help files in
5.references might be nice wrt separation. And maybe have the PDDP
all-about-* files somewhere else too. But thats just my taste
thursday morning.
Best, Steffen
Thanks for the help guys! Makes sense now.
Best,
Jared
-----Original Message----- From: pd-list-bounces@iem.at [mailto:pd-list-bounces@iem.at] On Behalf Of IOhannes m zmoelnig Sent: Thursday, February 22, 2007 10:03 AM To: PD-list@iem.at Subject: Re: [PD] a couple of questions
Steffen wrote:
On 22/02/2007, at 7.02, jared wrote:
If you put it in 5.reference folder you can get to it from the help
browser. If you put it in the extra folder (that is next to the
external file) you can open it by right-clicking an [fluid~] object
and choose 'help'. So puting it in both places would maybe give the
best enduser experience.
i would definitely NOT recommend putting the file in 2 places. this will lead to inconsistencies over time and you will never know what is going on. and nobody will be able to help you ;-(
btw, 'help''-clicking on [object] will open the help-patch in the reference-folder too, so this is not the reason why you should put it into ./extra
as for the help-browser not being able to browse extra/: this is imo a bug in the help-browser and should be fixed there. please send petitions to the upstream authors to fix it.
mfg.adsr IOhannes
PS: i accidentally deleted this in my first answer: please always start new threads if you start new threads. the mailing list's name is simple enough and you can always put it into your addressbook if you don't care remembering it. more information can be found at http://puredata.info/community/lists/netiquette#threads
mfg.asdr IOhannes
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
It's the external file for darwin - ie. mac os x. I take it your on a
windows system, so you have little use for it. Instead you need
something like a file called fluid~.dll
I can't seem to find a .dll file for fluid~. I've checked http://pure-data.cvs.sourceforge.net/pure-data/externals/footils/fluid/ but can only seem to find fluid.pd and fluid~help.pd. Where else might I look?
Thanks much,
jared
On 23/02/2007, at 19.01, jared wrote:
I can't seem to find a .dll file for fluid~. I've checked http:// pure-data.cvs.sourceforge.net/pure-data/externals/footils/fluid/
but can only seem to find fluid.pd and fluid~help.pd. Where else
might I look?
In Pd-extended 0.39.2 test 7 build for windows. See: http://at.or.at/ hans/pd/installers.html
jared wrote:
It's the external file for darwin - ie. mac os x. I take it your on a
windows system, so you have little use for it. Instead you need
something like a file called fluid~.dll
I can't seem to find a .dll file for fluid~. I've checked http://pure-data.cvs.sourceforge.net/pure-data/externals/footils/fluid/
there are (hopefully) no binaries at this site, as it is a place to organize source-code.
but can only seem to find fluid.pd and fluid~help.pd. Where else might I look?
isn't it included in pd-extended? (i might be wrong though)
fmng.sdr IOhannes
I can't seem to find a .dll file for fluid~. I've checked http:// pure-data.cvs.sourceforge.net/pure-data/externals/footils/fluid/
but can only seem to find fluid.pd and fluid~help.pd. Where else
might I look?
In Pd-extended 0.39.2 test 7 build for windows. See: http://at.or.at/
hans/pd/installers.html
thanks.
I can't seem to find a .dll file for fluid~. I've checked http://pure-data.cvs.sourceforge.net/pure-data/externals/footils/fluid
there are (hopefully) no binaries at this site, as it is a place to organize source-code.
Good to know. Thanks.
jared
Hallo, Chris McCormick hat gesagt: // Chris McCormick wrote:
Can't you use [osc~]'s right inlet to accomplish that?
For one, it's a message inlet, but more importantly: The channels of a FFT come as (the first half of the) samples in a sample block. You'd need to filter out the single samples to get control data for a single osc and that is very unpractical. But of course it's interesting to try, maybe just for a handful of oscillators.
Frank Barknecht _ ______footils.org_ __goto10.org__