< Back to IRCAM Forum

PiPo.peaks phase + confidence columns in SDIF

Dear all —

Can anyone provide insight into why PiPo.peaks outputs only frequency and amplitude columns but not the additional phase and confidence values required by the peaks SDIF standard? Could these extra columns be exposed via some hidden feature, I hope?

Like Jocelyn’s recent post, I’m unable to open my SDIF files written in MuBu in other environments. I’ve done a rough comparison of the peaks SDIF file generated by AudioSculpt and there are a few differences — e.g. lack of these 2 columns, but also the lack of a file header.

I hope this is correct — I’m sending MuBu the following to generate the SDIF:

track <track name> info SDIF.StreamId 0 SDIF.FrameSignature 1PIC SDIF.MatrixSignature 1PIC SDIF.MatrixName Peaks

…before sending the writetrack message referencing the same <track name>. It seems the SDIF.MatrixName value is user-defined, but should it be anything else?

I’ve tried hacking the Mubu-generated SDIF to include a header and fake values for phase and confidence in each peak, via some hardly-perfect regexp-ing, like so:

…which adds an arbitrary phase of 0 and the flag 1. (Each peak ending with 1 seems to be consistent for all measured in peaks in each of the AS-generated peak SDIFs I’ve examined, which are successfully read into other environments, like the bach library SDIF tools I’m using.) But after conversion using the AudioSculpt’s TextToSDIF droplet, the new SDIF file still fails to load, whereas my AudioSculpt-generated files consistently load without fail.

I’d love to take advantage of the MuBu environment’s approach to peak analysis; its traces display of the analysis superimposed on the FFT remains unmatched by AudioSculpt. Please let me know if there’s anything I can change to export the SDIF properly.

Many thanks —
Louis

Hi Louis,

where are you trying to open your files in? What are the error messages?

the standard says that all columns are optional, and:

1MTD 1PIC { Frequency, Amplitude, Phase, Confidence }
1FTD 1PIC { 1PIC PickedPeaks; }

so it should be SDIF.MatrixName PickedPeaks.

If that doesn’t work, can you please post the part of the patch that writes the sdif (and generates some data to write)?

Cheers

1 Like

Thanks Diemo —

And thanks for your patience (we just finished up the Forum Montreal, so I’m catching up…)

I’m trying to open these SDIF files using Daniele & Andrea’s cage library in Max for score representation — specifically using their [cage.sdif.peaks.toroll] Max object. I may need to consult them as well, but the issue I’m noticing is that I can’t obtain a peaks SDIF file from [pipo.peaks] that fully resembles the format generated by supervp, and thus doesn’t get properly parsed by their bach/cage externals. To be sure, I’m not getting any actual error messages, but an SDIF generated by [pipo.peaks] and [mubu] simply does not load into their score objects, presumably because it can’t parse those missing columns and/or identify the matrices & frames.

However, I’m noticing that their [bach.readsdif] object simply parses whatever columns are present in the SDIF file it takes; so, in a peak analysis generated with supervp, those columns missing in the [pipo.peaks] output are written into the bach-specific llll syntax and are displayed properly by their score objets. The peak SDIF files formatted by supervp contain the additional phase and confidence columns along with 1PIC matrices and frames.

The pipo.peaks.maxhelp file is what I’ve been using to generate new SDIFs:

[mubu.process peaks-help audio slice:fft:peaks @name peaks @slice.wind hann @slice.size 256 @slice.hop 10 @fft.size 256 @fft.mode logpower @peaks.numpeaks 100 @peaks.keep strongest @process 0 @progressoutput input @info gui "interface traces, colormode fgcolor, paramcols Frequency Amplitude, shape steps, paramautodisplayrange color 1, mixedlayout superposed, bounds 0 1090"]

These values are slightly different from the defaults given in the help file, and I’m simply adding syntax outlined in the “writing SDIF files” tab in the general mubu.maxhelp file:

At least part of my problem must occur here. If I try to include your type definitions above, like this:

track peaks info SDIF.StreamId 0 SDIF.FrameSignature 1MTD 1PIC { Frequency Amplitude Phase Confidence } SDIF.MatrixSignature 1FTD 1PIC { 1PIC PickedPeaks } SDIF.MatrixName PickedPeaks

it generates this 1st sdif file: peaks.expOut.v04a.sdif.zip (3.4 MB)

If I adapt it slightly:

track peaks info SDIF.StreamId 0 SDIF.FrameSignature 1MTD 1PIC SDIF.MatrixSignature 1FTD 1PIC SDIF.MatrixName PickedPeaks

it results in this 2nd attached sdif file: peaks.expOut.v04b.sdif.zip (3.4 MB)

Still none of my attempts over the weekend, including these two above, load properly into the bach score objects. If I define using 1MTD anywhere in this message to [mubu], it results in both matrices and frames of type 1MTD, but interestingly they also result in the type definition properly written into the SDIF header. But, ultimately I don’t see 1PIC frames or matrices anymore; it seems the definition message can only contain one element (1PIC) instead of 2 (1MTD 1PIC). What I was doing before formatted the 1PIC frames in the resulting SDIF file. So, I’ve tried reconfiguring variously; for example only including the PickedPeaks matrix name, but no change. I’ve also tried passing a string containing your exact syntax, like this:

track peaks info SDIF.StreamId 0 SDIF.FrameSignature "1MTD 1PIC { Frequency Amplitude Phase Confidence }" SDIF.MatrixSignature "1FTD 1PIC { 1PIC PickedPeaks }" SDIF.MatrixName PickedPeaks

But if I do this and then send a writetrack message, I get a console error “MuBu: no data to write.”

So, I’m unclear as to how you’d recommend setting these new type definitions, suggested by your response.

Nor does [mubu.process] actually write the phase & confidence data anywhere inside the track, so it seems to me that there is some option missing in the help file I’m using, which would reveal those phase & confidence columns. Simply setting names for these columns, as outlined by the documentation, doesn’t work.

Please let me know what you think, whenever you have a chance.

Cheers —
L

Any news on this yet? Thanks!

Hi Louis, just back from holiday, let me clear up the confusion:

The standard’s definition of

1MTD 1PIC { Frequency, Amplitude, Phase, Confidence }
1FTD 1PIC { 1PIC PickedPeaks; }

just tells you that it must be SDIF.MatrixName PickedPeaks. (1MTD/1FTD are the matrix and frame type definition syntax in the 1TYP header, but since 1PIC is standard, they will not be written into the output file.)

Can you post the bach/cage patch snippets to load and inspect an SDIF file? I only have superficial knowledge of these.

Best

Thanks Diemo —

My apologies; didn’t realize you were on vacation. Thanks for taking a look at all this… Here’s an excerpt from the help file of the object that reads peak analyses (of course, requiring the bach and cage libraries, and I’m using their current release):


----------begin_max5_patcher----------
2277.3oc6b88iqhaE94Y9qvJZenUZtyhMPfrRqTqZU2m5Ssuc0pHGvYv6.1T
vLYxc09+d8O.Bj3LIgFXztkbuSxDaFN1e9674ywf4We7gEa3uSJW.9AvWAO7
vu93COnKRUvC0e+gEY32iRwk5CaQDOKivDKdxTmf7tPW9+NgVBj+WjP.wjs3
pTAn.ydgzbjzX8ww27KeA5zT3VNSTR+FQUEz8Ym5h2TsYSpov5RXUYTVJQT1
sP0eMCmoOvE+0BJNs47liEQIT1KqKHQBS2yy2+Y+m.PnuzL.3xkpOPxu.94C
1fWIZLhipve6wGUu8zUBNYjxR7gtbK3rsf7ezfA.4H+u7UygXLnXeNwzJWrn
s4zAvVdA7pG5fFB53h75hNxuoPG2yhNvAfNmi57uHB.FH6AzrpL.NKOkJphI
.LK964EfHNaKMlvhjk.xI3WAYUkBPB9MBfx.7hXRAPvAaH.YCLuR.9S0DP4f
3yNNPvV4YYCWj7maLcJkQh3ULs88NEuQdeBDT+kgZr2SODfbzea4p6JAkQ1I
6emLBrAGk7L4aYzXZdJd+4ImOAVPUnlENJb0sPRcGBBE.Ce1O.5AgNlWPzS.
ejA1btDkEcGcnySvkjxTt.bidxditmr2pPkmLxWCKAAifi7kQE3sgJqlLTAM
8nRAAGCxjdX3JwZ7KrpxXBcsRHq74xX51aCpBFcnBEX7mVoAL3xIel.0rkUR
898l.HTh76RnQIZw+Ri5eJ8Lh+Vk3QVj3W94ECRfQg2WYLfmycUg+bP6emrU
hH5vyzdnFDcGMMUMAq.KASUcsy99Tu4cMyDq8uAD1ajTdNQOsJQxqALtfzcR
WvOJKhQrOcqqkwB3mwzs0h.FEATn9a9dSR7fGf1gLGBDN9gCJgiCShb44Vum
5kRJ3fPkwWYzE5XbbMglM0Shba3g6nCGpXSkjCesZl6XfFapDBN6r86MxoGr
Gkk2glcgr6HHEqILbsFhyGogXS01jZj6JSb4MuOUgNrYeQ75W2WPICNnAO+Q
mLXbMB6kb88kL7Q4tn.JEr.9Kxfr3eT3mOY94rTmaBofCGofqbMdOqt.T0Le
YoLe230xln7DsFKDETo2gYsadnEwdXwajhRJmIOGaHEpJCcjYKoqTi2izTXn
aiPhbmrovPehSgcioAgPS1TXFTwrhC2YPYaJWdR9POv9dex3Hyv512RKXhy0
HkOZNqddlUMzGp9v2YDVig6KdAC+TwKWejQVa7vqKuHqddN.n2stHqvIaUVC
MbJzTJIIa5cRn66tQkI33G.QimVPfYgnQSK3HkrucTY7WMuF+ICpDLFwUYBf
hm11LJS36To3GQE66JDnVd3nDLiQRqujQHYb+ssjnTx15xW7O9oeRoao9ns9
bpr2QhoBykExbfrJoc6nrwDawQ8jpNaHb19ouPYJk8pr4xEXgLjHAWMmb2S8
lcQ7LInS2PSq6q5nkpq9MNMhnFoZ5UeUYheV8V8u0cTPez8FnSjNaGJ8qRyB
NLto3dQ7TdQccpA1CuA6LB2kv0YEUdMUlRPT4gdUfMtHpkKVJva2pVIl5ViR
dt0FDVBtHiynQhloJj825UzQ0Wa90dXa7dI5zqMzg3Km9QTaJnrC0EpN3Srr
6HUgfFUkpGqrbJMHYNNhpFhUm1un8IztDeo651HYLlDFLuZ814LI66MpJ7X8
Pcc40cM0hXorYoUl4237LiysT7NLzQ9uUMutnes8XxOuSenlC3hf50pdomIe
gtWInTNOuOw4LBBMcxMuzouIGOPsG+qj8Mc4+1+TMTKeusx2Z52ANsDocI7T
xZkfw5Xr.u1o8U8ownkT6jnLKksk2T.roBMT8jNV45q2WyBK12KS64K+baEK
RQM5Wqr0K+voWY0W1Yvh0uW+OkD2ZYbVXwRu1BM+cNW4wAcBPKWIm.OrmsJa
ZvWqs5zLI4EjRBynN0ua8RgzquWI6KY379EEyyvT1D0QMF6+gtqfjkyKvoY7
Xho6qb0e6nQaopHgEexP5NZrHQ2LpJr.WID5KIZcJU5+8qKhmueWBgUpnYmb
hwQRQkRS6AGiYw6JnhiZSak7Y9Nk9PhdU3NbJZOFzwr5xHdwLQdlH+6Mhr6I
DY05XPYhTZovNe1ZkSHcNzwAtLb0xofN2IhnqjBFtJzKvw6CYPpKV1swdtRi
uxOvyGENXJFbLnXdVoX59v4IYmo5+fpZdizLmY1U6w3eNAryJdMKbMKbcUTq
kmW35CDslErlEr9HVUvwrJy55XmQoWwxKRn9cCfNJgvFdLftklR9fHKrV6mI
rF5fft9GI89oySWch5W94z8NsloT1aIzABQNSgr2enSED5Xc9N0l2v1f9odC
yRSm.oP6PJ7+KfzQQVBhrConYHcvPp8EAB5NCoCFRsunGpKf7LjNPH0dl9p6
TgYHcfPp8LbU2XLyP5.gz.6PZvLjNXHMzNjFNCoCFRWYGRWMCoC9JBaO6Izb
1SCGRsm8DBNCoCFRsm8DZN6ogCo1ydBMm8zvgT6YOglydZ3Pp8rmPyYOMbH0
d1Sn4rmFNjZO6Izb1SCGRsm8DZN6ogCo1ydBMm8zvuMDsm8jqyLjNDHsqoxx
jmhxSuc74BR2O67mjvKh68Kcu3nlKbdymmc.vxcJ8DYP2o1fdSsA8mRC18V6
lWkez8oRFt3URwwE1ceioY.t8I3c13OMaUjC01PpOoFmS+R69V438nR6Selu
p1IR2uG9.Q3WH5mGCOadzLH3c2Hc125Z11XWgi9FIzrmhPqz6oHnq6Mrwb0G
xhNacrFHSaFU48AtRdUQTSWt9w6Umc9VrjmQYl63gCGSn4XrNzbs1I7JrC7N
XmfqvN92A6rbhvMUaENA1wyeh.N0y+kowPSzHj6D0ePtSTGRuBiShgbtFQg6
A1AuJ4Gu6gkBlHvCNUJPP+oxPSkGKDNUFRcmoeIV2pSLjYRcbdd8lSVaEkMj
w87KlcktduCqd1HX9p9w.fLJwC6fZcfHxv2jwZHjAZTUXBE48klmKBKTIZUv
pn0OYBj8tGUOl.jwTo2U8406zecnWO9aO9ewQ7Bh.
-----------end_max5_patcher-----------

Thanks in advance! —
Louis

Hi Louis, thanks for the patch! It shows that the problem is partly in the abstraction [cage.sdif.peaks.toroll], and partly in pipo. If you bach.print what comes out of bach.readsdif you can see that the peaks SDIF is read just fine with its 2 columns, but cage.sdif.peaks.toroll filters for amplitude and confidence.
Pipo’s error is to write amplitude in dB, while cage and the standard expect linear amplitude.

You can generate something accepted by cage with 4 columns by

slice:fft:peaks:const @fft.mode power @peaks.thdev 0 @const.name Phase Confidence @const.value 0 1

Best.

Thanks Diemo —

Yes, I also noticed that [bach.readsdif] also processes the SDIF columns that are present, but the cage object depends on those last two columns. Glad to learn there’s a way of adding at least a constant value to the last two columns but hopefully at some point would it be possible to get the real confidence and phase values from pipo?

There seem to be a number of issues I’m experiencing with your solution so far, unfortunately — some weird unexpected behavior if I change any of the attributes you’ve provided, including basic things like naming a new output track. I’ve saved some crash logs as well if that would help. If you don’t mind, here’s a patch with lots of comments describing what I’ve tried:


----------begin_max5_patcher----------
4344.3oc68rsiaiikOm7UPXr.yKNdIont0yKYR2yjYvlzavjrnwhzMBnknco
TxRFTR0kdvzX+H1uv4KYNjTRVxVVVtJYWUlwAHUoRhh7b+b34PR82d4KlLO8
NQ1Dz2g9L5Eu3u8xW7B8sT23Ek+8KlrheWPLOS2rIIhaSm+0ISMOJWbWt91Y
n7zYQuuXdQ0iVyyCtJJY4WjhfbyHXa4LCOEY4RT+xgo9IkNCi9kx2IoXUZQd
rHWOV3x6FjFmJM8.dlmC0kYOEtxkQHtNpqHVtTa3djFcUTnFt.X8UVNS1z+Q
IUcOQcu+9Keo5GSGH1GjtZkHIeWzOmKyQo2Hj+djTDmxCQ4WIPY7UBDuHLJE
sHJVLa1rdnNNXOM0gQ0zEKr9WrCRdlWLedrPiQ6h6L5ng6qDYY7khcv8fXAW
xiiG.imYo9Ey+.L9J7XQZRdBPB0CyePFwqGCSiyuesvL.SlzEim0Mim1n6yh
9UCoCflQTdPqIfBRkJZP78n0E4YZIhbIO3ZzZYZ.JJIOU+2hLzpzPwTz7hbT
RZh.ktP23PdNGZViWLJCcSTVAOF.6v9Emr8zzbpq+LJFicwt9LGpGg3MEYay
FCgKK6QS3ZOlUxQyQY8fjVZQoxeRNfXEceBOy4IKmLcOBQVzSMRJGhsSCNRL
VNoCTApG0jGsQUbmjE73QVNFWJTaqypKEp2nIT.J84oIC.E6RQldH8XRux7c
gZDxFXQBFeyExuHR3kVAvmXcgU.6dlx7H3rAsJ99ruGLRyiRDxR+nYwQAhua
wh7uasfec12EjljkidMbiYJinn0o2Bs805GNK+pPwMHL505VMS4KA8gq3YBD
zsKhBEIAhpGdCOtP.skfdcTxhTzxhHzOOALRKjK.azkVp+4ICvMGgY3TTey+
bAAIOKWMqhrWVE6A30ap4+QJWPM0tU8gBp2qLuM0l4qDzw0B+XrkOktWQdBd
3NSIipyz+RNJuPljg.7G7ExyQ7j6Q7vvn7nzDdLJEDNhA9TBOGB2JOWFAJUf
W0+w+2+OJqH3JDOaiDgPIRPrQwQWKPygX0tcptCPghr7HnKf9D8ZsnxB39Je
ufrpw+6TTVzp0f+7vTvQcN51T40yP+bxGSA8jHH.In4fK5.dQFb8642AlvPA
Rd1USAXNDkAsKJ2zNApRLWJLn2JN.4A5GpvQo.Bf.FMPCDFweUHSe0Z.oEg+
dzsQ4.Rg.FwbPXGhVPldaFZQQbr5OTMMSE2.DTFzEwEqRxpiTHFzkBRKRxax
75L7Alw0p6tVc7wtl33ebgOP+lJtbZos1wItbJ8ji6fFPtHDw7PW+m+Uz+I.
xn4Q48fnTr1Ipq0tbbhk2nf03QCqiitQLKTlttpGugKqsZtyC2a.UvTQ2EYY
ZVrC93ijb+QQ50mW0JRUrXoHw7ReVKd9KUuUHnzFJTd3Z191TwxalwuQD9kZ
yfatJqjbVROUjLvkW5hpaWc+lvX1Uox7coqelTAYsZcEkf0wyhSSVN3NJJAl
lSTE0w7bs.R0uNQAYQbrNKAY49u4wXM.NQkimlAQ4hoeaGDE6TGCUOr71r5C
ZYjw7mwvXBytjAnlMDwejm44CHNzIG13GzN.a5wxm.BbJrAeEtyc5.HiUwCz
rG6UEs4CWwWudmGKEPnFPHb08Z8ST.JLEi12KguVBwvpGdP1eV8Sf.Xlml0v
Z3CxJ39hTPBNV.xVqI9rJ5NQXL+dUL2es3tb9ZX7C+YPCgqis7JQ7ZcvScFX
Ia+RWLS3TLp0thWT7LeF1BL9VdO+dcCi2U5vgM4bX8zjMt11NIkVOeMzKJsX
MKDCFFWKg4br.cu3vYxpKphki8AT5rNjosQS4i4MFZemVo4x3dgYw89h2T.X
h+LhygC6kP5JTPpwf2QICRXzIeC5BGlS73kmjonahfYMyKxSmCFEByPjgj5D
l0tNc7Yjusc5aepc5+3qLCkZeVqLi2SUgY9gHvW2uKCkJiVFoxcjZZUHYQRF
3LKQLC8oqDISQYhXfDAjp5ZuHTd8pjwA+eQZiKRwMBdbY5bT5RJuiIoxU73Y
n2TjOnRzz4jNbnjwXF2NVm8DUCNvm4dNlCE6rLIp8obIE7PSX.FKt+GjCW8F
qtRsRU5kN4JcDqSsVWzpFUqIOMMdNW9kp9zphk.5dfpoNQqM4Toq4AQ.NHSW
BgMmEcSaavExrT4WBhjfUsaiByuRa4uNF4dn5UpWMmIIyye2PMo1NMXB474Y
0.OE2KqILcE38MKPlFqw4FdLzpws9Q8HLuXwBgL3pTHXHUpV3F9WolVczhYq
iix2oKw0+nYWZ.DYQLzgPD6QaSjUNjKVGVMIC5F5mDzyDlWrQtWvs52uX7kW
4JbqwdeSeQIdttHWG3PVG7zFHNWtszSCXg1p6tVbeKVPk.RSe0V5x3w7wDeG
rqmhd4Xi88T9qI1NdNVpa42rMLq1HkVJnYxnNrJ21BC0JU3t46UO1oE+tVxq
CNa8qX2YONe4vj+pMlzYlAjhkfvytrb7dD2F5nxiiVlnhNbSOukfB7rJPaaQ
kRDmUc+8Ms8IEYh0wfu5qRiCExNFEPMNqqgXAv0Rus9ockE6g32oR9cnTksE
Z5PjqMStCkTifSGuYS1TQRTd6vGZ1qKV1RAZu1YFJZUJD0td65RsW9i8Y7Zn
.xlYXzDoZXLaoLJbORRaSJ1W1ZlbaTRH7vRgu1xQkgJ11La4f.QBBdjRWrHS
jusvgVbRDtohLURLMMaSZ6aT2GybLdr77.mWXWRWNHuRDs7p7s7PpMk0kSgN
mKeSlQGhTamAssji5BIJkENf7417KECVJV.j+qpbtzAWtNHiJKhMywPUFpzY
ypoM0RZV2l2AdqtltcweAvQ7qcY8nId+pG1r4TQX1NV6qhLYUq2IPWt1W75H
KFT7ARhQUBjjJEICa0ogbSUHurAMc5NmJMoQe01EM34kNsiK125NxZHVe207
DXrwyiZomuNyEa64skuvtzAlCg2uTST1pJc7f6agI0dIVBp7hf3nfqeny23A
x98ZtBKGKFt8y.FNkcgg2yx6j5LlLbqmCLbxEF99Mvyv1cjckQh867Lf8aSu
v92O6u6EnvHw9oOCX+D6Kr+NX+DOMV5Ze539jmAbel62nbe8HoqA9V6lJMuT
c+1hDYoExfJ5aYEQPMlI7l0hZi1PKaTmRcCcfToM+fij8XLPCXbXiv3n1kOG
bfrbFgQxZHLIUV1e7iDcH3j2XMRjCI30BZVEEtNErEjUs9XmA5cNNUE3o80D
aSQg7TMhXRv9iCfwCgzPGARSEmbHjlG2.QFhbEdmQxXzgud8MBYVYq0CB3w4
qFSWdS0+YTRCKYSjBUFOLsW6bXBWBNbxAuMERSFguqbgzLQsZAjIlEpDXvCP
OXHyxuOdaCcapLkpbXeLmmWj8k2KRJqGDfUK3Ew4sIEyWtHJNt1PayEIRk+m
xpuWsRnZ4dg5yzt.Kyzudm6XUsycpnmkuCo5kX1U9hX0UvmobdX0J21kuFcy
XopPfdDTUPfYtBtEokqFfVlrrrdEtMVAWqkoqSk04QZlkec6KxSWJ4gphhUu
EppWRLSKkjjvS0j8FQJLYEPPipdmlRdsYFqht6wxDpAvtooVtNLWhlj3wrHZ
hCaK5xCjbtECejYBiIs9GLDWDg7lz3PzGRUQQE0GkuYIW+rd0eToeORfx6Yu
6Pie0674xZJiT.+lv7psgMX9.dlmcqnDO0X3PozmULEeJwzpEA6+JyUOdbbR
ipS8u8Vz5XVZetQbdmdNH+N2gnXdgUMNNedWQ.uO5bcYrZgRtTriuN.JhiK0
D.jmZ8Wt0hfnZ1vpMlCDqonljnVHEZRBsNpJpZQTzljrs55+8ZQB5i7jLzGE
qhl2xzzCWf3gwcI6tMv8Jyff5pcvkskkzKnD8JKQ8OWyUld5jDVXWqIUlqMw
j7Cpukmu4JaBva6op83Y9XFwUuVVg2g4pgcOFUu.ofI04roH6AA.TzNyNUKC
VKVEAvrVaZOhfT2pseUWOfNYHzXhmm4JnWpWBsihBgxcIAa760idQ2dBasbC
TzxNS6UOFTwiIdTs0qeDcxGPkFlez8DOoPDCSY8MWbO+Mn642yyyODi67Jdy
uCQnn+pXYQb0p+ar5s9Cg7hT3KOAbvWQpo5iXOdgS9zvIOUbyKbzmPNJ8Bk+
Igxegt+zP2stP2eRn6rQ2ywEMnmBNI8DDC.slWNd8o0n2irKxamc4sK53meZ
9EOjmeZ9X6cjcYFUOEbwK1qdBn51Wn4mcZtyXXu5OkJQuSsy9O5JxzWkFwyb
Tq+KqQJkz+zm9SGQsM9y2GJSWJR9jV15.KvBMXpK2pZ+mapelpViZzw+ouFn
CqpdO4KMttpAJQuW+0EtTu+90KJ7NNEu2pFnDGKPWWyRbYN99kWg2pNlcTAT
aLXkvbP.YaQLcAvVoCnBnLGBAaV3g9TGllzY6S7b81sr4Mp5h2nU0E81QHJn
Ow78Vy+8tUr2Rw3shDwM7CoRzyNL+AszP2TNeKeyI9.bgOiTdkqs0IvNtWsw
ocuZDpRXaYG8wWwzNupG47gQN5RNenCXagU+wVV8MM1yLcKwt6lBwqlahKuh
L1f0OTeL77LBndKOJ42FHTohwoxd4tWM9fV1sQfcf9.tcjA657k3D.SzmU.0
+UVbTX0owxwrltFp95.OihF34vQmt4NDjLlzq2IBON8vghEN6z3wDreu5P++
tfbY7i.5GU.Rso69s9mf0wY934hDxOlFVcDrN.qhCzm9CCsNOtL+wCaB4.J2
iJzn+ZUbr1y10o4I.z9PTP9goUO4BvePJTGjPO2h13iAoqECObiM65JeK0+N
zoK0YlH+I97giJCTOuKImCZeYTQps1z4CS5YOmea6NEgSqgiOktbYrX7BmsG
lxdR7GdrQo+mUGXiQdFCz7m32HVjJW8aianl3Y1cepiedltQHWd8qRTmBZuR
m3giOiirZ0R25DNVm5QOMVdYEMuStJ14HfXfaqhtLq3aSKSUgMPavkdwFa69
ec97KKk8wYoreJhk8qZsSgDiezqBkMcE8X33yiEfiSy9U5MooW23qof5.Ven
aKllGPKcawYyVIZmKFu7hNLH7aRQN6QSjKJ45i2ani5DD1qNTHK8wI7V4bYG
AlMksn5zGdyUjAHwLs0OGgDnObr4LZH6TV3nAv11wo1.dmsy+9C2M3.FrNya
UOu1nnlbsYJy+j5jC4oNV1XUjdGdFNam5JrOqb2R56a44Vdkq2.l+lScrf10
lOqz.FO7x78e4MwEh9WdOcsCMItkU1bCn5ep.PY5sIGMDdNIge+87iG.wTea
S0YccsrnlMHKk.1rGe.7sRg3A.gZpWcdTHNJ6LiOv8WEgGMn4V6DfTGoAlZY
S8Ge36+UnNz1OZPziZaJbuqGwS64BaCbb6dqBOU0HL16Tf.zuEQ.cdceaZ7C
PDodZc1pOHCl0PQS++iB.ttPtt+7Gs205fa8oeBS+8hPa.Poh0+hJwByvTeS
FCvN9Zk.pmsC0aLwKoHPDcS+kznKYl53O1fS3lmXAiCvYBN3sGX6221e.yww
j5HvHqa44Q.HM6a0K097HEkITeiAdlYcNKe9l4E+POLfN6646b95i.jeGOOE
8Ny2yfwZ7yxEpuV54GWlkUm1btZAMm5ItT8kkoukXlmsMwj+PGKWKyhXzAT4
F0L8WgTmGbhBycw70ywpV71h5a468bIxY0mAxmUmzA2plmz8GeZEvJFjdRJV
0eEibKyL5fNjdF1ITy1pc+PjL+dzebY5gVAeDeeriWoWDVYsFcvXyJy0eODV
KmGFg0blWpKcgBXyVWxB0m5xu7u+x+IPfwQTA
-----------end_max5_patcher-----------

Thanks again! —
Louis

Louis, your example is slightly pathological because you have 3 mubu.process overwriting the same output track. Give each a @name. Also, @peaks.thdev (the difference to the mean) is relative to the input data and thus now in linear amplitude, no longer in dB. That const fills frames with zeros is a minor and now fixed bug. You and cage can easily filter them out.
Best, Diemo