Namespaces

Variants
Actions

bucket

From Cycling '74 Wiki
(Difference between revisions)
Jump to: navigation, search
(Initial upsert)
(People who looked at/used this object also looked at....)
 
(19 intermediate revisions by 3 users not shown)
Line 2: Line 2:
  
 
==Using the {{maxword|name=bucket}} object==
 
==Using the {{maxword|name=bucket}} object==
 +
 +
The {{maxword|name=bucket}} object implements a [//en.wikipedia.org/wiki/Bucket_brigade bucket brigade] device (in the electronics world, this is sometimes referred to as [//en.wikipedia.org/wiki/Bucket-brigade_device a discrete time-analogue delay line]). As the examples below suggest, it's useful for single-sample delay lines, calculating averages, computing velocity and acceleration, and permutating lists by rotating them.
  
 
=={{maxword|name=bucket}} Tutorials==
 
=={{maxword|name=bucket}} Tutorials==
 +
 +
In the Max tutorial on abstractions, you can find a classic example of why the {{maxword|name=bucket}} object is so useful - [//www.cycling74.com/docs/max6/dynamic/c74_docs.html#basicchapter15 this Max tutorial] demonstrates its use as a single sample delay for number values useful for constructing drawing commands.
  
 
=={{maxword|name=bucket}} Tips and Workarounds==
 
=={{maxword|name=bucket}} Tips and Workarounds==
 +
 +
===Velocity and Acceleration===
 +
 +
Lots of people use the <strong>bucket</strong> object for shifting data in series, it's computationally useful for calculating first and second derivatives for streams of data. The terms "first and second derivative" are math-speak for keeping track of:
 +
 +
* the rate that things are changing (that's what velocity (the first derivative) is - the rate of change in a value over time.
 +
 +
* the ''rate of the rate'' that things are changing - that's what acceleration (the second derivative) is.
 +
 +
[[File:Bucket-in-action.png|550px]]
 +
 +
Here's a patch that does that:
 +
 +
<maxpat>
 +
----------begin_max5_patcher----------
 +
863.3oc4XFrbaBCDF9r8SgJmZmwICRf.bu0mgbrISGLHaqDP3QHbcZl7tWoE
 +
vA2ZrAFC8Pu.dEBs69oesR32lOyZU1AVtE5qnuilM6s4ylAMYZXVk8LqzvCQ
 +
Ig4P2rhxRSYBk0hxmoXGTP6psLjLTwPYqQM+cz1PwF1ihOmyhxDwnXljuOTw
 +
2y9xih5QIgKzOsP.CEopQQQJWjvTfewUMtKTEskK17CIKRUF2d1d2au.4rz2
 +
bC6EXt4pMPOU8R7XHDyV87cjk09bclPIBSYvi9ljGlX8giyJT0d1tt+xMq.6
 +
6saLB47eAi.lbr4cRVtlP5bLSbRXRg.y1L.n5KnmLuz6ymatr3FNGbj6q4xb
 +
0HfcW+flXGiuH1CFOrO..pc0JlzpmYrS.AR0xYPJbkX2RB612DlbzwRcuUL4
 +
OXhvUIrSfw4Ubkih50crx.0haDGHqUZIf0fTXoEIJddBOt+TpZ4HojOXLXgc
 +
BZgSjgSiblRGR53tzw2QONubzS5tjqds70nsQKCplbLUs7oqXBOpXpkRV0wn
 +
i6okrlF3px1rQO38cQJApG4srd04EViZednh6.TO6RtoVCUkqcTCgCtYZH6i
 +
0AmJwff8ScN7W63oiWY1YwF4pXqpNtK9RZDreeqii6Ys5gWjtElDKKDuXxND
 +
8rjw45jg.qd7cuHY7FaxL3kTs.lOcmV31WwR81Y1NvocJKHhaAImkHODJxQO
 +
nO+05dgEpOlz5Bo0IYg2V3rpH5ElBQF318XO3Vf+k3CYP7gL.9byKzLHsS89
 +
mcQ637en1ohOcR639OT6.wC70R+wmJC4jo8SYVdVgLpd3pJLf9HqhY4Jt.Nr
 +
Ui9XNIbiNskGGyDM2CNlma1VFPx4+nmtFNlON4pwio9NhLIwiSWvC9J3IkGu
 +
KSukQ0TjqVNQ0I.Ivbqo0GN5lk..qtJPCltIX6tDO9SV7zI931uIXGGOyTJl
 +
BkMplfAqwXB1uqqXlnIXsmvWKbNoOWkmdAN.AWB+MUd5u4q1ZD3IoK3bxnYm
 +
p+LrxONvV+zR1dpElBa64goGsFAR61AkhS+TJTJsgRgZ6MlJktrUky.UJk6q
 +
Gta2dlLuZHg.QepmmyjFSuEfIWTZBGlwRx1yq6ObBCqPo9rMJ8AaJjkGL4Pf
 +
m0biede9u0DMhQJ
 +
-----------end_max5_patcher-----------
 +
</maxpat>
 +
 +
===Running Averages===
 +
 +
I also tend to use the object quite a bit in situations where I desire a running average over some finite set of events (if you want a running average for an stream or unspecified set of values, you'd use the {{maxword|name=mean}} object). Here's an example that calculates the average of the last 8 floating point input values:
 +
 +
<maxpat>
 +
----------begin_max5_patcher----------
 +
498.3ocuV1sajBBEG+Z8ofvkabm.9AZ6c84nYyFFkYKsJZTrc11z28UO3z1Y
 +
CyHocJwnjywCG9wePN9RX.da6dw.FcM5VTPvKgAAfqYGAK1A3F99xZ9.DFtc
 +
TWKz3HyqTiMR0jM7N56NMQAdIKd635x6jp+76dQo1Lhz7zMjHTbbFz71SzuV
 +
5irxLlau+m4GFxx1lFgBx.FO650vv4GQNNA.dsxOwJ+zU4mUbB7MYQ+2NgId
 +
L11LicolYJwSS46P1zh8lT8CDYCMNy5TNdw4tVkdP9LvIMdymUInWQmaRuBj
 +
Bx4jhc0sbsU83MRmgRwafdfuoWxqufpRGu7AztiurJQEWXIJwzvHaxVSirJO
 +
odQddtFML1702yDutfvRf8LYqumAGcBMIwKZx1wxGDZTwYO7yIUoXcUgvbea
 +
RzYtsIWT2jKnq3Zo5+qP.XO6+XMbncru7.TKeIidm6JwfVp3ZYq5CwjeTL2I
 +
qpDpOdXbkbfusV.vSrtV5JMLGng5MZRbflLuQSpCzj3MZlWEnqPS5Qw7cSSr
 +
CzD6MZRbflDuQSpCzj5MZxbflLuQCyAZXdilbGnI2azPbflOy4MlxV7ttGE8
 +
CKoD.YpH+8s8ylrHvTpLlPsabu3Q4g3geaAy6mpNqmJMO1aJQtufMUfbZbdM
 +
7efczjOq
 +
-----------end_max5_patcher-----------
 +
</maxpat>
 +
 +
===A Bucket for Symbols===
 +
 +
The {{maxword|name=bucket}} object is a little unusual in that you don't need to worry about using arguments to the object in order to have it work with floating point values. In fact, {{maxword|name=bucket}} is ''so'' useful that people often ask whether or not there's a Max object that is similar but will work with symbols or lists. While there isn't a specific object, here's a Max patch that does exactly that (and it also helpfully outputs stuff in standard right-to-left order, too):
 +
 +
<maxpat>
 +
----------begin_max5_patcher----------
 +
778.3oc2X10bhBCEF9Z7WACWy5jOfjvd296Xmc1A0Ta5ffCDacam9eeIm.pc
 +
KsDEw05zYTOGfj22mdxW7xDufYEakUA9e2+m9dduLwyCRYR30D6ErJc67rzJ
 +
31BVIqpRWJCBsWSK2pg72UrorMY9lUp7LoFdBRSx0kxJYtNUqJx+cobt11q7
 +
D9z3PeBYJJzG07g+u12REazsMEtsoR0yuWku78MSLzLTh42XwAMjZAnxhYO7
 +
MJtUm2UjqySWIgK8iRUZV6Urcp9Oqk1lOHXWKYdnJ0yvEv0cmI6qSlX9HbfL
 +
TeeoTdRPjJL9lDMPHRoG.QnI+PHhtZg3SEmBBYLKBGXcHiCOqK0gjjqUDVj+
 +
4UgtSCbryzP7UkFePAkHhCETb9vpnDTfdDjEknOaTIgciMpjyvf4E3ANyVTh
 +
6PL9la8AF2Ze9.wHiwcGiQWqXr2sp3LOhEQtyC5+adjKepVHuCGOm4WJWdRk
 +
U1o2wwtruCRuKSfiguhPVl9AX7j18V3WDTRPnAhxDg6nDcihR6jTX9vPIWfb
 +
Fk3ja5pRgXXnTvntiR5ULJ09Y9yL+0IMwcxkn9m3CYWdtc00tAC+D4xrz7ku
 +
6aWXEbOAYp7+8MD.Nwj+s.rpdc04s8bih8w65oExJsJGJwN3dLSB4u2u2qVr
 +
PBWG0jYkZw5BUttQCbDeJlUeZMdcaSXFfYRE2Dsu2TUoyxj.95t.3XbAoGWX
 +
F+eTtPjLUPoTLcuKpSMxtf1mKnGmKDbxNIG9lnQv.lCHdf351A7iy.LRjQxB
 +
X32AAig7SFA4yStTxmhN+xmGAqJbQjO97KeAheojO2A0Sv8H+yXsrKECly+c
 +
vr+iodvtL1xbr9KkdntnG1ESODWp9MmO8Z5+W39zSGKoBueQ3vnhHbGQQw1Q
 +
rzcQiwL8tL5.P.9311yd+viSrupg2D03NLZTcmS0RniycMyd13GFm0Qj0cbh
 +
vc2Y2.a550OJKqZTHXr585+PQoIjEBgpbaHrC9fR4ip16mBYRKq25ttde6aJ
 +
sa6dqfELwzOuN4u.mi5K2B
 +
-----------end_max5_patcher-----------
 +
</maxpat>
 +
 +
 +
===Arbitrary List Rotation ===
 +
 +
One way to think of the {{maxword|name=bucket}} object is a as an object that adds new input values and rotates the list by one position. While you can rotate a list forward or backward using the ''r2l'' and ''l2r'' messages to the {{maxword|name=bucket}} object, performing arbitrary list rotations can be done using the {{maxword|name=zl}} object and specifying the '''rot''' option:
 +
 +
[[File:Bucket-in-action-2.png|550px]]
 +
 +
<maxpat>
 +
----------begin_max5_patcher----------
 +
1116.3oc2Y1zbaqBEFds8uBtZtK80iPf9HcWW1scamNYP1DGZk.O.xIoc5+8
 +
q.jh+H1wXEEZFOYhrEBc3bdz6AyA86oShJEORUQfOA9FXxjeOcxDaSlFlzc9
 +
jnZxiKpHJa2hVHpqobczL20zzG011+xcfmDMfGHbMPK.RglnolljfJlRCJeB
 +
TKjTf9dBGH3TvZghoYB9LPixzLE7qJysADk+ftPOG7UZMstjJM2h1YPFekwP
 +
zMTNf2XtnB7.qpBTQIanfUj0p+o2ypXb5BQC25d3tFuSv0bRM05xeVxHU8cu
 +
0bLdEUaiRXWiqkTUavRL94sxVuxQJDFNOdFHAgMeD2c.78slRzn6sUbusH5E
 +
22F.6ZGTl4dQ4Hm4JLejsqoL9qh8Kq+BSl2aK1Ra.zRp+qnO.tStpzNdyiMM
 +
7moSMGl44iUGMiFFl1OfS5Z00j9o0TWzFwLxFPTIguJ54H7XXovgEKjSs3MA
 +
dJnfNFTPQOacYaXnoxaobRYk8VFBdpoJEYE8EpdEUC9W3EhsjihM3ovlOrJM
 +
2bDaOBu4hXENZ.73TyBXxWzl7S4SZimZlJn8KptrU.guDzFfqaz1L91t2ToG
 +
EU2qjlgw34o85ojBaVVxkkkgvWeoYoNoCLsXm7rKDKIich1GJ.gd6.BdMCH7
 +
HnfhupAzaWAkby0LfPucETRwUMfFAET90LfRFAET1UMfFAED58EPaHxm4yGJ
 +
zkWXV3XBJevnC9pIe89sps50k2RzZIqrQS29MUGC6fnAUUMTwc8M229tluRv
 +
WcbbtW2T2KjZO5WO2PG4ZLdaI7jpWFQGqWcSn0CuC5xFlh0aC20sRp9OtT8E
 +
8gV5+hxSzfR.68UaYEUybZLezVYtZcSrmbgZqznQrT1TLHd2+9KVTKNta+Ub
 +
0y51dDXwkAmAUWaaNmVvu.c.7U0AdLubRd+rJG77e2XAEMd4.x1ZvE0.X767
 +
S3yl.f1YmKxSGxbqvwT+6j8ayB9atoN2XwABieC5+3QTyzsyrnQgImbpSyzl
 +
9HYPtoGFjlIeDoxZxheBX6+2ERnhQT0zuPuNwS1MC.OYiHdJaV7SpFTLJ+da
 +
wqJZN0+9fKX1vw0d+.r89ru1gCdgJ1A2z99LTIZjK5Cit4ylA1N7KoJMiae2
 +
C6zoz85y8rkKo7c2+ykLkYsXKO8Jy80cLiT9Y7FyF.FH24fg539S1d976Mcx
 +
NGcfgiNPOoSVvnS54nSb3nSrmzIMXzAeFuwrueAhNGLTmlN3fQGz4nSQ3nSg
 +
mzAEL5jbN5jGN5j6IcRBFcfmiNYgiNYdRGXvny47Fyd8EJ5f7jNgwc74YEDG
 +
rGV93NgKOGOBKMslsbsfw0psU4lZV.drcuuvaOa63Ldq.vC+GGLZ5yjlv3fI
 +
0fd4OgqxCX5GJsOzmeUIObOs7QKCGZoGtpXIqWugJUc1z5Js07+CgzbZ1L6o
 +
Lt6TaA6QRpYG7c829pBhHx1Rt0s0a2Hc07+XgY6EZGm+L8+wpYGFn
 +
-----------end_max5_patcher-----------
 +
</maxpat>
  
 
==Third-Party Max externals similar to the {{maxword|name=bucket}} object==
 
==Third-Party Max externals similar to the {{maxword|name=bucket}} object==
Line 12: Line 138:
  
 
==People who looked at/used this object also looked at....==
 
==People who looked at/used this object also looked at....==
 +
 +
The [http://www.cycling74.com/docs/max6/dynamic/c74_docs.html#zl zl] object (in its '''zl rot''' form)
 +
 +
The [http://www.cycling74.com/docs/max6/dynamic/c74_docs.html#cycle cycle] object
  
 
==Errors or Clarifications==
 
==Errors or Clarifications==
Line 17: Line 147:
 
(please list things that you believe to be errors or omissions from the existing refpage)
 
(please list things that you believe to be errors or omissions from the existing refpage)
  
 +
[[Category:Max Refpage extensions ( symbol, A - F)]]
 
[[Category:Refpage extensions]]
 
[[Category:Refpage extensions]]

Latest revision as of 04:58, 1 May 2013

Contents

[edit] bucket online refpage

[edit] Using the bucket object

The bucket object implements a bucket brigade device (in the electronics world, this is sometimes referred to as a discrete time-analogue delay line). As the examples below suggest, it's useful for single-sample delay lines, calculating averages, computing velocity and acceleration, and permutating lists by rotating them.

[edit] bucket Tutorials

In the Max tutorial on abstractions, you can find a classic example of why the bucket object is so useful - this Max tutorial demonstrates its use as a single sample delay for number values useful for constructing drawing commands.

[edit] bucket Tips and Workarounds

[edit] Velocity and Acceleration

Lots of people use the bucket object for shifting data in series, it's computationally useful for calculating first and second derivatives for streams of data. The terms "first and second derivative" are math-speak for keeping track of:

  • the rate that things are changing (that's what velocity (the first derivative) is - the rate of change in a value over time.
  • the rate of the rate that things are changing - that's what acceleration (the second derivative) is.

Bucket-in-action.png

Here's a patch that does that:

-- Pasted Max Patch, click to expand. --

[edit] Running Averages

I also tend to use the object quite a bit in situations where I desire a running average over some finite set of events (if you want a running average for an stream or unspecified set of values, you'd use the mean object). Here's an example that calculates the average of the last 8 floating point input values:

-- Pasted Max Patch, click to expand. --

[edit] A Bucket for Symbols

The bucket object is a little unusual in that you don't need to worry about using arguments to the object in order to have it work with floating point values. In fact, bucket is so useful that people often ask whether or not there's a Max object that is similar but will work with symbols or lists. While there isn't a specific object, here's a Max patch that does exactly that (and it also helpfully outputs stuff in standard right-to-left order, too):

-- Pasted Max Patch, click to expand. --


[edit] Arbitrary List Rotation

One way to think of the bucket object is a as an object that adds new input values and rotates the list by one position. While you can rotate a list forward or backward using the r2l and l2r messages to the bucket object, performing arbitrary list rotations can be done using the zl object and specifying the rot option:

Bucket-in-action-2.png

-- Pasted Max Patch, click to expand. --

[edit] Third-Party Max externals similar to the bucket object

Maxobjects.com listing for the bucket object

[edit] People who looked at/used this object also looked at....

The zl object (in its zl rot form)

The cycle object

[edit] Errors or Clarifications

(please list things that you believe to be errors or omissions from the existing refpage)