[PD] Moving Sum object?

Christof Ressi christof.ressi at gmx.at
Tue Dec 8 19:24:56 CET 2015


>> we have to clean the delay buffers somehow
>> Now, can you do that in pd?

That's a good question! 

What you could do is to build a custom delay line with tables and then sum them as you need.

In meantime: Here's a classic FIR solution for a moving average filter (the maximum size is hard coded to 256, but you can change this). Here you can set the number of samples dynamically with clearly less distortion. Note though, that this kind of filter becomes more and more computationally expensive for large numbers of samples (anything above 256), because FIR~ (from iemlib) performs time domain convolution.

The recursive version with [z~] and [rpole~] is certainly the cheapest and fastest of all, but there's nothing like a free meal :-).

Cheers
 
 

Gesendet: Dienstag, 08. Dezember 2015 um 19:10 Uhr
Von: "Alexandre Torres Porres" <porres at gmail.com>
An: "Christof Ressi" <christof.ressi at gmx.at>
Cc: "pd-list at lists.iem.at" <pd-list at lists.iem.at>
Betreff: Re: Re: Re: Re: [PD] Moving Sum object?

> I'm not sure why the other patches don't work but this does.
 
I got it, you'd need to clear the other delay buffers as well, not the feedback only!
 
so we can do this with fexpr~ for up half the block size, we could expand this limit with delay lines, but if we want to do it with delay lines, we have to clean the delay buffers somehow
 
Now, can you do that in pd?
 
2015-12-08 15:54 GMT-02:00 Alexandre Torres Porres <porres at gmail.com>:
I just wish we could make it work over the half block limit, and I'm not sure why the other patches don't work but this does.

 
2015-12-08 15:53 GMT-02:00 Alexandre Torres Porres <porres at gmail.com[porres at gmail.com]>:
here's a better patch 

 
2015-12-08 15:44 GMT-02:00 Alexandre Torres Porres <porres at gmail.com[porres at gmail.com]>:

I've made it work with this design in fexpr, but it's only good up to half the block size

 
 
2015-12-08 15:21 GMT-02:00 Alexandre Torres Porres <porres at gmail.com[porres at gmail.com]>:
As I say in the attached patch; problem is that whenever you change the number of samples without clearing or clearing the filter, it goes crazy...
 
not sure how to fix this.
 
cheers
 

 
2015-12-08 10:40 GMT-02:00 Christof Ressi <christof.ressi at gmx.at[christof.ressi at gmx.at]>:the filter is working perfectly well for me. send me your testing patch.
 
 

Gesendet: Dienstag, 08. Dezember 2015 um 13:36 Uhr
Von: "Alexandre Torres Porres" <porres at gmail.com[porres at gmail.com]>
An: "Christof Ressi" <christof.ressi at gmx.at[christof.ressi at gmx.at]>
Cc: "pd-list at lists.iem.at[pd-list at lists.iem.at]" <pd-list at lists.iem.at[pd-list at lists.iem.at]>
Betreff: Re: Re: Re: [PD] Moving Sum object?

not sure this is working either, I'm getting negative values when testing it with count~ (only positive values)
 
2015-12-08 10:30 GMT-02:00 Christof Ressi <christof.ressi at gmx.at[christof.ressi at gmx.at]>:It certainly is and I have no idea how that happened :-D. but it has no effect whatsoever. just delete the connection.
 

Gesendet: Dienstag, 08. Dezember 2015 um 13:20 Uhr
Von: "Alexandre Torres Porres" <porres at gmail.com[porres at gmail.com][porres at gmail.com[porres at gmail.com]]>
An: "Christof Ressi" <christof.ressi at gmx.at[christof.ressi at gmx.at][christof.ressi at gmx.at[christof.ressi at gmx.at]]>
Cc: "pd-list at lists.iem.at[pd-list at lists.iem.at][pd-list at lists.iem.at[pd-list at lists.iem.at]]" <pd-list at lists.iem.at[pd-list at lists.iem.at][pd-list at lists.iem.at[pd-list at lists.iem.at]]>
Betreff: Re: Re: [PD] Moving Sum object?

what was the purpose of the output from the max object into rpole~ in your patch? that's a bug, right?
 
cheers
 
2015-12-08 9:50 GMT-02:00 Christof Ressi <christof.ressi at gmx.at[christof.ressi at gmx.at][christof.ressi at gmx.at[christof.ressi at gmx.at]]>:

Or are you talking about a object that outputs the sum as a message? In that case just use [cmavg~] or [maverage~] with [snapshot~]. If you just want the sum of a signal vector, there are some objects in zexy that will do the job, like [avg~] or [pack~]+[sum]
 

Gesendet: Dienstag, 08. Dezember 2015 um 12:41 Uhr
Von: "Christof Ressi" <christof.ressi at gmx.at[christof.ressi at gmx.at][christof.ressi at gmx.at[christof.ressi at gmx.at]][christof.ressi at gmx.at[christof.ressi at gmx.at][christof.ressi at gmx.at[christof.ressi at gmx.at]]]>

An: "Alexandre Torres Porres" <porres at gmail.com[porres at gmail.com][porres at gmail.com[porres at gmail.com]][porres at gmail.com[porres at gmail.com][porres at gmail.com[porres at gmail.com]]]>
Cc: "pd-list at lists.iem.at[pd-list at lists.iem.at][pd-list at lists.iem.at[pd-list at lists.iem.at]][pd-list at lists.iem.at[pd-list at lists.iem.at][pd-list at lists.iem.at[pd-list at lists.iem.at]]]" <pd-list at lists.iem.at[pd-list at lists.iem.at][pd-list at lists.iem.at[pd-list at lists.iem.at]][pd-list at lists.iem.at[pd-list at lists.iem.at][pd-list at lists.iem.at[pd-list at lists.iem.at]]]>
Betreff: Re: [PD] Moving Sum object?

Well, a linear moving average filter is just something that  sums a series of samples. If you don't want the average but rather the true sum, either multiply the output by the number of samples or take my abstraction and get rid of the [/~] object.
 

Gesendet: Dienstag, 08. Dezember 2015 um 12:21 Uhr
Von: "Alexandre Torres Porres" <porres at gmail.com[porres at gmail.com][porres at gmail.com[porres at gmail.com]][porres at gmail.com[porres at gmail.com][porres at gmail.com[porres at gmail.com]]]>
An: "Christof Ressi" <christof.ressi at gmx.at[christof.ressi at gmx.at][christof.ressi at gmx.at[christof.ressi at gmx.at]][christof.ressi at gmx.at[christof.ressi at gmx.at][christof.ressi at gmx.at[christof.ressi at gmx.at]]]>
Cc: "Matt Barber" <brbrofsvl at gmail.com[brbrofsvl at gmail.com][brbrofsvl at gmail.com[brbrofsvl at gmail.com]][brbrofsvl at gmail.com[brbrofsvl at gmail.com][brbrofsvl at gmail.com[brbrofsvl at gmail.com]]]>, "pd-list at lists.iem.at[pd-list at lists.iem.at][pd-list at lists.iem.at[pd-list at lists.iem.at]][pd-list at lists.iem.at[pd-list at lists.iem.at][pd-list at lists.iem.at[pd-list at lists.iem.at]]]" <pd-list at lists.iem.at[pd-list at lists.iem.at][pd-list at lists.iem.at[pd-list at lists.iem.at]][pd-list at lists.iem.at[pd-list at lists.iem.at][pd-list at lists.iem.at[pd-list at lists.iem.at]]]>
Betreff: Re: Re: [PD] Moving Sum object?

cool guys, but i was asking for an average "sum" object :)
 
2015-12-08 9:19 GMT-02:00 Christof Ressi <christof.ressi at gmx.at[christof.ressi at gmx.at][christof.ressi at gmx.at[christof.ressi at gmx.at]]>:Hey Matt,

there's no need for the feedback path (and therefore no [block~ 1] ;-))

Just use the following formula:

y[n] = (y[n-1] - x[n-k])/k

where k is the number of samples to be averaged (must be at least 1). see the patch I sent to Alex in my last mail.
it uses [rpole~ 1] for the y[n-1] part and [z~ k] for the x[n-k] part (you can replace the latter one with a [delwrite~] [delread~] pair to make it purely vanilla).

The funny thing about linear moving average filters is, that although it can be implemented as a recursive filter (like in both our patches), it is still a FIR filter (and therefore it defeats the notion that recursive filters are always IIR filters). The impulse response is just a rectangular pulse and therefore finite.
 
 

Gesendet: Dienstag, 08. Dezember 2015 um 07:13 Uhr
Von: "Matt Barber" <brbrofsvl at gmail.com[brbrofsvl at gmail.com][brbrofsvl at gmail.com[brbrofsvl at gmail.com]]>
An: "Alexandre Torres Porres" <porres at gmail.com[porres at gmail.com][porres at gmail.com[porres at gmail.com]]>
Cc: "pd-list at lists.iem.at[pd-list at lists.iem.at][pd-list at lists.iem.at[pd-list at lists.iem.at]]" <pd-list at lists.iem.at[pd-list at lists.iem.at][pd-list at lists.iem.at[pd-list at lists.iem.at]]>
Betreff: Re: [PD] Moving Sum object?

Something like this? Almost completely untestsed. :D
 
On Tue, Dec 8, 2015 at 12:20 AM, Alexandre Torres Porres <porres at gmail.com[porres at gmail.com][porres at gmail.com[porres at gmail.com]]> wrote:

Talking about averages I wonder if we have an object that sums (in a moving average fashion) a series of samples
 
cheers
_______________________________________________
Pd-list at lists.iem.at[Pd-list at lists.iem.at][Pd-list at lists.iem.at[Pd-list at lists.iem.at]][Pd-list at lists.iem.at[Pd-list at lists.iem.at][Pd-list at lists.iem.at[Pd-list at lists.iem.at]]] mailing list
UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list[http://lists.puredata.info/listinfo/pd-list][http://lists.puredata.info/listinfo/pd-list%5Bhttp://lists.puredata.info/listinfo/pd-list%5D][http://lists.puredata.info/listinfo/pd-list[http://lists.puredata.info/listinfo/pd-list][http://lists.puredata.info/listinfo/pd-list%5Bhttp://lists.puredata.info/listinfo/pd-list%5D]][http://lists.puredata.info/listinfo/pd-list%5Bhttp://lists.puredata.info/listinfo/pd-list%5D%5Bhttp://lists.puredata.info/listinfo/pd-list%5Bhttp://lists.puredata.info/listinfo/pd-list%5D%5D%5Bhttp://lists.puredata.info/listinfo/pd-list%5Bhttp://lists.puredata.info/listinfo/pd-list%5D%5Bhttp://lists.puredata.info/listinfo/pd-list%5Bhttp://lists.puredata.info/listinfo/pd-list%5D%5D%5D]
 _______________________________________________ Pd-list at lists.iem.at[Pd-list at lists.iem.at][Pd-list at lists.iem.at[Pd-list at lists.iem.at]] mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list[http://lists.puredata.info/listinfo/pd-list][http://lists.puredata.info/listinfo/pd-list%5Bhttp://lists.puredata.info/listinfo/pd-list%5D]_______________________________________________[http://lists.puredata.info/listinfo/pd-list[http://lists.puredata.info/listinfo/pd-list][http://lists.puredata.info/listinfo/pd-list%5Bhttp://lists.puredata.info/listinfo/pd-list%5D]_______________________________________________][http://lists.puredata.info/listinfo/pd-list%5Bhttp://lists.puredata.info/listinfo/pd-list%5D%5Bhttp://lists.puredata.info/listinfo/pd-list%5Bhttp://lists.puredata.info/listinfo/pd-list%5D%5D_______________________________________________%5Bhttp://lists.puredata.info/listinfo/pd-list%5Bhttp://lists.puredata.info/listinfo/pd-list%5D%5Bhttp://lists.puredata.info/listinfo/pd-list%5Bhttp://lists.puredata.info/listinfo/pd-list%5D%5D_______________________________________________%5D] Pd-list at lists.iem.at[Pd-list at lists.iem.at[Pd-list at lists.iem.at][Pd-list at lists.iem.at[Pd-list at lists.iem.at]]] mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list[http://lists.puredata.info/listinfo/pd-list][http://lists.puredata.info/listinfo/pd-list[http://lists.puredata.info/listinfo/pd-list]][http://lists.puredata.info/listinfo/pd-list%5Bhttp://lists.puredata.info/listinfo/pd-list%5D%5Bhttp://lists.puredata.info/listinfo/pd-list%5Bhttp://lists.puredata.info/listinfo/pd-list%5D%5D]
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: cmavg_FIR~.pd
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20151208/2d8511b2/attachment.ksh>


More information about the Pd-list mailing list