Re: [PD] convolution using pd-vanilla

2014-05-08 Thread Alexandre Torres Porres
and it took me quite some time to figure it out :)


2014-05-06 10:55 GMT-03:00 Oli Larkin olilar...@googlemail.com:

 thanks everyone ... Alexandre that is just what i was looking for


 On 6 May 2014, at 06:09, Alexandre Torres Porres wrote:

  I did one and shared on the list
 
  you can check it at:
 https://drive.google.com/file/d/0B3AoiT0xk8fnNU9PRHdldVVFbU0/edit?usp=sharing
 
 
  2014-05-05 16:41 GMT-03:00 katja katjavet...@gmail.com:
  Brute force time domain convolution for small kernel can be done with
  [fexpr~]. For zero phase filter kernels, fast convolution in Pd is
  relatively simple. Multiply real and imaginary part of the signal's
  spectrum with the filter's spectrum while using four times overlap and
  Hann windowing before FFT and after IFFT, and normalize. Pd's FFT
  routines assume x[0] at the start of the filter kernel, not at the
  center, so you have to rotate your zero phase filter kernel before
  taking it's Fourier Transform.
 
  Katja
 
  On Mon, May 5, 2014 at 8:49 PM, david medine dmed...@ucsd.edu wrote:
   For the FFT based convolution, you could easily modify the example
 patch
   I06.timbre.stamp.pd to do straight up convolution in the frequency
 domain. I
   wouldn't know how to do it in the time domain without an extern or a
 lot of
   painstaking work. It might be a nice thing to have, though.
  
   I can tell you, though, that the frequency domain method will out
 perform
   the time domain in terms of CPU usage. But, since you are windowing
 there
   will be a latency. Apart from that, the output is identical by both
 methods.
  
   y(n) = x(n) * g(n)
   Y(k) = X(k)G(k), y(n) = IDFT(Y(k))
  
   where g(n) is the impulse response, X(k) is the discrete Fourier
 transform
   of x(n) and * is the convolution operation.
  
  
   On 05/05/2014 09:33 AM, Oli Larkin wrote:
  
   hi,
  
   is anyone aware of an example of both a brute force time domain (e.g.
   buffir~ in Max) and an FFT-based fast convolution patch in
 pd-vanilla? I
   would like to do a comparison of the two. Can be using a small IR,
 just for
   demo purposes.
  
   cheers,
  
   Oli
  
   ___
   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
 
  ___
  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


___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] convolution using pd-vanilla

2014-05-06 Thread Oli Larkin
thanks everyone ... Alexandre that is just what i was looking for


On 6 May 2014, at 06:09, Alexandre Torres Porres wrote:

 I did one and shared on the list
 
 you can check it 
 at:https://drive.google.com/file/d/0B3AoiT0xk8fnNU9PRHdldVVFbU0/edit?usp=sharing
 
 
 2014-05-05 16:41 GMT-03:00 katja katjavet...@gmail.com:
 Brute force time domain convolution for small kernel can be done with
 [fexpr~]. For zero phase filter kernels, fast convolution in Pd is
 relatively simple. Multiply real and imaginary part of the signal's
 spectrum with the filter's spectrum while using four times overlap and
 Hann windowing before FFT and after IFFT, and normalize. Pd's FFT
 routines assume x[0] at the start of the filter kernel, not at the
 center, so you have to rotate your zero phase filter kernel before
 taking it's Fourier Transform.
 
 Katja
 
 On Mon, May 5, 2014 at 8:49 PM, david medine dmed...@ucsd.edu wrote:
  For the FFT based convolution, you could easily modify the example patch
  I06.timbre.stamp.pd to do straight up convolution in the frequency domain. I
  wouldn't know how to do it in the time domain without an extern or a lot of
  painstaking work. It might be a nice thing to have, though.
 
  I can tell you, though, that the frequency domain method will out perform
  the time domain in terms of CPU usage. But, since you are windowing there
  will be a latency. Apart from that, the output is identical by both methods.
 
  y(n) = x(n) * g(n)
  Y(k) = X(k)G(k), y(n) = IDFT(Y(k))
 
  where g(n) is the impulse response, X(k) is the discrete Fourier transform
  of x(n) and * is the convolution operation.
 
 
  On 05/05/2014 09:33 AM, Oli Larkin wrote:
 
  hi,
 
  is anyone aware of an example of both a brute force time domain (e.g.
  buffir~ in Max) and an FFT-based fast convolution patch in pd-vanilla? I
  would like to do a comparison of the two. Can be using a small IR, just for
  demo purposes.
 
  cheers,
 
  Oli
 
  ___
  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
 
 ___
 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


___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


[PD] convolution using pd-vanilla

2014-05-05 Thread Oli Larkin
hi,

is anyone aware of an example of both a brute force time domain (e.g. buffir~ 
in Max) and an FFT-based fast convolution patch in pd-vanilla? I would like to 
do a comparison of the two. Can be using a small IR, just for demo purposes.

cheers,

Oli

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] convolution using pd-vanilla

2014-05-05 Thread david medine
For the FFT based convolution, you could easily modify the example patch 
I06.timbre.stamp.pd to do straight up convolution in the frequency 
domain. I wouldn't know how to do it in the time domain without an 
extern or a lot of painstaking work. It might be a nice thing to have, 
though.


I can tell you, though, that the frequency domain method will out 
perform the time domain in terms of CPU usage. But, since you are 
windowing there will be a latency. Apart from that, the output is 
identical by both methods.


y(n) = x(n) * g(n)
Y(k) = X(k)G(k), y(n) = IDFT(Y(k))

where g(n) is the impulse response, X(k) is the discrete Fourier 
transform of x(n) and * is the convolution operation.


On 05/05/2014 09:33 AM, Oli Larkin wrote:

hi,

is anyone aware of an example of both a brute force time domain (e.g. buffir~ 
in Max) and an FFT-based fast convolution patch in pd-vanilla? I would like to 
do a comparison of the two. Can be using a small IR, just for demo purposes.

cheers,

Oli

___
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


Re: [PD] convolution using pd-vanilla

2014-05-05 Thread katja
Brute force time domain convolution for small kernel can be done with
[fexpr~]. For zero phase filter kernels, fast convolution in Pd is
relatively simple. Multiply real and imaginary part of the signal's
spectrum with the filter's spectrum while using four times overlap and
Hann windowing before FFT and after IFFT, and normalize. Pd's FFT
routines assume x[0] at the start of the filter kernel, not at the
center, so you have to rotate your zero phase filter kernel before
taking it's Fourier Transform.

Katja

On Mon, May 5, 2014 at 8:49 PM, david medine dmed...@ucsd.edu wrote:
 For the FFT based convolution, you could easily modify the example patch
 I06.timbre.stamp.pd to do straight up convolution in the frequency domain. I
 wouldn't know how to do it in the time domain without an extern or a lot of
 painstaking work. It might be a nice thing to have, though.

 I can tell you, though, that the frequency domain method will out perform
 the time domain in terms of CPU usage. But, since you are windowing there
 will be a latency. Apart from that, the output is identical by both methods.

 y(n) = x(n) * g(n)
 Y(k) = X(k)G(k), y(n) = IDFT(Y(k))

 where g(n) is the impulse response, X(k) is the discrete Fourier transform
 of x(n) and * is the convolution operation.


 On 05/05/2014 09:33 AM, Oli Larkin wrote:

 hi,

 is anyone aware of an example of both a brute force time domain (e.g.
 buffir~ in Max) and an FFT-based fast convolution patch in pd-vanilla? I
 would like to do a comparison of the two. Can be using a small IR, just for
 demo purposes.

 cheers,

 Oli

 ___
 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

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] convolution using pd-vanilla

2014-05-05 Thread Alexandre Torres Porres
I did one and shared on the list

you can check it at:
https://drive.google.com/file/d/0B3AoiT0xk8fnNU9PRHdldVVFbU0/edit?usp=sharing


2014-05-05 16:41 GMT-03:00 katja katjavet...@gmail.com:

 Brute force time domain convolution for small kernel can be done with
 [fexpr~]. For zero phase filter kernels, fast convolution in Pd is
 relatively simple. Multiply real and imaginary part of the signal's
 spectrum with the filter's spectrum while using four times overlap and
 Hann windowing before FFT and after IFFT, and normalize. Pd's FFT
 routines assume x[0] at the start of the filter kernel, not at the
 center, so you have to rotate your zero phase filter kernel before
 taking it's Fourier Transform.

 Katja

 On Mon, May 5, 2014 at 8:49 PM, david medine dmed...@ucsd.edu wrote:
  For the FFT based convolution, you could easily modify the example patch
  I06.timbre.stamp.pd to do straight up convolution in the frequency
 domain. I
  wouldn't know how to do it in the time domain without an extern or a lot
 of
  painstaking work. It might be a nice thing to have, though.
 
  I can tell you, though, that the frequency domain method will out perform
  the time domain in terms of CPU usage. But, since you are windowing there
  will be a latency. Apart from that, the output is identical by both
 methods.
 
  y(n) = x(n) * g(n)
  Y(k) = X(k)G(k), y(n) = IDFT(Y(k))
 
  where g(n) is the impulse response, X(k) is the discrete Fourier
 transform
  of x(n) and * is the convolution operation.
 
 
  On 05/05/2014 09:33 AM, Oli Larkin wrote:
 
  hi,
 
  is anyone aware of an example of both a brute force time domain (e.g.
  buffir~ in Max) and an FFT-based fast convolution patch in pd-vanilla? I
  would like to do a comparison of the two. Can be using a small IR, just
 for
  demo purposes.
 
  cheers,
 
  Oli
 
  ___
  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

 ___
 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