Spectral "Compensation"?

Alright, had a great chat with @a.harker earlier today and I think I’ve gotten it working.

It’s possible I jotted some notes down wrong, so do let me know, but the results here appear to be working correctly (barring my terrible k-weighting approximation (more on this below)).

So my rough takeaways from the chat.

  • only normalize in one place (if at all)
  • if I leave the initial two filters alone and do the process, it will also compensate for amplitude
  • the resultant filter will modify the perceived loudness in an unknown way
  • if not doing anything offline to reanalyze/compensate, need to come up with a k-weighting-based compensation

That gives me something that looks like this:

(code below)

So I’ve removed all normalization (and regularization) since I’m normalizing at the end, and then compensating for the loudness change of the filter.

In my notes from what @a.harker said, I’m suppsed to “multiply the weighting filter” (created on the right) in dB, but if I do that, I get astronomical values (e.g. -37.025 * -14.351 = 531.345775 dB(!!)), so I’m doing it in linear amplitude.

I’m also a tiny bit unclear as to what happens at the very end in terms of loudness relative to the original samples.

Since I haven’t normalized or regularized anything at the start, that should give me a filter that will compensate the amplitude of the source. The weighting filter just massages that so that the shape of the filter I apply ends up sounding the same loudness as before I applied it. Is that correct?

So if I wanted a version of this that I would I would have independent control over loudness compensation, I would do the same, but normalize (via something better than overall mean of the filter), which would then (presumably?) neutralize the impact that either filter would have on loudness, and I would then independently compensate the loudness however I would want and then apply the k-weighting filter compensation on top of that. Is that correct?

Lastly, the k-weighting filter is dogshit here. I literally pulled up a google image search of k-weighting and eyeballed where each of my smoothed/downsampled melbands would fall (371.274232 753.952319 1269.088749 1964.959113 2905.690638 4177.751245 5897.994634 8224.419765).

On top of the fact that I don’t know what the formula for this filter is, or how to compute what the gain would be at each of my bands, my two edge bands are shelves, since they are the bottom/top ends of cross~ filters. Meaning that my first band of 371.274232 includes everything from that -30 dB at 10 Hz all the way up to the 0 dB at 100 Hz.

Is there a way to calculate/computer/measure how my actual bank of cross~ fair with k-weighting?

Have I overlooked anything else here?

p.s. for this code example, the filter bass drum (top play~) should sound like the unfiltered snare (bottom play~).


----------begin_max5_patcher----------
10135.3oc68s0jiajbtOOyuBbX3G1iO8PW2ubdxq7ZKGgkj2vRNT3XWGc.Rh
tGnAMACPv4h1v529otQPPR.xB.E.YqyzZTOXv0LyJyrxJqp9x+1aeyrE4eNY
6rn+uQ+kn27l+1aeyaLmReh2392uY1KwedYV7VysMawtxx70ydvdo7ckYIkk
eYSh8cLaQ75mmE8e6tb5Jyyju3WdmDr+Y1DWD+RRYRwiIqiWjYdRf6Zq28R5
Z0az7sfGNo86bzY2DWt78oqe9whjkk1uNSfmCdHhC.yITNGo9CBKoBH6gHDQ
eI8ui9u0uf+m29V8udvS1dY9KujrtbOOTl7Yy2bFb14rpfOye1YOm+T95xso
+pQZHmCt.ShnZNgAwyoODA02aDjGX1BzDaIlB1RfFQ1B0DaQGS1RZYKtfbtJ
4T11wl.lTPwSFS9Wmkkua05jsa+qyhT2zlj0aiKSVs+FyRWmrLe2Zyci1S5E
IaUur3xz70O13cTWjg6gHqAgCUZj.BfbtrlvgCvpShzWBiCrv4o3ceN5Cu6S
IoO+9RE0D8TZlxeaz12GqbTeIITc9uxXYwtEN2zvfHQfPNZNS8ChxwBj.hnT
sqYvbJ3vOPHQo2.MtswgV84O7TdQzpzsaxh+RT95ru7+tIiFPXz.DJyCiOMn
lWjbSGQfaAGwkggiHRP33n0IeRQamwPahVmW7Rbl1ATaQazXjF7tz86Ehlf.
EFWWVlja9MBoYx5OSRgi0b7lxsYZVxGSJ1pbxT6K7lYwa1T6zuo1inEH+Rt4
EIdn5ToqsmBVcphjOlt+4oUmMtPQ4kJxdWgQtL6yLxrCul7UIEq2kZdS1SpZ
ZbjjoQXsJZrsahWZeXca09KWSE1XFBQFWYLkkp5uHBvAggpQ94r7keHYUMUG
UKlxub5559cO5xqRTtpxJerdOMPz7Fu9SNJrwKp4AC4+GKRiypXfmKRWkuVS
DG0RnO89OmxcjoyK8uOvLl6Xc7lFdXkJlRrzxE2pXxcaWDWnanbNMQ6uXYdd
1wWp54xRdpzc4MoqWehTrLeS6WrP6ju8KuHWcwWtz61bksOtas8pOpzIJeba
7GOVZWFmk4rTO90+430oun55sL01Df.UWzFe+62trHOK6H90dkO1vUVozwWl
7ozUku27gpqLnt8zM6UhlU0JuJ84jskGetx3m2d7Y1V9EqPu1o1svYC+XYxK
JOmkmbCJqizskaee9m15tw8JZ0E.GF.Uca55t8N57Wx82wt.WsnLOt9UZ2A3
oNAw0erl7C1tuvV8GZbGhDFyEr7f6v8OkwuuyAS3EFwk4qVzOgAL7BCpIxMN
ZDkEJuxaieNoQgAbdz6XygHFGE8NU6BjSXQuSEqMQEUEjG8N5bLVcBvbDGqu
G8kfBAUD8NDbNmyvD0cAYykLHBodVDdNlBnX8qgqNDBE5GSEQOAYtA0gXDkv
jp6kLGphLip+Bn4bARxnlWFFKvbo4qodsPFQcu74pGGXtWwbUPdby8pNTphB
1dDmAEpCUQPf4P.GZdAbFWEfn5P0GCI3P6KPhz2sgIjDIjyMmkvgL.yPBbAE
vM7f.RwBK0R3BH.ZXRflg4tWKEPHluKAAIPyIo.HPpOoJlMIlSsRIhjSEXq7
foDnbCmSoBJUcup1eLFqERJor5URH0azNJPatnWZvnV0fQ8UCVE7sM7Fl9un
lLm.AH9zYQ++5cQv4Wzh9or73x1MqggWpnTSriW05rSpCycJ8xotuzW18hpe
OODLODMKc8EjO3dHeP9IevFsFNYp6EnLJKJ6x8B7vk5IfzitBthHgBrlNfai
FyGS97lhn+tmfQ+eT+FE8OtcYbVbgNt+HXG5ur8vnOUFJGnYWKQ6eQwKB6xi
DaTz3LrP+Btf0tJEXXQWfAyk5e3bfJnZgDwLmydEvQzy9rBTO5UCctdUxmqM
zufHrr7QKZGLZOrv7RE.irxCAxIOvAVdbX3e5traIndC4oudyBps46JVtWmY
u5QzwDmZfLkoqqFM7eoJH0HeUp6JQf8jFzMdiFQn8a3EUbN0lWrxlmE3skxT
ggEAalx.iCk4s1ibLa4Hmw2sPE3wjJ7UTPFSh.1kFD3XQE9ZPCa2qh6j6SF3
LcFeV8nM6VOFWVVjtXWo0KX8ra1orv7bV9h3rSRcRSIo4sGHtac1iYgI6wbh
7qYO9qYO9qYO9qYO9qYO9qYO9tJ6wuS4tR.EXTz6vv4DhZjTD0g34PFEHYlT
pBYRLPcVn5FLm..UC4hXRMKjPETc1gUuFBkneXHdNiKQ.S1P0KtAFVeDFxX5
r7xlKnRlfG8N9bt.hDPSxoEbfPmVU9bHlPgBy6A.XBf4NopNIDpSRlivLDT+
ZjTnjgzuZtZbwH6qgvwb86lLmQnlSpHLJhSs4WlXSQKERMYgVoARfPyiRmKU
Ghk1CYBF27l4bhhVzuWFV8H5jsiUeYA0jybEWw3HgMM2JQG.gshIABAvlTSK
3Rl9cAmiDHpgYU7slGTOElOWxY.2YQZxD1d9hYeMeweMeweMeweMeweMeweM
eweMew+tOewgH0N+tIMW2EY769H4m2GIB99MQ42sStvcwbuDfYg52I4KtKaj
G1ntqITiBVb9xfmpiK7rkA+zsSQ3va.OyjSFO2zV.hMpaAHHE51lGzaZKKCN
EbIAPBNW9xtrxzsYoZ+zsNYNOzxD5P48diGtU8u2m22lES622L6EQhCOo58o
XBK0YGRxoS9SyadQIroMuHvtwFC6VrnLZQzSWdqb9voIU4HQaWraPWcCxz79
17jAHGFN+vff+GZcPvdNggzl6j.02MuJQ1vlnylp3PKE90rns6do6lTDZGX4
q2tynh4RHkPoDBQo+SgRkeD7XvwGZ2+60s6cqkFACSK8d1Vu5qOskVvFDaOL
Okn6DOkvK6oDBHrlBbhcdGO2oNNIhv33DBEx4vSkDM1E7cuezpEM+.stZV6f
nmvhyBK4NysJLLtUaVq.yZPBLNdYqOyyd15CCypto4FejnAWCmNuqc0S6Qyu
Z84VELW4ESOogn4Q34QD2e5l7.OlFCH8jwelw.Be6554URL5PD2l+XBN780z
lFk58Q3PISQgHrPOO3f4XHPuMuTwKCjHDReIj4ehXDf9FfTjdJ5UOKFJODhZ
ia5e+zHkgQiDuGiVPGElKUHqjfXZfGM71WxyKeexpn30qhVk+o0aieYS1U.K
h5Zmzvrs40I+PuB3vhi3cKTPHGEnfnHYqxtLdcYzecV55OlTTlr5uNKZ6FEQ
UbnSpqJAHgQBvUddz8FqFjir1OBgdPNP9XIBRJcPfg27KJPs3X6hlfyMrMbP
LXaNH1VFWTpWKFx4HNAyYZQ4gioft00CiGFKcoYx9ITzbH.PEDmxNEowJB3n
z4qURn79IfDfg0qcXGkBh.MrdtMqXv4rSkBPNcPRgjecU7xeqoL80Ee0fqQ6
TJ77VPB013FXL+HK9K+Vzuju94rjss1dsM8405UavEPaLNHLCvx05IkmKA3C
K9w1A1nsqiKRT9n+CJk4mSJaBGWpVCAypu1lQAwkkzsvTL4nv1qTvAqFa+uQ
+A67T0HGhGONjxvG3PIcT3PiN7WlGm9TTrpyGcPsQhF3ypk92Q7YXvYIWnVN
zGBAlLFUMXaYSymFQNdLK2hTTNlkLLHIZh5okDpdZMowPXBs5UPWqDVH6ZEa
2.FCruz1XanYj7m8mNxvf.MZd27nYsqgvQI6UahdIIS0w5pq1Abi4sHngMgP
hut6oNZ2SAAPWVFnec6S80sO0W29TCa6ScbTMmrkg1sJMOR4tZVm2NA8dkqJ
wmmWDpMS0TwwgzDnEm6kj.JEjsa+snmiSWGkoZKhRW2hrPFdQAlxlS3bIfPj
.LWCFTVf.8g8apfIUVX0FZU.vCu.PPOWWvx+zwg8uvlFX25eIWoDvu9Nons+
uskCOE0CIm3JpN1oxvlsU8f2m3sXwe+uckcRwIAP0ZPTAbiJwYv4RNgI4.ks
jDPAbkrggrXI9TusbFpDhfCuDhoDF2ORHmuWljQlywBpzK40CWWxwB+l7pYI
mdKOBIHA09aFyjiewqMUMDH7pZTUeaLLChYBhjA3BJrEA1qOSSDM7xKBELGI
4TtFcKoHJTZhE.O+fzhCwX3MzPU0NphcSuIikgwPEIBugZi5cMJGgHMBhpTB
ApwfCDHFk8JqOzQXy9hUAdcdHoH8Fhul76VpEhIBhhZv.LILZgXT30Ba1ZtA
wHDQuQxQDVnwRW4wNy5uXjNBas5F0FQp1+CxP0uw3Wk85dgMdc+Qv.BcNDKw
DBhgPRkGPYKBrWe85RGA4EjvligRFGAwPHgqDNtxzQ8vTnzan+NHkqcav4v.
4uiJCugZy5cMIGuAN7Fb3diPzd74jyVbPR1bTc6Tt3Fp1I4h4PMlhGntGXiA
xazj0aihQnArzObmTB7lHUo5o3fyor.YKC4iPrKMoaZgegwpW1qi0DWQNHXg
GwIZRNXw3k6ADmX.vygfGdgkKejCS9flJD4PHBetraRcghEgVeYTPjCsFgW6
cdcpriNkKxrSjra8ke3Wv4i0d8Wat62d8meY50zToKMGX.hiIO3NEVBDDf5j
ly.HPcwu.PQHkqa9XxX5dI8BINniIFXv7EPGniIpjPk9JKviMUbyQnEpufag
1y13QE9pchQiMU3ENnLlvGDE4q144fqysvkogdYdPuD78C8x8oUVb+PuXe0J
uSnWhO3bD89gdo9Puf6G5se3H0MibQ91M2smdI9FAHYLCNvPEPecRMZTA9dH
3f8r3MlJ7saYznSE.ectNZTA7dnEAI7rEYuI83QE.e69XznB5cQKB3tfJtGH
BS9A7Q4jgGapv2XEt4vu4EZPNjbJypgtkrScXwzqWvo+nYIs+32mrd2gjfse
w22Lsu34mRyxpB63MmcGuY197f5BN4gZW5nvUPZzwW7fAuAvbMbBqNRcfYpp
pKLbOGb+CRnDI.oucBCwITyQBDlhMw9zvihN7MAPo8KAjBaNlv5SAOBWfbKQ
b8FE0jbTNnNtPqZfKx2jWTsmGlikG8b6JyetHdUpKCiUXR5g1qC6TCKpTnty
yWD657ppg8h5uilT2pZT+tcKi8sg7nlBBmBwF4HRhER6QTHPOUhmHVlEuboh
ZO5w0UtWoQTRnJwp4Ht8bm9z02QGJk5+8MIqi9w30ai9wjWRWjms53Tmmjk7
xoeMtfw3FRT.zEcXyQpOLBc9maq5ErT2Nc7a.o3LCYBYbjUqQ..FbJ4jWfdV
jLO6iF7MXaRklDVhfLqfZu5HhKH3y0jTFMGm4S.AxMxKknlv4VFPulUzGQYm
7r9avUozcAatNn+erUmnxVSvATgvdTiL7oVcr8ZEZrhgwsGYeau9M5993xRe
M5puYm9Kmz4W8MJkFZcNd7ai.g+m+ikOZdMfd4yPR0NvsZrDNvnTo0ov94yv
echS8YX2GXGOL3rj3hZudncXvRkwE09QT5rbbGLuOerzWxd1Z.0zQm+nu9Mm
6ziNF1ysa0fFcqle9m9W5k4BTGii0Au1FwzeAeezNW2bgB3L6LhwnXnwbQWk
gPWuK1+0urpH+4j0+jQs5ZctRXPHvFQkDwHFcKpDJLqjiS9PUg4drNoNZNSe
pJ5ixrwEnUSLrr7RFRPFV4Jw7n506uzcDPdGaG4erO2cwh1tYjXzMiLqVfzk
8KZUWuLMcjGlRc4wOwV5aSVm7w3YAnKjlsc5RuNBrjac8hktNh0mhhGlwRKC
ZC18O6fz2OkUcwZe9QCxRwGiA4TYK7M6JKyW2CKBWzNhJ4KvcDbpH8+zQ0mo
WQD92Fmt925kSHbUu3mezzQ9a+TpxOhuLvYNCgN+LG90jR2nWcD9+1QPPZm0
0OghuVrXcniplSzQWdCmz8xklLwwS99cUvlYO7izVGmMIaY2D166iKKR+7xx
hr.wkSBQqALWucRNTE4STCuKby9C4qp.Lvt0KQGhbYvRtaTXK+PucIdqbx7C
6dYg+DbSdVOOvkIj7+yoKK6lLuWZVSBqXPO2WkQN9iKy2jzuPGOLqURr9G+F
u2cQC1OEuXzGxdSZqW0O5jv7pQ5uXPCRq83+ZHOE2Fmi+T9y5wOOJCI5JMxX
Nivg1mhfglDDPbSo6Tv5+muzgIB+NXvH+b7GSdJu3keazas59nK.yoirPXUb
wGd2ZMB48NSxz58XI61TYUktudLaHsj0ORkKMd0LIWMmxBCcLB49FdEytQKa
diVdumpY78Wb.FH.TauMOFudTWlW45yP5hrDUuT1EVw2jm+gKOaoWbRL.doB
eX1bO6fwKUz9S0utTduvX5Famp+xlz0enWcmvTx.fnJjErF+eH9sR.76IaLK
N98nm4y1ym6bCkCyhq4Qv0OxuNM87S2lY1CG86qMEQcnqo.tv97iEuAcC8pa
sE8A637+YMJP+ZHvzLc3XcaHRMZVWE8Csxe9d0iqkuPfj3V+hRIVvcGwESxn
jeI9yrZvrcOBEUb7Xb4Nk5QXcKchxw3GvtV3bBzIzkLHfvTj73930d2fSU65
wX3+UI991BEzP6EUqstyO5JNV4B8Jp9gFO5FEhTHcIetkZ20HNEmK5ZhuqsN
1mr73YwImuIaWx6fCvMEFxcqTqC9pk08POELQQ9mVOHt3p8yLAbw+zWhGFS.
PRpcc5w4XLxZiifpHUmNl3aKRRFHWXZEpRGNjoicc5XfuW4YecY7fXAAAvX1
j4y.JFvzjvjF7mbp3i+ijUChG3UgdCqFSMv0y6TwC+WIYY4eZXMEHpcMxxEP
gYLE.pxJgdsIMUu9goR.PLkLJ52yLpYpV+17rApVVkVVpJxXpcIBWOjhQkI1
rqXS1vC7iWs4.HPJSXmCKsaNpGipg.rA+hn.lzXfpwvajXJ3+hjkIoez+U.Q
S5oU4e3.uCpucOFWFvNLZsZX+xsEQ4XW55Xk61vVJqLI9psb2VM2sIGJzVup
5U9PCl+9MNYO4vg.tcN1ILfzsG63P+1tE21lsx3M8Ly+eWbYdz2oyByrQmF2
Vl7ztrrx9Ogw5M.L2HkYUiYDZPN9qZWAETJzNUYLLGa2HlLkKE1zz.YY9Ih2
CbNxPBtvFnJtxzFijX4jzaRotfd8Zb+R9IcVX+ROML+SoEkeI5e947YdLGA.
spgIiKXmFgxijaNp8NSfcXCV17jM.kRfcTLJyJhaYVw..L77Mx0wMFZnHMDM
Ft2w9WvLckqa0i1pz2iwkkEoK1UZg5fZR+tUM4dNKeQb1Ik.tlJ1bu8PxkBU
kzFyBYkzFI.6qZ12w0NaLMj0NaHw.NxCrZY2BOuX2SOkTTw0QGJFwsJ.dJKO
t7x7OIL7uJL5Z0vTHlOFRfxnEQYsxrFd7gVpJsHVX3SWkWFiHl5r1IUastVG
d09XNZsy1RclqINBVU7YUdwTNJJSJdzVrKqadpr.xUTeV5xOb0xO81jCtBur
fYuuUB3vipdgJlqVn5vSqfsmTdd.XsvinjdTaEBPa4vBqFyGS97lhn+tmPQ+
CpeCi9G2tLNKtPWqZqpD.dVWigApPN6JT4XtQCBy.2PUHvqaUHNw5nEqjd09
ApSY3PUnFjfk85VtRbf6+nHWao1iCzeJFAFYN.BX1C.Bt8.hPZNPcE2kHRg6
.r6dXX68.DH68hgL2ATp8.t6gfLn8gfPL1cIBx8zB2SwXVxAQvtWHm6nBz9O
AzcyH2sfTidxQVbh6iKczGG.2Snn8Gr+0YoOkj29PD0O12GE5dHBxw3X4dQA
c+YbeSLwwU.Jj3DfT2IHUQ5XCsdmclJEcq3tGFeftdQold.P1pYODdSLUEja
uspn+lptdSXJgmjx4H0ePXIUnWuFiTepqVTlG2s9Nw7ND80066jxjyUi7iJH
VtUMXTUOoCKn6K3Wh.nHiWCHWXcPAIXp0pDu+LRp0ECT4fR3tDy4RP5rkoPD
04PwY4Rr1sbly9myct4Pt6Tfj1ODk5bIh4bmmKJG47UfrtQHpwm6NiyrGSbt
vvb6eygNePDv9uzd2cDLv9ho6ecLhibUeJmyHjb+qg39.NW1LAv4KS3b2QIN
JlybtrETfUNh3Lt8.DFG.2RUUm7vDaVf7K01XWi19Rdd46+S4eZ813W1jk7i
aTTPwtW5lQkHr1THVCE6m5ijs9qHo3zrb7TZVhNgOtrb.qJr8a1T6zGkVJkz
5Wr42opDWOSwI1SUU8UlUj7wz8OOs5rwEK0I.aY4tBaNR9bsJozLc.9Eq2kV
q1oTk2G69UQmaksabIyaVs0dyrZhFSuTHBwVG1YFgAiyqkupYKdNKe4GRVUu
tvLKeSx5z0azamv0kUnlY0kcYp6w5ooROEnMc884arwKd.+LKpA4EydtHcU9
ZMQbTSg9z0RQoU6lVmYL2w53MM7v1zb0xE2ZPtyEwE5VJWWmnpbVkmmc7kpd
trjmJcWdS550mHEKy2z9EKzypP6WdQt5hubo2s4Jaeb2Z6UeToTT9nNkdGee
wYYN63ie8eNdc5KwkIko1l.Dn5h1vGd+1kE4YYGwu1q7wFtxJkR9xjOktp78
10WVs16Nj9vC4G7H3W8jSsagyH9wxDk+GEWb7Mn2NWaK2997Os8jLQVW.zFn
t5WUY57f17Hvsy76eToj6BAvcgf3Z0EZaAy0d.cMETmOA1053vnFWy5xba8f
6n5UOLl5x3Hb5Jcc0i76JcTcVKEoG0YKnehGk+YxYhG4TWsDiKyWsnmBGzHH
bLKiZtspiMNBifXBeGaAS.AyD10NLV1rAok33Jm3cVSAIXMEHUawqcuoB5n4
MEgESl2z8k8vFkNUiNJpLORD8jVcbazhuDoBQqH9YEwGoGvwWhnQ56UeWGUa
eOZ3j3lkixvW7G0EFU8RninK9rLjfKoXNFQ4FrgvVaLI7ITPt784ahxe5onW
RKJTlrqbhxtJq3gWVI4VQEDNGBAX.lgjBFfqWeTLvjKonuaSd55R2vyS0ylX
KhHTKU13wPchLWuCOwXz4ds3lYaFimPYjUIJRw.IEWSQpEoDM7RID0JkPDS+
rbxjKWVlqWtKkZuPGGEXCIOOfLtfZ3aA4PPFHvz0E1KIwquXOXUK.gTsJQag
+1C4xUpb0bfypQbOLzfeMK54h7cahDCXntvQnroy4FwDkBmiwRHiSjP.UXVD
dSe8lOPZS8ZnldJn.pN2q0ot.eiTmR0teoCQahNZZSDFaNTvnRnR9Pk1MAFg
eCjREIeb.hHDL7hHjRBnC4AA0k8EgfgELHTx45MQA9VHiTiZbYRDlMDAEJ7B
Jn.XDTPlXNjpBelJAbBiB0a2go20zunBLLB22r6ztmabeGslqCNjZPaX.ERg
BHQhAD8hPGxgGulhFe4iYk4Y9ueMy.SIWTTUsR8p8+6et1kh8wsN0mjjAQz4
zZt0Y58vFBPcqGc2O5Ux9qK+WigKdmZ2cl6KxPDSrQSL0nyKJ8UoXBOBgepL
+LALfvyYmN9+ahXxDk9PDRjQSHgEJeUXB.RYbld4mo2OXT3sPWprHI9kAE8I
lOdtljz4BUmgXImIXJEJN5g86HgPKmNA9X5TPAsKA.CXJeP198sqfC.ggXbr
t19gMYSCeJ72sOiFGu2WTD55UIet1ZmHHRqSwmjlWM6AL4Htwiv..yna4NAB
AACq.4v5mPm9qVlU7tVDVEdWffY2C0i1yK734EqrqRHvskxfn1IM3ss94BG0
RIL1aIznREdWLgoStJD1+FJ7jqDY9j9TPpM4xY7Z.QLuMzFW5f5McLplU5wg
FQ7RogO5zgeJujQmN7ROEwFc5.4s9AbToCrWzwnVD2QXu0OFW8Tj25GiZGQ6
e6dpefFM5vaxXTMagd6NENtzg2twF2nkfdatHl7PA7m1HSdLTAnSnCiexr5v
ZY.TGVq66Vkl+ilUb9ieeGJQFADRo0XeAzhv6ZD31htn6qdxWBUoqgwlUfgM
Qiho3vBR7u5fV5ua2x39ADubJD6PXYrvg0xT8l0vKjUx+5k7oPnx+9lDWIM3
GSdIcgFLutJJ4vELF2h.5.nPXOR8gQdWjS3HEmIrneEGY0ZD..rKfxLpBOmO
TWOPshC6mfiUDH2hdURJwA8XDjzxTT1u6Jt79CaMuBM5993xWmXeze9OV9n4
0.5GXW0gBrSi3zq2PYzoUBEy1z5hE0AG5mKUFWT6GQoyxwiBlqqsm2CBjmez
caMte.lyc5Qm1hbOZzsZ94e5eoWlKGpxHzpRyEeezNW2bgB3LacSiQwV3gEp
FMF55cw9u9kUE4Omr9mLpUWs3jxfPfMhJIhQbvkHTzDD10LDigzQyYgVRDjx
rwEnUSPmCwXmB.fLrCAxgbBSJcGAj2w1Q9G6ycWrnsaFIlpxc2nW3IavTpq0
e2Z1Reax5jOFOK.cgzrsSW50Qfk78UVDWGw5SQwiRc.B18Oa3JPWcnhKOFEn
qIxV3aFTYH8lV3b+S0137upH7uMNc8HUpMmDxe6mRGRYx7VUkSczM5UGg+u0
6Bi9UpUvCsPw28p45U5d41Toh+tjU82ORacb1HTKeSXuuOtrH8yKKKxBDWNI
DsdCL+aiZco+BUIg6A2r+P9J+qTB8MxkAK4tQgs7C81k3sxIyOXJfI9RvM4Y
87.WlPx+Omtrrax7doYMIrhFbmJeUF43OtLeSR+Bc7vrVIqvp+qOdu6hFreJ
dwnOj8lzVupezIg4UizewfFjV6w+0VgZYxcN9S8u7Wb09puRibKUKXvTw5+m
uzgIB+NXvH+b7GSdJu3keazas59nKF+RO6p3hO7t0Z.r6cljoMfRhTWlJqyp
63cofb2bV+HGJMvUyjb0bJKLzwXVPYmfhz8zTKYmpY78Wb34G.TuNVMBudTO
KLM+wEYIpdorKrhuIO+CWd1Ru3jX.7rH1ue1bO6fwKUz9S0utTduvX5Famp+
xlz0ene0SOcgtRTExBVWiiH9sR.76IaLKN98nm4y1ym6bCkCyhq4Qv0OxuNM
87S2lY1CG86qMEQcnqo.tv97iEuAcC8pasE8A637+YMHM+ZHvzLc3XcaHRAt
N3ozBHt0unThEb2QbwjLJ4yq.8ctnpd7Xb4Nk5QXcKchxw3GvtV3bxl8sKYP
vUwpq2Gu16FbpZWOt1F7ldWxfuRKTPCsWTs15N+nq3XkKzqn5GZ7naTHRgzk
74VpcWi3z8hcWS7cs0w9jkGOKpD7MY6RFTw6FC4tUp0Ae0x5dnmBlnH+SqGD
Wb09Yl.t3e5KwCiI.HI0tN83bKLgYJo0pHUmNl3aKRRFHWbqpJ0VF36Ud1WW
FOHVPP.LaI3Ev.PaUVkyjPIc53i+ijUChG3UgdCqFSMv0y6TwC+WIYY4eZXM
EHpcMxxEPgYLE.pxJgdsIMUu9goR.PLkLJ52yLpYpV6VMe+tqzsuYWwlrgG3
GuZyAPfTlvNGVZ2bTOFUCAXC9EQALow.EInLzjTcuKRVlj9Q+WADMomVk+gC
7Nn918XbY.6vn0pg8K2VDkicoqiUtaCaorxj3q1xca0b2lrd01Wi8JenAye+
Fmrmb3P.2NG6DFP51icbnea2haayVY7ldl4+uKtLO56zYgY1nSiaKSdZWVVY
+mvX8F.lajxrpwLpycXSa1jS2pHBJEZmpLFlisaDSlxkBaZZfrL+Dw6ANGYH
AWXCTEWYZiQRrbR5MoTWusdMteI+jNKreomFl+ozhxuD8O+b9LOli.fV0vjw
ErSiPiiu14n16LA1gMXYyS1.TJA1QwnLqHtkYESWmbOeibcbiAlElFC26X+K
Xltvxs5QaQz6w3xxhzE6JsPcPMoe2J1aOmkuHN6jJzVS0Bt2dH4RcrDVtIdc
x9E7q5V0XIww1iOT6W0KUsKpvcBz4UtRIsCktRP6ktRjsn8vLP4GzVFKkrZT
gtLPV+czTJ6NyEyCG8qZE9xSxpG89QdRBi7DaqvkVAJyBY6TB++OTfhCi.EB
vzVqj5JmbFEWN3VHfM2zw.VoUdeJBv3j5mg7KRPcneoEXegVCxuNqk02uDk4
wWBKpCyTydIckoX93XNlDogDct.ddYx1pmegKgbkJUjv.q50KYpm.8O8lE4b
OXwPHKgPO9PmPMGCgP8mG8oYDBB.SR7gGYiAO5yWF0xWFN9MrvQ4Si4cvSPX
+zd4ZfNJpyDpOeZZH7+QmLOszibhdguDbfeIjOpqjPH87R67DxITpHDe+zvf
aS5i2fPzehOtZGCYqW5OvQwSqOeYRyeYzvzm75SKBQOnBObDPHAvQ.QzAw43
aMRQiRnO9DqLSNFZq9+ogglqY9zzxCQ.eL9T8kH97kvgneKBax9RfNL9pg0q
jOZD3wIHUu+zA2N.S8U9NzVRDqCCBX3eInOeogpy.8gmDiRG8dIMEiQGFdEz
pnkfLvC5S6kcBepBLukNlPmkIq3Mazygf6oMezYuD+K1rjIdv7OSWa+ml73M
qH4io6ueSchaVbwR8DkrrbWgMW5elYyrpIsbEq2k5TpLo0+DzJ1x7WAkhOYh
W9ausskN69IDn4MtPePi3dhDw8bSKz7pis8UFaKqJ18SZwCus8of43oeotlX
CnKbyM.8AQg6OZB2AjDdHnH7fPP3Aidv8E4f8xX3z0Od+VE28DVQ6GBAeeYP
b.4ea1fnkYut0YtdvDzoH5qG1odt0m6OB9dYz6sWH2a22aE8Dwde0YF48iEJ
6nl0nQASitBsc8PU1SD1s+nqqWHq6PPU2ggnt8CMcuc53dhbt25XmZVEWDLU
7iPBWehrxOnzY.He6UP81d39sanca+P519N.fthrs8UerW3Bm2ZwWRYUFZc0
5HU6U0XuNTcEJx5.JzdGQT0PXVOLt8BtCCFoUG8Xal37F3UCLMgtqHpiP8U+
zsZDouFBDONLDd0OzcMTxqJTb0W6vl5DveTaMTj8onyZun9fRP0Pd0lIlgnP
0GjVMTbVMDU0Cuhd1a4fjFibWl+PmbgL1Fn0Q.0lIlNi5oghzNEcSCndePIy
ZHW5cTzF0QkTeFKwUQhzdgBoghapPaz.NrnditnAioNAEQGR7DdiZnAi3qsg
mBQ3rWnQ4ZnAZnXoZn9YuZJBIsbBhdFPI7.PvyAybMiTmdFau+ontuHy4vQk
yAjCst.+YAIyCAO+YgbFUNCYMCwqBcs4nwKjyr2nl4.PLyAmRKOQHy6ZEqVh
OOTNmpg3kd3t85PaX+P3xdhtk8AYK6OpV1aDsr6nYYOQxxgtHP7.4JmN212U
y084HQ4sKXoyPYR+Ginm6Z9dgpjCluNBS57N7nqiXjCc9xaCoHCBCWCQH8YT
ddfBjAgrNBsGalv5iTcvgI5KhN1Szbbj6ReHtpN15vuVw5HznuIc6Bnx3f0r
NG8E81L2KDWLTDXcjUzaJzKzTLPTXcTSzaBzKjRLPD3QHhn+T3Uvao.Qbmf1
g92UiOHbXfnwZHYn2zmWnWXfnuiQoP+Eg9.XeWFr9BKCfdMx.mgpf9qh3Cvd
MXBrNhA1wfG7Dk.6EBANX95Xj.zecFeP+ugSbmhxe9Ldd+P1udgpeClgpgde
2O8fbNx74ypL1Oz361YvVg3ddkkvyPYu.78a.M87Qv5GJx0KzyKXL0HwSAb7
8dgHdCWdTg7c2I6Wf5HZmWJ9mihcCCA6FJ50MLjqqUTqqaBV6VmyLCdZQ01M
tlPCna81+m29+CGo4bbB
-----------end_max5_patcher-----------

Ok, I tried this example with the two samples/filters reversed and that shit blows up after the first step. Rather, the filter at that point has linear amplitudes in the 60+ range.

So I guess regularization is still needed to “tame” that, independent of normlization.

1 - Regularisation is to avoid blow-up, so as you’ve found, you still need that

2 - Your notes about multiplying in dB weren’t correct - what you are doing in the patch is correct (multiplying in linear amplitudes).

3 - I’m not sure what curve is used for the weighting in the loudness analysis that you’re doing - K-weighting was just an example, so you need to check that (could be correct) and then find the centre frequencies of the Mel bands (rather than the edge freqs) - hopefully that is already what you are doing. You can then either take the value at the centre as a “good enough” approximation, or try to calculate the average across your band (more complex - basically that is some calculus assuming you have a function that represents the weighting filter).

4 - the point of this process is to estimate the effect on loudness of the filtering and then compensate it. Possibly we need to actually account for the content of the sound to get a better estimate - I’d need to think about that some more - earlier I thought not, but now I think I was wrong. Anyway, anything else you want to do in terms of loudness/amplitude becomes fully decoupled from this - you still need to separately loudness compensate for the matching process if that is required. The idea of the filter also adjusting amplitude/loudness assumes that you haven’t done what you’ve done here.

1 Like

I think @weefuzzy could give some good input here on both the loudness curves in the fluid stuff and also how we can do our loudness change estimate - to get him up to speed I’m suggesting that Rod uses the appropriate weighting filter in the final 8 bands or so to estimate the effect of the compensation filter on loudness and compensate that by simple division. At the moment the calculation does take into account the content of the sound being altered, which I think now it probably should do - @weefuzzy - thoughts?

1 Like

It all looked so pretty with the default example… I just flipped to get a different sound and kaboom!

I find it difficult to believe, but I can accept that.

fluid.bufloudness~ does k-weighting, so that’s why I went with that.

I thought about just doing the center frames, but given that my first (smoothed/downsampled) melband starts at 370 Hz, my weighting filter will be completely flat below 2k, then have a 4 dB bump after it, that’s it. So I kind of guesstimated a bit of a drop in “loudness” for the lowest melband.

Independent of this process is a corresponding loudness value for both the source and target, which is what I was using to compensate for the loudness prior to this. So I do have some idea of the source/target loudnii.

So I can still do that compensation, um, before this one? I guess it doesn’t matter if it’s before or after since I’d just be multiplying the filter by two numbers (k-weighting and then compensation).

Order of compensation is irrelevant. Taking account of the content of the sound is about knowing how much of each amplitude you have in each band so you’d need to know how much amplitude the sound you are playing back has in each of the 8 bands - there’s then some maths involving the weighting filter and the compensate coefficients, but my brain can’t quite figure out what that should look like yet.

I think it may be that you normalise the amplitudes by their sum, and also multiply them against the compensation coefficients which you then multiply by the normalised weighting filter and that is the basis of the amplitude compensation, but I’d have to run a check to be sure.

1 Like

OK - I think the maths should be the below - basically I’m estimating the loudness with and without the compensation and dividing one by the other. Took me longer than it should have done to get there.


----------begin_max5_patcher----------
2649.3oc0bs0ihibE94t+UXgxSQcyV2ujmxLYSlHkY1rJSGMJZ0pVFnZVOsw
FYa5K6pc9sm5hwfAiwFJfd6dZnvTkOWpuyk5Tkme65qFLJ8EU9ff+RvOEb0U
+10Wck8RlKbU4muZvrvWFGGla61fYp77vopA239tB0KE1qiBp86xuedXw3eI
JY58YpwEN5fwCA2DvHlWETyqHzPPvOWNhjEyhRhUEVxgJuXzDKQRG80aQ7Aq
5Y5hhkcEVdU2kJdctxQtACB9Yy276Wes4ka5nb9Pbp992lX.kFdGKYl2fHV6
RBrAIgs51mENSUnxtWkDNJ1x4fFkRzNkxaBFLJLY5fJx+PZ1rPKyxN.4eWyy
fgn.vPh9O5Z+Y9r45ql2yT4pjhvhnzj6iiRTiSWjTrtDzfJEBHNco6M1A.NH
mEvw3zYyzR2VJm74ZYIKLNP2g4pjbq3q+f5gGxOJMSopnTuXeCA5CTC2rdA3
QgelJVC.mDDNadbTwhIp7VrdPbty5wJQTP+kHzoWhd71mUQS+kBMq2hnP3HC
2SQGrn.7mnrKyVXPseaclw4eVdf9mghyhI3t8OQIXAfG.GBDbFjnafoRJj2X
ix9TMpkMVde6rqKnCD.rJODSXQ2z9n2NOw0RTOqo1VpsmTuLOK3O8.L36zuh
B9q4iCiCylkNQ0JZAhvN6XKPA5LE5GdgdIk6uSOi2lw.xZNiIVqAjbHsuRGt
mRmNuCSPaOJh+ZbPd6YxPKkNqKYBt+Sg6vWbqIqbdkQDDbjxH7rIiGuObmKb
g3PcgCtvtvgkoShWKUSl9Oi+YQayxRn0MD.cnIPdQcFMYTQZXaYZvrnWHArJ
2odshC1EcdUiqFpm.0QcCPCCvCCHk+qChb4LJp+FtuQBq9msgUMuha0MkK2d
mGYX4m1o3h2VbEugD2NDyw8lf0+U5AOJA0RGa1caT8CKuZtdcoOOcQ13k2pk
kgHXE6pWsidYB1E0sVmL41rVmRylnxrLYipbuRZQyTFbTT1jMydororF9mzl
U1eoz2jKl9VzQJCq5yrnIySiRJxWtZNWF4T9PuqW5D2YrSOAJFZWPCbml43n
D3hg65j0lkzPuSZTWHM1G5WXWoD3HoDpSTB4AJ0E6hkx8QQHZucO3K7A3R4R
jdw74v5JkgWBJaT1HeOM2kDMXagic4VENe9Spr7xNaIgNGxulZYKwM1OFk39
nMosAYpmhV1e6teLHLSm2XgNowEYV1ZvKLWA9GXJLUVxhnRYTKbZRlW7Z7l4
ykDNyMz2sXRT5mKBKVje+mTIKboOpEpGBWDWTWQLZ5CQwwiSicr2UUeiNW2x
LJG391aJubUe+IyRWkDHTbiYArPLGwrszMnz0.GkiAtbPDJQBPltRXHNgZaI
PXJ1zBrwvPqnE.JcT.HE.hqk9RvaLk2b0vBSl51XID2r7wxqNOKcdZ1xoT8P
kU8eQQ5zrvIQJWwOsPX2TrSc612J82ZU6VcRoNclVgFsbLqi6plL93hwgsMA
DNdr9FWSohQZEjU5HTsjZawcWaM4bfJVMaygxELF2pPE.nP3ZouKHT8wNZZs
gIADH2RRgjR3b2vPR2shxpFWtlniM5v5TEAXN9Dx3H2rn..fj5D0r3I63tOJ
wXvnplYwRDzNyhpfFHtffqOyVG5Q3TH1xeHIVy1tgC0bxlh59Q3Uy96.j2Qf
WcXtnBbK3.pP3ZskTsILmsbNmY9g6Z4tSmDTd0dnlTrDzp828umqRB9bXRdv
mUyhFkFOoZUkGoAwmBKJZyfvvHODtz4LbsM4UStnec40sNJ7BC8iuq3d6v.8
zNsayTaaq4PNM0pFXOVoCJrZj158o6p17j5npFVww0GzFJITWr9r21kurSyM
I03q24NfvAVyAi0.9O3lacdXmV6s2kEEF6KSrub2+nmPYJfyrJZ.ihgVnLDh
fnNDxgvfPfKFtDwH1INpDp0gsZF.YXMNxRHNgIkks.xVAzhcAOglzObQqLXR
aHD9xDQVaPU4CVGxYxdwF2RKzTlK3qAMXuOxKO3taoDbwyXpYr8+70IYoSUI
2YUQ9AhaKPaz3dByIkNrZpUKXUAVxcNFvxRmflKQa04qze9d6Ja2L3dmz3.y
8G1O0xACJ2bJnLEwsacPP4VQrePkndJzyX02unnPS+VPraGsWTor.ksfdKum
R156MAddqwTeHLJ4acjqzylUt72tk+Ys7mizlY8xyCrzza0KmDdB8lho9W4w
QlZyzBO0X9DGlO5c5kq4kr1UpbF0WeTMou5JVGBe.aP03S1VudtrnWFWj0Su
HmNFxb7h+1YB1cVc87CoUG0T+KX6N6k9EH1qB79cgrGm.dkaVLaT6LSS9Z1N
n4If09wnwEmH2sdkMMmH7h2bYa74woyUeq8xjerQOVuX2Rr4mSEV3tvQ8EDz
wrqGb4PN2oWA0n8l.cCK4Cz0PjmvH62kN0rnjdNof4LBG5BnPvP6BkH01gjK
XVv+2Y6YikNip2uD9jx7H.8s95ZtcLr4vXdAUzSByd71DyCkws1002SbeWqW
aUoI5YAQ2QwFHU9O3U6jS0d5Hrz2CUSCtGaDuW9AuWIMetEie0NUnx.fxSJn
OtUstVxM2ahVKPInkjLo6ANsZKV1pg+piU23821.ocrqBihU5PltMx68ooO5
qRZ804QIO12sKSKk.QU3XLCn8pr+8WnCCayx01QOXa45qCjZaj+pcdv1c75s
1ecH5BI6Y+2kkzM0d0CEBt67zYzs8apC+wit0j8EyQ64RmrTrIUh8mBcilfU
QvoU9EWNE1VsQ.RR44xPJwBdYKtvqKPXV3KLyQ3ueNiD0WrCuDTsSoYiok0y
MrGati2DX6CLPmKKBAgoHY83ZFWjPeyV0ddXZlw5+Vg4gzDEUGPisa0hSGtv
bpztowVmwP7Giqp5VGcaVz8.kzuhts1Y5y6k.v8H3793Epag88nzA4kmxfU9
vjq64xmLXV5yI8lC2quUOxg+sWC6OCBPRp6Tcv4XLxY6ff5zd7OC9gLk5.3P
q1qplZPlIAP+ybeR6YKoHr2rmf.XLW09X.MyYUkLITR8OO9eTS5M+wqRACVs
9GPYDCeye+OUbb5y8WEhntCkDW.E17FATMpjtuC+FUB.hSg.f9in.X29hOjF
e.PjpRHQ0YLQcGaq0Co4EFb9hr4sWlzsRvj.b40fn.lzhgQBJCI53AOlWcBL
IPp1sg02lw6gWMMyTiUQO09N20DloZwqqXNv5muT+vbtknXfE8PyuW.Qiqck
n8CJKievKOk4Zi.oWijjqRlj+VKBxJkr+s8Z7z5B3P.2sWSDFPVdf94PuhcJ
BmuuSx8ZEi5igEoAezrJzAdi94EpGVDGWr2MXYySepfRgtpSyvbr6YOfostZ
aCuLOqKbaWYUo3aJ8Q0Ic0qBUwAsoQG3R0QBtvkiBtxJ.ijXo3xqOT4usddA
d1TMmW6+dMALZK6ZHwkJIswc4tzr6r.vrtDHqiOJBMWZPnTBbokpM.Hk60NC
.vv5m94Mrm+9nrhWC96SSOHyY2iNmcG7L2y74kSg1+6X35e+5+OfS6fh0
-----------end_max5_patcher-----------
1 Like

It’s a bit late for my brain to fully process this, but if I understand you right, this is a ‘drop in’ replacement for the two sets of filters and k-weighted thing where it “does it better” (by comparing the impact it’s actually having, and then correcting for that) yes?

Ok, in the morning now. I don’t get it.

Or rather, this takes in three lists (all 8 entries longs):

  1. melband amplitudes (the output of dividing both incoming filter responses?)
  2. k-weighting (the loudness approximation (which hopefully @weefuzzy has some better ideas for))
  3. “spectral compensation coeffs” <---- not sure what these are

Is this the “original” source loudness per melbands? If so, I have this as a 40band thing in my patch, which I can then apply the same smoothing/downsampling process to, but that may be lossy in a different way than is happening to the summing of both that is then smoothed.


----------begin_max5_patcher----------
10377.3oc68s0jiajbtOO5WANL7Cq8oGt08KmWNdkks1Hrj7FVxgBG6dhN.I
Q2ByvlfAH3bQaX8a+T2HH.I.YAfBfrULs0RiAWyLqLyJqrp5K+6e0alsH6SI
6lE8+I5uF8l272+p27Fyozm3Mt+8al8R7mVtNdm41lsMdSx5YOXuxhr7UI4K
yVmkaeGf4nGp7CbNH5+Ws6UeaH2YRWYdiYKd2aYnCuxM6eIcy5jByWCd7jY6
KNbVf6raiKV9Koad9w7jkE1uOlxmCTeWl9WFFo++IAv4P.fJHbDBKoLrnjnd
IaUR0WY7lmWaNAhCle3jKdtcNDTgC2lmsMKuHMai4UNmpO8+yW8U5edvSw6x
rWdIYSwAoQQxmLb1L77n+uGN4SYaJ1D+hgNm8mSV+gjhzkwksI6WrXcxtz5L
l9EUiKjBFhv.DIAPfDhgS.bHBvEBfjiEVlCwIXBTHDbDkyp2hVs8CTk3dJdY
R0lOKIcRCpusx5W3tze01pbrQogFeBApauQRknGb7OHTwcL8SFQnUHesH4c6
2Uj9jR5cnUCFv1Lz7n2+1Olj97uTnHznmRWWnL.b205zMIKy1uonpEw17jcp
2jgZdrw63xs8ibqLUdGzJCgBayLlLGbZyLjQ0WiZLKCXSIbdjpoY+5hnrmTG
8790w4o+poc5OtJ8Co6zpOM0xh6gMKdhZME2CslBgwUMULWR4bD25ilCvkMl
791XtI4iJ97r1x0YwqdIY2NsnpTDXYhhOuMwRWyl0jHqK8RAamooRiFLFfNW
CVX5.CgBKOWDsH5oV40Ept8l8PzrmThlhlYbdG3bzE3bjbNUw4Xv4bt8R8ly
UDuhLZu87AGedru+zMoundBSe0fF3Y5rRFIWY5pbd+XxlXmUA3RximxxeI1v
xr9JgZR2fBFCciOj7os4Q+COAi9eq9EE8OuaYrx8lNznHXGsOvMplf5pABVf
MFHbnVV.4rAw2K1WTbz8byZ+MwMRPuU.7lSYVNkikyIU7+IfJ+1HhgsIgtur
YmypB9rg4kWdIm7LD05jGYZNklPz4Als.MwVhIfs3H3HxVnlXK5XxVRKaIP3
yUImx1N1TvjRzjwj+MUjG6WsQE4weaVj5l1lrYWbQxpKNhfpBDbXFiLUZ3OA
ogPtDlQLiwAl0+CpNDiVkta653OGksY8m+GapAGDF9SnZZ01iVdQZimBbK3H
tLLbDQOh1PwQsDEv1nM5fVVqMd5Te9bdXBJVMhEiYmkI4vic4W8YrYP5Mk7l
xjOccxGRx2cX.7O3Ne71sUN8ap7HZAx6ripR7P4oR2XOEr7T4ItA1oNKs7rw
4JJuPQ16ysil6SLxriuFUTS4a1mVlKASSiijLMB5QAtaqazVl1pCWthJrome
HxXnxH1bWHpjqIcRoVms78Iqpn5nZwT9TR2TMKB0t7pjmhUig8wpdIgn4Md8
CiGrwKVNR1+TdZ75RF347zUYazDQsVB8oO74Ti3y33ERqxLl6XS71FdXkJlR
rzxE2oXx86VDmqanbwkgNbwhrr00uT4ysN4oB2k2ltYyIRwhrssewbc5bZ+x
KxTW7kK8tMWY2i62Xu5iJchhG2E+g5R6h30qcVp0e8eJVMpEU2FEou3Fdc4E
swl9K6VlmsdcM90dkOzvUVozwWl7wzUE+RsABouh51S2dPIZVYq7pzmS1UT+
bEwOuq9Y1U7YqPuxo1uvYC+XQxKJOmEmbCJqizcE69krOtyciGTzpJ.Nlu5p
1zUc6U67Wx8WcWfqVTjEW8Js6.7Tmf3pOVS9Aa2WXq9CMtCQBi4BVVeDPu4f
eemClvKLhKxVsneBCX3EFTamBnQTVnSIT7yIMJLfyidKaNDw3nn2pZWfbBK5
sp3DILFBxidKcNFqNAXNhi02i9RPgfJhdqZzAbNCST2EjMWxfHj5YUAWio.J
V+Z3pCgp98TGpB4lfL2f5PLhRXR08RlCUi+mp+Bn4bARxnlWFVMNYtz70TuV
HintW9b0iCL2qXNh.3l6UcnTEim8HNCJTGphfPM.a.GZdAbFWMdF0gpOFRvg
1WfDouaCSHIRHmaNKgCY.lgD3BJfa3AAjhEVpkvEP.zvj.MCycuVJfPLeWBB
RflSRAPfTeRULaRLmZkRDImJvV4ASIP4FNmRETp5dUs+XLVKjTRY0qjPp1nU
KLZtnWZvnV0fQ8UCF4lYJoIWFTyn9g.De5rn+e81H37KZQWO+emYVCCuTQol
XGqk0Y2IY.b7kIp6SmCPU+ddHXdHZV5lKHev8P9f7S9fMZMbxT2KPQz5n0Wt
WfGtTOAjdzUvUDI1jfBAfaiFiOYK0GuMsGF8oxP4.M6ZIZ+KJdQXWNPXihFm
gE5WvEr1Uo.CK5BLXtT+GmCTAUKjHl4b1q.pQOGxJP0nWMz4lUIepxP+Bhvx
xGsncvn8vByKU.LxJODHm7.GX4wwg+o6xtkf5Mjm95MKn1ksOe4AclCNgipS
bpAxTjtobzv+0i8lE4qVcmoBnuTgx3NBNVTguDAYLEEDKGdcp.O1Tg2MHiFU
H8jJPmIyJW7TfaKkct4UIkAGEJyW6YsivQqgi4s5SqDg6jGRF3LcFeV8nM6V
OFWTjmtXeg0KX0ra1orv775rEwqOI0IMkjlu5HwcqydLKLYOlSjeI6weI6we
I6weI6weI6weI6w2UYO9sJ2UBn.ihdKFNmPTijhnNDOGxn.IyjRUHShApyBU
2f4D.nZHWDSpYgDpfpyNr50PnD8CCwyYbIBXxFpdp6YX8QXHioyxKatfJYBd
za4y4BHR.MImVvABcZU4ygXBEJLuG.fI.l6jp5jPnNIYNByPP8qQRgRFR+p4
pwEiruFBGy0uaxbFgZNohvnHN0leYhMEsTH0jEZkFHABMOJctTcHVZOjIXby
alyIJZQ+dYX0inS1NV8kETSNyUbEiiD1zbqDc.D1JlDHD.aRMsfKY52EbNRf
nFlUw2ZdP8TX9bImAbmEoISX64Kl8k7E+k7E+k7E+k7E+k7E+k7E+k7E+697
EGfL676jbbc+lBv63zldejV46iTreWLaC2GS7R.lDpemju3trITXi5J9WMJX
wbl5O0HqvB0PhQTpdKU0vNQaB2kCb3MfmYxIimaZ6qvF0suBjBcahA5MskkA
mBtj.HAmKeY+5hzcqSWcb2pe4gwUaWEy68llam5eeHuuWdmkdPDIN9jp2mhI
NrSo0CB4zI+owMdmPEaZCa7NvXrwiG5lvkRCylv0sAYZdOGNrMg6U2ho+wgt
ESorvrESOrwKUNHOeCfYSUbnkB+55ncWYGJ2HKSncfkud6NSxmKgTBkRHDt5
HnT4GAOtas3+Ic6dG2LwvvzRefsozZ62MSKsXX6r3g4oDcm3oDdYOkP.g0Tf
SrF1B+2mNNIhv33DBEx4vSkDM1E7cuezxEM+.stZV6fnmvhyBK4NysJLLtUa
Vq.yZPBLNdYqNyyd15CCypto4FejnAWCmNuqc0Sas4Ws5bqBlq7homzPz7H7
7Hh6+5l7.OlFCH8jwelw.Be6554URL5PKJrEgI3v2WSaikyhySwaJh9ayR27
gj7hjU+sYQ61pHq7i9Yt1t0mSByd+lqTdzNTUwoJq7mPniSExGksqudEfU3C
dkUkeCDB9gv148lyMrMbPLXadM1UDmWnmNc4bMXYwYZQ4wioft48fwCi6CIw
BRcnZ3UHmhza2e3n3+zJI.ygBHAXX8JG1QofHPiLiaSrAbN6To.jSGjTH4WW
Eu72ZJYMxNP6fqQ6TJ77VPB8HBDFvEd653O+aQuKSiak6Zs8ZW5yazSX7E.6
HNHLwH6Z8jxyk.7gEBP63pxtMw4IJez+Akx7yIEMAEGkSCbMvtCEDWVR2ZKv
LLSgbTvajcwurccRzevNWCMxg3wiCoL7QNTRGENznC+44woOEEq57QGWRjnA
9rb0a0HrENP3iUTgOgHvjwnpwKIaZJQHxwiY4PRElkLLTkYh5okDpdZMiDUX
Bs5UPWqDVH6ZEaWC8Cruz1XanYvXm8ecjgAAZ.YtoBwZWCgiRBH1F8RxZUGq
qtZGvMNzyfF1DBI9xFfo1FfABftAJR+xNf4K6.lurCXF1NfodTMmrqO1uJMK
R4tZVmWQ38dwGJwmmWDpMYiTQ8PZBz5q7RR.kBxtc+VzywoahVqZKhR2zhrP
FdQAlxlS3bIfPj.LWimOZLz04DbxkEVsgVE.7vK.Dzy0Er7OcbX+Krtu2u4c
YJk.90WL7s8+ZaEMSQ8PxIthpiMazVvXWO38IdUx+O8aWYwveR.TsFDU.2qI
bFbtjSXRNPYKIAT.WIaXlPHYvodmULTIDAGdIDSILtejPNeuLIiLmiEToWxq
GttjiE98oSyRN8tVCRPBp8WFyjiewqMUMDH7pZTUeaLLChYBhjA3BJrEA1qO
SSDM7xKBELGI4TtFfBoHJTZhE.O+nzhCwX3MzPU0NphcSuOQkgwPEIBugZi5
cMJGgHMHPpTBApwfCDHFk8JqOzQX+ZhUAdcdHoH8dZth76VpEhIBhhZv.LIL
ZgXT30Ba1ZtAwHDQuQxQDVngCUYcmY8WLRGgcGaiZiHU6+QYn5WL9UYutWXu
y1+MgNgNGhkXBAwPHoxCnrEA1qudcoif7BRXywPIiifXHjvUBG6BUop3hpWS
P2L+cPJW61fygAxeGUFdC0l06ZRNdCb3M3v8Fgn83yIms3fjr4np1obwMTsS
xEygZXgNPcOvFCvSnIq2FEiPCdWe7NoD3MQppKVXpAPRYAxVFxGgXWZR2ztC
5GqdYuNbAbE4ffEdPCnI4fElNtG.MfAfvBBd3EVt7QNL4CZp.UAgH74xtI0E
JVDZ8kwADd8cawqEbi2dAm2AXCXTIBe1a9rwbu4itGZOzoE7NfJn2ETgvWcS
vXSE9nbpSA93g9Iv6gVDru1HH5XSE9zhfFUYg3dnEgfuKnBlmsH3QmJ7QVPF
ytQzy7bDxWLdAdRzIUJj4fGp7Cb9nRu8C3ftYjK02NEtSnWhutLuSnWrOlxv
6G5k6qqm6D5k4qSp6D50GW6z6D2Y91gHdLAqNJ12NDGywUQuKFhIUdO.5YTo
u5wiYvALe0NojwlJ7RVLlHxmv2v0ZHGE07rXx8itbMhAHNl7f6TXIPP.pSZN
Cf.0EDQ.Eg3bJeLcAI7MmJMD5U2cYdL4TlUCcKYm53hoWufS+QyRZ+wuOYy9
iIA6vhuuYtbwyOktdcI48lyti2L6PdPcLwCUtTM1BoA3bglsvPLWiHrpiTGX
lpppRC2yAO7fDJQBP5amvPbB0bj.goXiLpgGEc7aBfR6WBHEVUBr9TvZP6ha
Ihq2nnljixAUg1WkpPd11r7x87vbrr1ysuH6473UotLLVhmlGauNtSMr.Kf5
NOeQrqyqpF4Bp9NZRwrrQ861uL12FxZMEDNEhMxQjDKj1inPfdpDOQrLKd4R
E0V6w0EeUoQTRnJwp4Ht8bm9zU2QGJ0++isIah9w3M6h9wjWRWjsdU8TmmrN
4kS+ZbAiwMjn.nqarliTeXD57O2N0KXotcp9a.o3LCYBYbjUqQ..Fnl3jWfd
VjLO6iF7MXWRolDVhfLqf5f5HhKH3y0jTFM0cTobBwMxKknlv4VFPulUzGQY
m7r9avUpzcAatNn+W2pSTZqI3.pPXOpQF9TqN1AsBMbev31irusW+FceebQg
uFcU2rS+0S55s5FkRiNJ08yOBD9e4OU7n40.5kOCIU6.2pwR3.iRkVmB6mOC
+0IN0mgcefUu6x0Iw4Ud8Pa2kRkwE09QT5rbbGLuOuO2KYOaMfZ5nyezW+ly
c5QGC641sZPitUyO+S+a8xbApiww5fWaiX5ufeHZmqatPAblM.VFECMlK5BE
C55cw9m+7p7rmS17SF0pq04JgAg.aDURDiXzsnRnvrRNN4CUFPbccRczbl9T
UzGkYiKPqlXXY4kLjfLrxUh4Q0q2eo6Hf7N1Nx+Xet6hEscyHwnaFYVs.oK6
WzptdYZ5HOLk5xiehsz2lrI4CwyBPWHMa6zkdcDXI255EKccDqOEEOLikVFz
Fr6e1AoueJq5h097iFjkhOFCxoxV3q2WTjsoGVDtncDkxWf6H3TQ5eSsRryq
HB+aiS27a8xIDtrW7yOZ5H+ceLU4GwWF3LmgPmeli+LozM5UGg+uWCEI6rt9
IT70hEqCcT0bhN5xa3jtWtTRGGO462krp+9QZqiyljsraB688wE4oeZYQ95.
wkSBQqw7TucRNTE4STCuKby9CYqJALvt0KQGhbYvRtaTXK+PucIdqbx7C6eY
g+DbSdVOOvkIj7+KoKK5lLuWZVSBqXPO2WkQN9iKy1lzuPGONqURr9O+Fu2c
QC1OEuXzGxdSZqW0O5jv7pQ5uXPCRq83+ZHOE2Fmi+T1y5wOOJCI5JMxXNiv
g1mhfglDDPbSo6Tv5+WuzgIB+NXvH+b7GRdJK+keazas59nK.yoirPXUb96e
6FMB48VSxz58XI61TYUltudLaHsj0ORoKMd4LIWNmxBCcLB49FdEytQKadiV
dumpY78cN.CD.pr2lGiWOpKyqb0YHcw5DUuT1EVwWmk89KOaoWbRL.doBeb1
bO6fwKUz9S0utTduvX5Fampuaa5l22qtSXJY.PTFxBVi+OD+VI.98jMlEG+d
zy7Y64yctgxwYw07H3pG4Wmld9oayL6gZ+dsoHpCcMEvE1mer3MnanWcqsn2
aGm+OqQA5WCAltVGNV2FhTil0kQ+PK8meP83Z4KDHIt0unThEb2QbwjLJ4Wh
+DqBLa2iPQE0GiK2oTOBqaoSTNF+.10BmSfNgtjAADlhj06iW6cCNUsq0wv+
qR78sEJng1KJWacmezUbrxE5UT8CMdzMJDoP5R9bK0tqQbJNWz0DeWYcrOY4
wyhSNe858IuEN.2TXH2sRsN5qVV0C8TvD4Yebyf3hq1OyDvE+KeNdXLA.Io1
0oGmiwHqMNBphTc5XhuMOIYfbgoUnLc3PlN10oiA9dkm8MEwChEDD.iYSlOC
nX.SSBSZvexohO9OSVMHdfWF5MrbL0.WOuSEO7emrdc1GGVSAhZWirbATXFS
AfprRnWaRS0qeXpD.DSIih98LiZlp0uMa8.UKKSKKUEYL0tDgqFRwnxDa2mu
c8vC7iWt4.HPJSXmCKsaNpGipg.rA+hn.lzXfpwvajXJ3+7jkIoev+U.QS5o
k4e3HuCptcOFWFvNLZsZX+xsEQ4XW55Xk61vVJqLI9psb2VM2cIGKzVup5U9
XCl+9MNYO4vg.tcN1ILfzsG63P+1tE21lsh3s8Ly+eWbQVz2oyByrQmF2Uj7
z90qK5+DFq2.vbiTlUNlQnA43upcETPoP6TkwvbrciXxTtTXSSCjk4mHdOv4
HCI3Bafp3RSaLRhkSRuIE5B50qw8K4G0Yg8y8zv7aRyK9bz+5yYy7XNB.ZUC
SFWvNMBkGI2bT6cl.6vFrr4Ia.Jk.6nXTlUD2xrhA.X34ajq5MFZnHMDMFt2
wgWvLckqa0i1pz2iwEE4oK1WXg5fJR+tUM4ddc1h30mTB3ZpXy8UGStTnpj1
XVHqj1HA3PUy9Nt1Yiogr1YCIFvQdfUK6V34E6e5oj7RtN5XwHtUAvSqyhKt
L+SBC+qBitRMLEh4igDnHZQz5VYVCO9PKUkVDKL7oqxKi4PScV6jpsVWqCuZ
eL0V6rsTm4ZhifkEeVkWLkihhj7GsE6xplmJKfLE0uNc46uZ4mdWxQWgWVvb
v2JAb7QUuPEyUITc3oUv1SJOO.rV3QXVIIwVoWYgUi4CIeZadz+vSnn+n5WX
z+7tkwqiy00p1xJAfm00XXfJjytBUNAZXeLCbCUg.utUg3DqiVc5ip7GTmxv
gpPMHAK60sbk3.2+QQt1RsGGn+TLBLxb.DvrG.Db6ADgzbf5JtKQjB2AX28v
v16AHP16ECYtCnT6Ab2CAYP6CAgXr6RDj6oEtmhwrjChfcuPN2QEnCeBn6lQ
taAoF8jir3D2GW5nON.dfPQGN3vqyReJIu8gHp+ruOJz8PDjiwwxChB5gy39
lXhiq.THwI.otSPJizwFZ8d6LUJ5VwcOL9.c8hRMt.Q1pYODdSLUEjauspn+
lptdSXT5bIkyQp+CgkTgd8ZLR8otZQQVb256Dy6PzWWuuSFPLWMxOpfX4V0f
QU8jNrftufeIBfhLdMfbg0AEjfoVqR7gyHoVWLPkCJg6RLmKAoyVlBQTmCEm
kKwZ2xYN6eN24lC4tSARZ+PTpykHlycdtnbjyWAx5FgnFet6LNydLw4BSEvp
8C.c9fHfCeoCt6HXf8ESO75XDG4p9TNmQH4gWCw8AbtrYBfyWlv4tiRbTLm4
bYKn.qbDwYb6AHLN.tkJqN4gI1r.4WpswtFs6krrhe4ax93lcwurccxOtUQA
46eoaFUhfZSQYzFJ1OUGIa0WQR9oY43oz0I5D93xxArrv1ucakSWKsTJo06r
42orDWOSwI1SUV8Ulkm7gzCOOs7rw4K0I.aYw9baNR9TkJozLc.94a1mVo1o
Tl2G69UQmakcacIyaVk0dyrJhFSuTHBwVG1YFgAiyqjupYKddc1x2mrpZcgY
V11jMoa1p2NgaJJwWyxK6xT2iUSSkNVqlt9g7M13EOhel4Uf7hYOmmtJailH
p0TnOckTTZ0toUYFycrIdaCOrMMWsbwcFj6bQbttkx00IpLmUYYqqeoxmacx
SEtKuMcylSjhEYaa+h45YUn8KuHScwWtz61bkcOtei8pOpTJJdTmRu52W750
N635u9OEuI8k3hjhTaS.BTdQa3C+xtk4YqWWiesW4CMbkUJk7kIeLcUwuXWe
YUZu6P5COlevZvu5ImZ+BmQ7iEIJ+OJtn9Mn2NW6J18KYeb2IYhrp.nMPc0u
pxz4As4Qfam42uVoj6BAvcgf3Z0EZaAy0d.cMETmOA1053vn1TEHH0BtipW8
vXpKiivoqz0UMxuqzQ0YsTjdTmsf9IdT9mImIdjSc0RLtHa0hdJbPifvwrLp
41pN13HLBhI7crELADLSXW6vXYyFjVh5UNw6rlBRvZJPp1hW6dSEzQyaJBKl
LuoGJ6gMJcJGcTTQVjH5Is53tnEeNREhVd7yJhOROfiOGQiz2q9tpUaeqMbR
byxQY3K9i5BipdIzQzEeVFRvkTLGinbC1PXqMlD9DJHW9KYaixd5onWRyyUl
rqbhxtJq3gWVI4VQEDNGBAX.lgjBFfqWeTLvjKonucaV5lB2vyS0ylXKhHTK
U13wPchLWuCOwXz4ds3lYaFimPYjUIJRw.I4WSQpEoDM7RID0JkPDS+rbxjK
WVloWtKEZuP0iBrgjmGPFWPM7sfbLHCDX55B6kj3MWrGrxEfPpVknsve6gb4
JUtZNvY0HtGFZvutN547r8aiDCXntvQnroy4FwDkBmiwRHiSjP.UXVDdSe8l
OPZS8ZnldJn.pN2qzot.eiTmR0teoCQahNZZSDFaNTvnRnR9Pk1MAFgeCjR4
IeX.hHDL7hHjRBnC4AA0k8EgfgELHTx45MQA9VHiTiZbYRDlMDAEJ7BJn.XD
TPlXNjpBelJAbBiB0a2go20z6TAFFg6a1cZ2yMtuiVy0AGRMnMLfBoPAjHw.
hdQnCcKNsIT9XVYdl+uecsAlRtnnpbk5U4+c34ZWJ1G25TeRRFDQmSq3Vmo2
CaH.0sdzc+oWI6ut7eMFt3cpc2YtuHCQLwFMwTiNunzWkhI7HD9ox7yDv.BO
mc53+uIhIST5CQHQFMgDVn7UgI.HkwY5keld+fQg2Bcoh7j3WFTzmX934ZRR
mKTcFhkblfoTn3nGNriDBsb5D3ioSAEztD.Lfo7AY622tBN.DFhww5Z6G1jM
M7ove2gLZTeuunHzMqR9Tk0NQPjVmhOIMuZ1CXxQbiGgA.lQ2xcBDBBFVAxw
0OgN8WsLq3csbsB8sLzhGyZxqIqCcpLIW0ZHekccBAt0zlncZCNRzluE45Rt
XjnCp2zwnpGg7kLPiKY3sYkdPaQnQiN7s90WRwiDc3sIDlOpzgtUG6k7.M5z
Axa8C3nRG9oevFc4wcP2PF5fbGnmR6j+iwiN7tJ0efhGG5.i8UOENtzg+5o3
IOV.uINAcxig5f4x0EbiYym+sdiIU3sn.M4pP9RZ3oVAR3qCQQ68Scb7SlUG
VKCf53Zce+pzrezrhye766PIxHfPJsF6KfVDdWi.2VzE8P0S9RnJcEL1rDLr
IZTLEGVPh+UGzR+c6WF2Of3kSgXGBKiENrVlp2rFdgrR9WujOEBU9O1l3JoA
+XxKoKzf40UQIGtfw3VDPG.EB6QpOLx6hbBGo3LgE8q3HqVi..fcATlQk347
w55ApUbX+Dbrh.4VzqRRINnGifjVlhx9cWwk2eXq4UnQ22GW75D6i9K+ohGM
uFP+.6pNTfcZDmd8FJiNsRnX1lVWrnN3P+box3hZ+HJcVNdTvbcs87APf77i
taqw8CvbtSO5zVj6QitUyO+S+a8xb4XUFgVVZt3Gh145lKT.mYqaZLJ1BOrP
HBhtdWr+4OuJO64jM+jQs5pEmTFDBrQTIQLhCtDghlfvtlgXLjNZNKzRhfTl
Mt.sZB5bHF6T..jgcHPNjSXRo6Hf7N1Nx+Xet6hEscyHwTUt6F8BOYClRcs9
6VwV5aS1j7g3YAnKjlsc5RuNBrjenxh35HVeJJdTpCPvt+YCWA5pCUb4wn.c
MQ1Be8fJCo2zBm62TYiy+phv+13zMiTo1bRH+ceLcHkIyaUUN0Q2nWcD9+du
KL5WoVAOzBEe2qlqWo6kaSkJ96RV0e+Hs0wYiPs7Mg8993h7zOsrHecf3xIg
n0af4eaTqK8WnJIbO3l8GxV4ekRnuQtLXI2MJrken2tDuUNY9ASALwWBtIOq
mG3xDR9+kzkEcSl2KMqIgUzf6TwqxHG+wkYaS5WniGm0JYIV8e8w6cWzf8Sw
KF8gr2j15U8iNILuZj9KFzfzZO9u1JTKStywep+k+hq1W8UZjaoZAClJV++5
kNLQ32ACF4mi+PxSY4u7aidqU2Gcw3W5YWEm+92tQCfcu0jLsATRj5xTYcVc
GuKEj6ly5G4XoAtbljKmSYggNFyBJ6DTjtmlZI6TMiuuygme.P05X0H75Q8r
vz7mVrNQ0KkcgU70YYu+xyV5EmDCfmEw9Cyl6YGLdoh1ep90kx6EFS2X6T8c
aS2799UO8zE5JQYHKXcMNh32JAvumrwr332idlOaOetyMTNNKtlGAW8H+5zz
yOcalYOT62qMEQcnqo.tv97iEuAcC8pasE8d637+YMHM+ZHvz05vw51PjBbc
vSoEPbqeQoDK3ti3hIYTxmWA56bQUs9Xb4Nk5QXcKchxw3GvtV3bxl8sKYPv
Uwpq1Gu16FbpZWqWaCdSuKYvWoEJng1KJWacmezUbrxE5UT8CMdzMJDoP5R9
bK0tqQb5dwtqI9tx5XexximEUB9506SFTw6FC4tUp0Qe0xpdnmBlHO6iaFDW
b09Yl.t3e4ywCiI.HI0tN83bKLgYJo0pHUmNl3aySRFHWbqpJ0VF36Ud12TD
OHVPP.LaI3Ev.PaUVkyjPIc53i+yjUChG3kgdCKGSMv0y6TwC+2IqWm8wg0T
fn10HKW.ElwT.nJqD50lzT85GlJA.wTxnneOynloZsa0786tR29184aWO7.+
3kaN.BjxD14vR6li5wnZH.avuHJfIMFnHAkgljp6cdxxjzO3+JfnI8zx7Obj
2AU2tGiKCXGFsVMre41hnbrKccrxcaXKkUlDe0Vtaql6tjMq18ZrW4iMX962
3j8jCGB314Xmv.R2driC8a6Vbaa1Jh21yL++cwEYQemNKLyFcZbWQxS6Wutn
+SXrdC.yMRYV4XF04NroMaxoaUDAkBsSUFCyw1MhIS4RgMMMPVleh38.miLj
fKrAphKMswHIVNI8lTnq2VuF2ujeTmE1O2SCyuIMu3yQ+qOmMyi4H.nUMLYb
A6zHz33qcNp8NSfcXCV17jM.kRfcTLJyJhaYVwz0I2y2HW0aLvrvzX3dGGdA
yzEVtUOZKhdOFWTjmtXegEpCpH86Vwd640YKhWeREZqoZA2WcL4RcrDVtMdS
xgE7q5V0XIQc6wGp7S0RU6hRbm.cdkqTR6PoqDzdoqDYKZOLCT9AskwRIqBU
nKCjUeGMkxtybw7PsepT3KOIqdz6G4INLxSHvUwK0kolSK72TfQZq5wRENww
ZuKCKldws4lpi1hVo+ovWhqMnAbwqJrkzBjkTGbzNAiWNqg22O8Iu0VfXlJn
kR++R9vizP7gn97k3g3Kwqh2TWpcCFhujuZHC5KI73CgCgvC6CKIHMqziFzm
Fx7QoWz7mFL9eZwnXoy7PYExBgxJap7of8wTGKBwWxK6h5h3.ox3+mN35LDf
ux2gpyP7QmAGhtGH7o5Kw74KwAg3KIlpuD2GMBlbLrC7+SGd6.hGeZJZL5vf
3SSKgDBCCgGcPPHgvX2m3cIgvsMrCBu.GigOeY3Xnr5yWlOFppdMThPnn5i0
nAopggV15UPqH3XHcQdoQEh9snTObDPCQjhTeheiFhHEId8kBhzymHYniiAH
uChy.2CoO1E2ruLmMFhatWiyIDQc4UBh3ihNE2GcJ1TY2fqGixKoqLEIYWd2
XRjtTyIfxZUmXgdI.aK4iW3RHH0V90DlxUm9eEZUUInet6rIXLd6V87R3tay
GY1Kwuyl7RwCl+Y5F6+zjr0Y4IeH8v8ap8byhyWpm7kkE6ys4m+SLaQhxjsz
7M6ScboYpBNAAjsL6UP93SlLm+9W01xw8vjLz7lgnOHbbOQ23dtQHZdE219p
sskUZ6gIB4gup8o0o9T5TUyqADKt4Ff9fRw8Ggh6.5DODjIdPnR7fQj39hFw
dYLb5ZRueqL7dBUo8C0guuLHNhlvMaPzxLh25rgOXB5TTB1C6TO2N08GUfuL
h.2Kz.t66WidhBvu5Li79wBkcTyZznfoQWhfudnJ6Ip81eD60Kz5cHH06vPo
29gPu2NcbOQi2acrSMqhKBlJdMz00mHq7CddF.Z5dEjzsGte6FB51OzysuC.
nqnkae0G6EVy4sV7kTVkgVWsJ52dUM1qC+WghrNhrs2QDUETq0CiaufPwfQZ
UQj1lINuAy0.SSn6JhpFRx5mtUinG1PfMxggZr9gXrgRdUhLr9ZG1Tm.9iDr
ghrOEwW6E0GTBpBZt1LwLDEp9fdqghypfRqd3UzydKGjzXj6x7G5jKjw1.sJ
pp1LwzYjTMTj1oHlZ.06CJYVAMTuih1nJRm5yXItJ5l1KjMMTbSIBlFvgE0a
DKMXL0IHS5PhmvajHMXDekMQUHBm8BMJWCgQCEKUAIQ6USQHokSPIz.JgG.p
fNXlqYz+zyX68OE08EsOGNReNfbn0EHUKHYdH34OKjynxYn0YHdUnqMGMdgF
m8FING.JbN3TZ4IpadWqX0R74gx4TETzzC2sWGtD6GpY1SDyrOnkY+QJydiR
lcGgL6I5XNzEAhGng4z419tZttOGcKucAKcFxU5+XD8bm32Kjpbv7UMbty6v
itNJTNz4KuMzmLHLbETlzmQ44AxRFDxpFBR1Lg0Go5fCSzWThrmHD4H2k9Pb
UU25vuVwpn9nuIc6BH83f0rNGQG81L2KTbLTDXUzZzaJzKDZLPTXUjXzaBzK
zWLPDXMTVzeJ7JX3TfHtSPPQ+6pwGTSLPzXEzQza5yKDQLPzWcjOzeQnOf.3
kA.vvx.nWiLvYHUn+pH9.VXCl.qhBgcL3AOQdvdg5fClupitf9qy3ChBNbh6
TjCzmwy6GZA1KjBbvLTEDA79oGjyQ6OeVkw9gve2NC1RT7yqrDdFx8EfueCH
zmOBV+PltdgHeAioFIdJfiu2KT1a3xiRzz6NY+BTEk77Rw+bjwaXnh2PQDug
gFdshDdcSvZ25blYvSKp1s00DZPFsu5+4q9+ipUyBh
-----------end_max5_patcher-----------

The melband amplitudes are those of the sound being played back.

The coefficients are what you might call the “filter” (the result of the division of the two spectra plus any kind of further adjustments for amount of application etc.), but I’m not calling them that as they are a set of gains that will be applied to each band (so they aren’t actually a filter in themselves).

is that clearer?

1 Like

Gotcha, yeah.

Ok, I misunderstood that.

What I can do then is have 40band versions of everything, and then just smooth/downsample the whole process afterwards, rather than having two parallel smooth/downsampling things as part of the process.

Would probably make the k-weighting compensation thing easier to work out(?).

I drew up a terrible 40 point k-weighting filter by hand just to test this out and it appears to work well:

I’ve kept everything at 40 points and only smoothed/downsampled at the very end. The filter gets flattened out pretty aggressively in the smoothing/downsampling, so that might be something to revisit here, since that really big bump in the snare sound gets flattened out a ton.

(I’m doing a rolling 5-point smoothing, then averaging the each clump of 5 bands down into a single band, and doing that 8 times)

Hmm, not sure how to best reduce the amount of bands here, as the processes I’ve tried overly tame big spikes:


----------begin_max5_patcher----------
10288.3oc68s1iiarbned8uBcExGNI2cU52OteJGmShCPrcNH1AFAmDLfiDm
YoWNhBTT6iSP7u8a+hTjRjRMIaRowXGaOtGR1jUUc8pqt6p9e9l2r7wrOGue
4h+eK9KKdya9e9l27FykzW3Mt+9MKeI5yqSi1adrkqyd4k3sEKeq8dEwetvb
cX4UR1X96rG+02IvkWb6gWR1lFWXdGviWL6PQ4UAtq9T11h8I+0X80jqJu5t
nh0uOY6yOjGutvBuLp91KP.1Jh73OBA6sKflaA4q.K9u0uf+2u4az+5siDIA
sgjj4.I4zYCIacjDNkHoTBVQuCFIQyARNiij+g2mkmm7XZ7e6hO7tOEm776K
Tvzhnc6xy9bxKQEIYaK6zt738p2g4ZOjlrMdc1gslWC5bJEWrrF5+Tz53SHT
9R8ZgNIfzUL0OHJGKPBHhpnZXpvP7zjHMiRfITnV3FXSJ2fB8zXBWRVQnbNR
8uHrjJfyKKOGOCHofgCNR9xgzhj8oIahyKw.KjV7kcw1u9xkuU8eK9uaAqoU
b8Q4QuDWDm+P71HkfRczrUJxd0eW7kz3toRkhKkTHwwdpdeJjvBc.CirF66l
9gEXC8C.Om9gHl2.enhBai+jhTbFSxlGKxh5lh1F0jJ6AOD7pXKmhZnfjywJ
4eqUPTXQ1cK1+RVVw6+SYeZ69nW1kF+S6TfS9gW5GEfABKE.PZwDAuFIn9qP
I.XQbGlqjOSRi+Xb9ds18iev2rTo2u1keSstnIW+ZVdM1U8kR1ZuDr5R4weL
or+zpqFkqPjBEVbH2PlV9YVoOQ5WSlRFc6gDyaxdQ0.mCjLCQaUhf624LhXF
IKucMRCwf8Dy+CBXFhAiyORMT7.Omls9CwapIDqFA2EuMYacqaMt8l3mhTpR
dntNMHZUq2uzNWq2TiDF3+OlmDkVgAOmmrIaqFHZLTnub4m6ur.ZTSp+8Qjw
7Dai10RmUrbJ5RG2buBIOr+wnb8HkSiFp7lEYYoMuUU+Riepvc6cIa2dBUrH
aW22LW6XQ229wL0Me4Ruayc1+vgs169fhon3g8QerI0tHJM0IH270+4nsZmY
hKRrCAHP0MsZ0e+904YooMvW6c9XK2YihIec7mR1T7dyGpNyf5wS1UxDsrZT
dSxyw6KZdshnm227JUFNpcoCO5DhenHVo.RgEMe.k3Qx9h8uO6S6cOXIiVcB
vwovUWnttVwFW+p1R8vd5o5.g3588B1Usc7Yktk30oIq+PCMLcnBsKSuca9s
MSvcZFFVSvqCUyDpQ0LQPVIqYJlJjZmSMdkBIvRySuozDkSa2.GXZX1pa6zW
wR0YiTjk9Pta0p00HOjltyZIOmX6d5INQEYadbfDGzDPbfFq5B8umHhQPDgu
ikfIffIB6FGlJY1fLRHX2wCEjfMTfTiEu10lJnSl1TDVLaZSaFzfSnNUSOZQ
Q1Bwhmzri6W73WVnbQKO5YcLkzS33KKnKzOq9of0eSMBmDtc5nb.jQvkIiPn
XEmprJIYqPLjfKoXNFQ4l3OfrVr3yHgb86y1sH6omV7RRdtRjciiT1WZEO7z
JI2RpfvUPH.CvLjTv.bfhkiAlcJE8c6xR1V3letBT6jDgZmDwlB1IxJjNVjX
z4Zs3HiUE7LRirLQKTHPb90Xj5fJQCOUBQsTIDwXmkSlc5x5rsJkQEZsPM8B
rFhSBOhKnF7VPN5jww3TO8lvdINZ6Esf8TZVTg1qiDMKQWt+N.5B5xzENvI0
HtGlZveMcwy4YG1sPLho51bttMHSnASl3FxDkBWgwRHiSjP.UfwXkBX3bSlB
D2zflpomDJfx3dMi5B7MhcJQq9kNFtI5jwMQXrUPAiJgJ5CUprbwsFxmcpTd
7GGAIBACOIBon.byZJBVwQBACKXPnjykDEmzsfFol0353EX1XHTnvSnfBfgP
AYhUPpx8YpDvILJjyuEpl9UkigKvCM5Ncq4FOzYq4LvgTSZCCnPJT.IRLf.Q
5UsAZV25Yj9Tr3wEol+4ultNMN5xgg3wHsu0N1J2+U1utohCQsN0mfjAQzUz
Zp0YPt1MJpxlXse3vWa5ulBU7N1t6L0WjwPlXSFYpUkWT5qRxDdBb+TI9YbX
.gWwNc9+2DxjwK8wPjHSFQBKT5pvD.jx3LHRf.LEQBdK3kJxiidYTdeh4Smp
IIckPYLDK4LASwPwQ50reRnSFndfNEzME.Lhk7AYs6a2AG.BCw3XtdNulnog
AmDk7xHZTe0eM.51Mwet1dmHHTKKhzQrQfhvGbD27QX.fY1sbGAgffgkfbb+
SnC+UGqJtA9z2ucJ09rC4qK4ZbAEYQSXaS79hjsU6lj+RMcNK7kut2PgNpC9
AGjydvr7M18ID3VCahtgM3DAaDegsRrXhfCp2vwjxGg7ELPSKX3sXkdRaKPS
FbnoGPufC3jRO7VDRaxdBgC8nN1K5AZxgCj27GvIEN7i+fM4zi6.yPF3fbGv
mR6k9ioCNXdCGzoDNvXe4SgSKb3OeJd18EvafSPmcenJEWtNgaJG97ezaJgB
uIEnYmExWPCO2LPBeUHJ51N0w4OY1cXcLApi608CaRx9IyNN+geHd6giySqb
uw2Nr+3yOkjltNKMKu1CT6IdyxxYtuz9Tus1sp5mdCmgjDHTnvmUXkDDhYZo
ZnO0XMzF55GrriDJQBP5GWMUTNgZZIPXJV2BzRWQG+l.nz9k.541aaotD7rc
+1aVFs8Y2tvmebqj6NxcY6xxqNRBqvxF86PQ1y4QaRbSBtho4330wCRgcWBp
dxy2i4549q2Sh0eGswtUMn98GVG46.YigBBmBwF5HRhERaKp9vZb9lBLZ8ZE
z1n6XjZDwPJITEY0zhau1o8t9AtPwT+usKd6heJZ69E+T7KIOlktoYvdhSie
4zuFWvXbCHJ.Pgv1R8gQny+b6Uuf05woluAjByLfIjwQVtFA..Im+Bzwryz2
GRz6Mk8wUbRXIBxrDpR1QDWPvmyIoDZZ74k.BjanWJRMQGNaMBfjVjhxNou9
KvUwzcAYtdv+2TpSTIqI3.pPXa0JBepTGqjqPe5PYbaK6a60uP2ODUT3qPW8
yhze4DW9peNlT26jMfzD.3+4+XwClWCXP5LjTsBbKGKgCLLUZdJre5L7mm3T
cF1ioUyHNpW0yZudSD8UfnR3hZ+HJdV8oQzawaS+K+0UkmsBPs057t95WbtW
ccJjm6VpAM4RM+xO+OOHwEn1GGqBdsLhwdAuzamqKtPAblY3EvnXnQbABQPz
0Mw9u7kM4YOGu8mMrUWy3JgAg.qGURDiX3snRnZ3siiGfcypVmmT6MmwlpB9
nLqeAZ1DCJKujfDjgUpRLckSXRoqEPdGKG4uuO2c9h1sXjXxEiLqnUx5g4sp
yJSas7PTpOc+DYouKda7GiVF.SHsK6zGqNBrjaU8hkNCw5KQwiSXoiIsA6+m
cT76mhpNesOu0njT7QXPNWxBe6ghhrsCPhv4sinh9BbsfyEn+mpcv4eUA3eW
Tx1eaPJgvUVwOu07A96+ThROhuHvYJCgN8LG+0rB2nWc.9+5omOz9wqeBDeM
ew5ggp1CzQedCmXd4bSQyA886i2Lb8HcY3rMZK6lfd+PTQdxmWWjmFHrbV.Z
8AX1akjikQ9D1v6B0r+X1l5mPudXknGdtLZJ2MxskebvpDuUJY9wCu7n+.ba
ZVO2wkYD7+yIqK5GMePbVyBpnStSEuJ8b7mVmsKdXtNdbUqjlCEgey26tX.6
midbxmxdabqWUO5rf7pY5+3nljV29+0RbJtMJG+4rm0yedRlRzUFjwbFgCs8
hfgl.DPbKo6bf5+GuziEB+NXxH+RzGieJK+keaxGs5+rK.qnSLQXST9Gd2Vc
Br6clfoM34R1ukxpJbeCX0P5HpejJUZ7pURtZMkEF3XBh8M7JhcSVz7lr3dO
Wq36u5xme.PsC27T75Q8YckquBoOlFqrRY2XEeaV1Gt7pkdwEw.3EK7wUy8r
FSWnn8Gpecw7dg4zM0JU+0cIa+vfLmvTz.fnxkELCnzA52NAvud1ZTb7qqmo
y1y9ctfxwUw0zEb8V9YzzyOcWhYuswuu1RD0CSSAbi84GJdCLC8pauE8A677
+EcRZ90fiooZ2w52TjZUrtx6GZk97R1iqEuPfj31+hRIVvcs3hYYVxuD8YVs
rf8.bEUzbNtbGS8DrukNg4X5cXWSbN4v91mHHfvTjroMds1M3bMt9R798QO6
sX3PGgBpq8hp8V24sthhUtPuipeaqstQtHERUxmKo1eNhSOK18Mv201G6yVb
7rYkfuM8Pb8LFWuUSggb2N05ntZYcMzyARjm8osiBKtpclY.K9G+Rz3PB.RR
s6SON2llvTx3HnxS04CI9t733QhElQgpvgCYZeWmOD3GTZ12VDMJTPP.LlMX
9LfBALCILITRmO73eOdynvAdkq2vp4TCbVdmKb3+LNMM6Sian.Qs6QVt.JLy
o.PURIzqsno58OLUB.h4DQQ+dFQMK052kkNR1xpvxRUdFSsaQ35tTLoHwtC4
6RGuie7pCG.ARYB6ZXoUyQ8XVMDf04WDEvjFATjfxPh4.+yiWGm7Q+2ADswm
VE+gi3Nn9w8XZQ.6zn0rgCK1VDkhcoyvJ2cfsTRYR7UG4tsbt6i2tY+qQqxG
Gv7WuwImIGNDvsqwNgAjtyXGG52ws31NrUDsafQ9+6iJxV785nvrbxgw8EwO
cHMsX3KXr9..yMTYV0bF0wNrsCaxoGUDAkBsKUFCyw1ChISoRgMOCPVjelv8
.GiLjfKrNphqDswHIVNKVSJz0aqWimWxOoiB6WFnf4eJIu3KK9mdNaoGqQ.P
yZXh3B1wQnyiu10n16HA1iCXY6K1.TJA1YwnDqHtsYEC.vvyOHWMGLvrvLX3
dGkufk5BK2lGrEQuGhJJxSd7PgMUGTi52uh81yoYOFkdREZqsZA22bL3RApr
tRaortRlzZWqZRB5jZLSxuokqYBdFPRNK70j5QU6ZofYr10VV1sZsNOQubwq
kxYFBXaEyzIp309w3OuKeweySvE+8peiV7OrecTZTttBjVUPh7rjtVkT9aMk
n16R5JSWBjOsn1BsEMlPWUa+6UCOchr151PqXLNLXLUq2VmX3EqD0xY2PhdA
nnho.i0YB2KUyd6RVBh5AJitPctlaxPxZNdH63OT8zDH36ILFCBCF6FjmQL9
nr8emQ1V+ab+jowvVQd7.4voXTKlFfjY.66IdiBijcIada3sfMJzt4xhVyt+
JLDJ3FeX4TAQOQE2ETSRCRYZeZcWfS.DBR2n7QEkOhr7Vxxa0RC8LnvW4YtZ
CkSw1OZqMnDNh6YCnAsT+eKbAWgJeMnxGwqFU8pitWRyaTuvJKZ80qa1Oz3I
Ty5rW1SkggGT.olohfnbr.IflLeA1VzsPV9SHjEVgOkIyMZFTSBdpehdnvTX
3oRnMGYqjup8CTuHKB9TnvQWEQdpSbsrpgzs2DG4q7.yujgFjbko5gANGys2
ZvXtB32dEanF7rB8T3QxKpdTunf2.moC10b8FvOxfxrgRgZi2fBlViQ+eGqa
1HbPcyFaK2NP93rF00rP+CpgoEaR1uKM5KKx1l9k+1VlVp.Lfok1llNcovQg
KByjDj7lETv4Di3xvfQDIHbXTG7l6VrUKJkpm.au3D47vnpl.MSwwgj7ZUEj
58IN+zvM8TRptF5t2EtoxJsvxnc6pc4FwGTQP9Uaf1pJv8ZcT1KUUpFVlG+w
jx9WUDlVFkuVGIx0EGxsAq5yriULkkZY47sGRpkGUqB.m8fCoCx09ctnptr1
lfZYMVXhslNYBWByNmehn9tpe4iOmls9CwapWCIVlsKdax159dz31tHl9P8X
4nWJ51teYbea8lGyio40R8HKeNOYS1VMPzXjPe4ZgJ15qAsNxXdhsQ6Zoy1v
M1wM2axfpOFkqGnblKPUwNLKKs4sp5WZ7SEtauKY61SnhEY659l45U2o6a+X
l5lubo2s4N6e3vV6cePwST7fNzpMetnzTmjZyW+miT1RiJhKRrCAHP0MslLe
+904YooMvW6c9XK2YihGec7mR1T79Flm6YXbOFm1FoA2StzgGcxvOTD+hRyY
wIOf9X0suX+6y9z9ShHbcBPWIW2aYwLGOA0xbaDeDFwk4u.cFUj0rH.2i5BT
3IFTqQAzDRKNaCFWiX.Ws3crUPDiiV7N03hN+3sPM0rUD0Dpf7EuSWm8TWPu
mnw5mQeKcxwUr3cH3JNmgIpmRM+JICplOo5p3UXJfh0uFtpoZNq5tgWolts4
ATM0GvJlT8rD8bZIT8W.shKPRF07xvJu23RyWS8ZgLh5Y454qBLOqXEh.3lm
UnyrvRWKNCJTMQ5UrDB3PyKfy3p4FpZp9XHAGZeARj9oMHgjHgbt4pDNjAXF
PfKn.tAGTSvDKrPKgKf.nAIAZDl6dsT.gX9tDDj.MWjBf.o9hJe1jXN0RkH5
XBfszCFladAnUTpfRUOqZ7GiwZhjhJqdkDRmkuatXPbvCoXfBuV48131FT5B
Al4O.H97IQ++4cKfq7n1D2c81M7TEEahcEgrJ6jycM+T8b5YldLv+Whvbsh1
7DTcAKoO1.mxIysUfBc8PcDEIuInLVamZND.tMbL9LGdez1zsazcE.vgJ10g
29Wj7hvtUpkcuUzAYjvWzAsdWfAqbKwHP4TsPp2KS280bPFM70bPKK.FYoGB
jidfYuBJ4fLxcPsfw2BRFaRqmPxwWuUf2VH67BL2TWJg7l6QN0kRH3MuTB0y
hl4DU6G6y.xjUJ67tBCBuPAB52EaltfG8XVXhdLmH+Zzi+Zzi+Zzi+Zzi+Zz
i+Zziuqhd76TpqDPAFs3cX3JBQMSJhpIdETeHAXlPpBYRLPcUn5ALW..US4h
XBMKjPETczgo5BsFQ2YHdEiKQ.SzPob.lg0svPFSGkW1JAUxD7EuiqOZpHAz
DbZAGHzgUkuBhITnv7d..l.XdRpxHgPcQxJDlgf5WijBkLj9UyUyKFYeMDNl
qe2jULB0bQEfQQbpM9xDaHZoPpIJzJNPhtV4XZpO1MXosISv3l2LmSTvh98x
vT8F1RQbTeYA0DybEVw3HgML2JRG.gsjIABAvlPSK3Rl9cAWgDHpAYU3sFGT
8By0oFAf6pHMXB6NdwruFu3uFu3uFu3uFu3uFu3uFu3uFu3e2Gu3PDZme2Dl
q6hH9ceD7y6i.Ae+Fn761EW3tXsWBvpP86j3EOpirK+d4D6ht7I1s0yVSqm1
qwd9c6Z6naJjKKdJIs3HctwDaQsPcQgY2oiv1Ypx4ZeqI1CbCNvmms8EQ4E5
I.K0ocTLms.B4Gae7vc62xNv3g43SHMyvhnbHTMACpfvQJOgobJRuA8gSxI6
yRIzofEHAXP8ZM6IUPDpy2ngJnPX1oTAn8nkMXpP7ecSz5eqkyVAqOmKNv0f
cJEd9HHgZGbC7AsHM5K+1heMSm4U224309jm2pmh2oGkp5xufvbRwbidR44T
.tbRNNP+WK2uMJO9+Z4h+fhY943h1N7LUSbqQZnAEDUVRWz.LGTHgbRNgP6i
dYWZ7h+f04fVwP7zggTF9HFJoSBFZ3g+xpnjmVDoL9nMQuPzBdVEu0F3ILH3
o67q4NxWHvrgnDJVBaK4pHmNjk6Ni7VjkLtyA1LYokDJKslXtHL4VlWAlVIr
PZZEaW06QZKsKzFtZQa+aOQXPXPXnKGAYkqgvIISurawKwoJCqatpA3VSKDA
0sIDR70srRisrBD.cyRh908rxW2yJecOqLt8rRSuZNYeZbXSR1Bk5pk8dMbG
7xEHwqjmFWDpc8ibY4JPfW9nKQATLH62+aKdNJY6hT0XwhjscPKjgmTforUD
NWBHDI.y0m.OctXvoDb1oEVtgNI.7vS.Dzy4Er3OcZP+KrRsG19qYJl.90W9
5t9utVCRJZ.TNwUXcPXmCwtIuOyqq8e2uckku9DGn5zIp.t6P3L3JImvjbfR
VRBn5TPMggroUu4duPLVJDAGdJDSQLtenPNcuLIirhiEToWzq2dcJGK76rl1
ob58YFjfDT6uYLSlrS7ZiUCABOqFUYaigYPLSPLoQYcsBqUB1qOQSDM7zKBU
W6t3TtNkBPQTSgqAywqNRs3PrN6OeyDTUiiJe2z6rSYXDTQhvKn1JeWqzQHR
m1FTLg.0bvABDixdkYCcB1gkXkiWm6RJRuKjqQ+tkbgXhfnfFL.SBCWHFEdt
v1klagLpYBuMzQDVnSfIxlJyFNYjNA6m0V4FQpw+izP0u00PgWgVcuvtcc3a
abBcEDKwDBhgPRkFPYGDrWeVcoS.8BRXqvPIiifXHjvI5Z5jdWZTmbQ06mia
l9NHkqUav4v.ouiJCufZ67csQGuAJ7Fs6dSf2dsVBHXqP0kS0kdjaFamjKVA
0Ixo.YdfMEG2g1jdakLBMYnpiOIUWLWtATUcRmUMARJKPxxP9D36Ra7l1879
TYk85av+qPGDrvuM+aiNXOXM2Cay+QblHD7vSrbwibbzGzbcLHDhvGK61XWn
XQn4WljiAglivqMrrNT1KNEKNsjE1n7pOIavZs3teavZ9kgWyPkNeHhAHN1T
YO0WAKABBPcQyU.DnNiCBnHjR0MeJQLsURuN9Czo7fGv7cWzSmxiBBU5Ks.O
0PwM+XwP88DEn0rMcPgubmXzTCEdc3SlxyrEE4K244mnoagJSC7x7.dI36G3
k6ynr39Adw9xUdm.uDeNbYz6G3k5C7Btef2gc38tYfKxWyb2d3k3qGfjoz4.
CT.8UI0jAE36AmCJQwaLT3qYYzjCE.eUtNYPA7dXDAI7bDoTjd5fBfulOlLn
fdWLh.tKfh6AfvDe.eXNY3oFJ70WgadNO3BCHGCNkY2P2QzoNtY50a3zexrk
1e3Gh2dv2p69iO+TRZZkaGu4rm3MKKiCpy4j2V6VMbWQWV2glxrNFh4HSYVG
qZXVpp5DCW+fkcjPIR.R+3DWccGnyIYXJ136SKcEc7aBf1B5NFHE1XLg0W57
BL+aVFoOnnlfixA0SFO5ZLY1tr7py7vJrrQ+NTj8bdzlDWDFqRDDGGuFQsg+
scOn98GVG46.YigBBmBwF5HRhERaKJDnWJwSHKKiVuVAsM5ttboHMjRBUQVM
s31qcZuqehNTL0+a6h2t3mh1tewOE+RxiYoaZF573z3WN8qwELF2.hBftRuX
Zo9vHz4et8pWvZ83Ty2.RgYFvDx3HKWi..zkevSeA5UQxz2GR1pOiOwUbRXI
BxrDpR1QDWPvmyIoDZZF4S.AxMzKEolv4VDPumUzsnrS5q+BbULcWPlqG7+M
k5DUxZBNfJD1VshvmJ0wJ4JLUbYtsk8s85Wn6GhJJ7Unq9gc5ubhwu5GTJc5
jq472l..+O+GKdv7Z.CRmgjpUfa4XIbfgoRySg8Smg+7DmpyvdNvZNM3z3n7
ZudncZvRkvE09QT7rl5Wuuh2mOW5KIOaEfZq04c80u3bu55THO2sTCZxkZ9k
e9edPhKPsONVE7ZYDi8Bdo2NWWbgB3L6JhwnXnQbQmZWQW2D6+xW1jm8b71e
1vVcMiqDFDBrdTIQLhg2hJgByN43jOTkatM4I0dyYropfOJy5WflMwfxxKIH
AYXkpDSW062eoqEPdGKG4uuO2c9h1sXjXxEiL6Vfj0CyaUmUl1Z4gnTe59Ix
ReW713OFsL.lPZW1oOVcDXI2p5EKcFh0WhhGmvRGSZC1+O6n32OEUc9ZedqQ
Io3ivfbtjE91CEEYaGfDgyaGQE8E3ZAmKP+O0Ho39JBv+tnjs+1fTBgqrhed
q4C72+oDkdDeQfyTFBc5YN9qYEtQu5.7+0FITwdyqeBDeMew5ggp1CzQedCm
Xd4RKl3zQe+93MCWORWFNai1xtIn2ODUjm740E4oABKmEfVm9O8VI4XYjOgM
7tPM6OlsoJgA1OqD8vykQS4tQts7iCVk3sRIyOd3kG8GfaSy54NtLif+eNYc
Q+n4ChyZVPES1y8Uomi+z5rcwCy0wiqZkDq+wu46cWLf8yQON4SYuMt0qpGc
VPd0L8ebTSRqa++ZINE2Fki+b1y54OOISI5JCxXNivg1dQvPS.BHtkzcNP8+
iW5wBgeGLYjeI5iwOkk+xuM4iV8e1EfUzIlHrIJ+CuaqNC48NSvzF7bI62RY
UEtuArZHcD0ORkJMd0JIWslxBCbLAw9FdEwtIKZdSVbumqU78WcILP.n1Yad
Jd8n9rtx0WgzGSiUVorarhuMK6CWd0Ru3hX.7hE93p4dVioKTz9C0utXduvb
5lZkp+5tjseXPlSXJZ.PT4xBVm+eH9sS.7qmsFEG+55Y5r8remKnbbUbMcAW
ukeFM87S2kX1aa76qsDQ8vzT.2Xe9gh2.yPu51aQevNO+eQmEneM3XZp1cr9
MEoVEqq79gVoOuj83ZwKDHIt8unThEbWKtXVlk7KQelUKMaO.WQEMmiK2wTO
A6aoSXNldG10DmSRcB8IBBHLEIaZiWqcCNWiqmUmouLvOzQnf5ZunZu0cdqq
nXkKz6n521ZqajKRgTk74Rp8mi3z7bQeC7cs8w9rEGOadx4aSODWubu2a0TX
H2sSsNpqVVWC8bfD4YeZ6nvhqZmYFvh+wuDMNj.fjT69ziywXjUFGAUdpNeH
w2kGGORrvLJTENbHS6657g.+fRy91hnQgBBBfwrAymATHfYHgIM4ex4BO92i
2LJbfW45MrZN0.mk24BG9OiSSy9z3FJPT6djkKfBybJ.TkTB8ZKZpd+CSk.f
XNQTzumQTyRs9cYoijsrJrrTkmwT6VDttKESJRr6P9tzw63Gu5vAPfTlvtFV
Z0bTOlUCAXc9EQALoQ.UmCuQh4.+yiWGm7Q+2ADswmVE+gi3Nn9w8XZQ.6zn
0rgCK1VDkhcoyvJ2cfsTRYR7UG4tsbt6iOVnsdUYU93.l+5MN4L4vg.tcM1I
LfzcF63P+NtE21gshncCLx+eeTQ1huWGElkSNLtuH9oCooECeAi0G.XtgJyp
lyHzj43upbETPoP6Rkwvbr8fXxTpTXyy.jE4mIbOvwHCI3Bqip3JQaLRhkyh
0jBcA85034k7S5nv9kAJX9mRxK9xh+omyV5wZD.zrFlHtfcbDJMRt0n16HA1
iCXY6K1.TJA1YwnDqHtsYEC.vvyOHWMGLzohzPLX3dGkufk5JW2lGrUouGhJ
JxSd7PgMUGTi52upI2yoYOFkdRIfqshM22bL3RgpRZiYgrRZiDfxpl8cbsyF
SCYsyFRLIG4QVsr6.me7vSOEmWg0KNVLh6j.7TZVTwkweRXvekaz0pgoPLeJ
n.EKdbQZmHqAGeaGUkVDKL3oqxKi4PScV6jpsVXPyOF+4c4K9adBs3uW8a3h
+g8qiRix0EX0pzWumEiWXfp9vtpqMAh0HLlAFEdazs1XOC2Q80qUTpp9Bqzd
qTPVDm+fsHeVWsjRxOSA9oIq+vUK616iOZB3xLDk1THficU8BUHWson.Osx8
dBGDwpcPGyiZ+.0w4RWmDz5OX2BBK60Mck3xH8SBcsiBlMP+oXD3BSCHfYa.
DbaChPZZnti6VDov0.6dF0T4sMDH6yhgLWCJ01f65DjAscBBwX2sHHWuEtdw
XVvAQvtWHm6fBT4m.5dXj6QPJW9cfEm393RG7wAvR.EU1n70YgOEk21Ih5G6
6iBcchfbHNVVRJnkWw8MwDGVAnPhi.RcWfTYd15O3A6xqI5WEIOL5.cp9oFU
fHaIXGBm.VJBfhLC3PtvxaAIXpkfhKuhjZ4NfJdKg6VL2nozMLnlRJ0wK3H5
DKImybCcbtiCE4dRARZ+PTpiaFy4NlN0L6bCyHKG.QMe.2UbiXXhi6SYfz9A
fN1GBn7KUxoRv.6KlV95XDG3p9TN9Hjr70Pbe.mzFS.brgBGmJk3fXNyIsIn
.KcDwYbaCDFG.NpppgbXLqdEVJCDzLI+a4vNMwt43yNOgt0H8OdkL0s6gdIY
ytrjsEtOIVhLV9A1BX.wUcGp+WDo4uXBh9IM+U0aKKeis90CZUTIrHRizpbW
HBjaqREV24Z7WDtYKnPk3p+5bDANJDoYtj2q7YcGHhREQipMAWmrSTS25x2B
YQXkJ7p+5lfh7FoAyfwlP83Sy.s+oGGVexa85krgoEIo.ODpYxV3SnBiPcK2
K3iVLOPDHcJFs75S2L441AMjnzgWmNI0aAWpUXqk6EbZnzWDA0EhHPzUJmGY
HJGKPBnIUPQgzU5EDjQLy3y9mmC7nY.3QWRY3EAdNEdIfejrPXe4dgiUfG4y
WBGfuDF36WZrJwvdgSnP7k7x0APHTL6kguovtGm6icuPfh9PL4cfiiSYA2Kq
EgXbj3CNxlhwQe9xH1TXPj6ijOSda+zvPSuYBeFpCAOEiOWeIhOeILMDeI1r
8k.8XVSiyZgObD3IQDz+OcvkCvTeouicjD4kVb1kb7liLQMg.rkaRma35+JD
vFzGXarbYHejQQ3KQEnXoMxEP8dw63O58HTYnNN+dg.tg9.2ilB4CGYIYbbe
Ie9PgPIFB2CV+o2KsS.mJMI3yB.Yztc5czgq6lu5xWh9U6NzvD+TEy4V6eZh
44x73OlT97TyUhxWq21JqKNja2YCe1U+iWpWcy7sGRbJPMaxhSpcDVr+J0Lh
S1FLNZSKGjoxsmQ6GizgTaHFXcgXfGgz1OqRceNk53LJUtERd62z8Fho4lgo
NqXK05g1G.FR8cX301gdTWGFSMcXT0ygQWKGFZcbvKggSOMeC6L0Mvj79vpW
C2WBDGqCCsKPzwdIry8Q3nAnSquBdHm5YhnY30SgKWKEFTcTn+mz0AV+Dd0I
F4c2BkbT6bznfwQWU6C7fU1y5cvvq0AdUmCFSMNXb02fgUaCtc73dVGCt09N
0NKtHXr3MpKA93YkeI1vQTGBtRMHX.pe6WsGXX0cfgNAf9VmAFJ+3fxRudyE
eIlUYn4UqW2.tJG60SbpgBrNVS.ti.pZ46eODt8J4SGLPqdt7ucfy6zfefgI
zcEP0HG76GuUq4c0wjvsGW912ubsennWU4TeekCayHf+4P+PA1mlq7GDzGT.
pVdvucfYLLTCIu2GJLqV9s2CshdZsbTTiI1j4O1KUHSs.Z87Qe6.SuyA8gBz
NMWyGP99fBl0xi72QdaTOGw6ybItZdgeP4D9PgMU498.NsnAmq2CFRcRNceL
9S3cNbOX.esiedHbm8BCJWK2rGJTpVNXePCEgDVNI+pGPJ7Hxm5iF4ZOuo6o
u89Gh5glmzGeNReDwPqOIi1fD4gfG+rPthJmkmyCwqBcs0nwq7X9fyg4iH+k
O5PZ4Y9J+tlwpC+yCkxoZ4ebOT2d8DM8vx23CLWiOj7L9vyw3CN+h2+bK9.y
q3icSf3QdDe9TaeWsV2mmWvucNKcVN+1+4H5YNLZP436QiWMxPvd6dz0ye2i
c8x6JucGDDtV941mY44QN4NHfUiytc6.1Pnpi1MQeyu1CL2ZOwlzGipplRG9
MJVOeY6aP2tPNxdzbVmmKr8VL2q7ecn.v544ZugPuxs0ABBqmCq8F.8JuUGH
.rQ9o1eH7JY+x.Abmj6o82TiO4a5.Ai0xqzdCedkKoCD70LmQ6OIzmzm7kSc
xgEAPuFQfyxwy9yh3SZVcz.X872bOcdvyb17fxWyiFuZlWl8mmwmbw73AtSy
4x9Led+xyxCJGKOZDpVtT99wBx44IYe1kw9kajucBrU4+XuhR3Y473.78aI2
F6Cg0ub56fxkwAColHbJfyu2q7S73oGU4g36jyKP87KrWL9mmSgGW9Ddr4R3
wkGg6LGB2OBq8nyYVAOMoZ+N2PnI6v8M+uey+evo40fB
-----------end_max5_patcher-----------

@groma implemented the EBU paper’s coefficients… you can read about them in there including coeffs and pre-processing (https://www.itu.int/dms_pubrec/itu-r/rec/bs/R-REC-BS.1770-4-201510-I!!PDF-E.pdf)

Given those coeffcients, one can get the filter response at a given frequency. The path of least resistence for doing this in Max is to plug the coefficients into filtergraph~ and use the query message. Max uses a different labelling convention for its filter coefficients from the rest of the known universe: what it labels a is conventionally b and vice versa.


----------begin_max5_patcher----------
716.3ocqVssaiCBD8Y6uBj09XpEX708WYUUEwgj5VavEi6lppte6KLfylr08
hacTDXFXXlyvLG34vfnsxi7gHzOQ+BED7bXP.HxJHvONHpicrtkM.KKpiOLv
Nvi13lSyOpA4+fLIRL1IG0sbMn.wK0IR+TO2YsnHz09o5Y55aaDGtQwq0tYo
U3X7FSWosKoJNyzlDiOoiwHMhIaj3E1rCbE416thRhrxdILz1r4aBNRbVURV
V5ZBwjxTK1RoPGIICP5RvXR0WAi0xtNtP+JLdfqQsMBNSgXc8HEuWJF3HlFM
H63n8J9CS5zq3Clsfoajhar5TKGEvtjOa.B+NGzD.8jD.8Xhq6sBBjYBBEqY
PnVx2ue.0HhVJPRJKr9dIjvlQWNNx+J3Pv+sQ4WAiVIa2Vl3vByWAUd2b1JW
xJANmxJe+T1YPIgtlkkOLxUOgHXyu0rxjPxAT5pLKVdgY4Jy8PyLzCnqRhyq
H4U4HRLopjVQQWQLhv4YUHbbAMIsjXlytPniDWUgwoElIseTjrpzW9TgThiE
a4QozuRTZeSqlqNnX829m4gSgWpgWpiotmq7WugcYtXGQKIOiVDmcxYeE3aa
FLzCFCZpk9nOlVaikDbZGakGlw93otS8mSR71IidpQZFPTRrjM+KP6BJWDm2
KE58rZ94rVWbfTNSw4I9clh0wMa4MbAaa6Eax.W6Lm281fr9CzZ9m6fE3w16
rggucykJmt.kQWeVxCDIrG3++SYf3oU9kYTCxQU8zAs+0Blc8T.cGeP2Hfq2
NaQlqaMd2EFdyhsj0PYefgl7lumgneBHktBFp7SXm0.Poed63WSWytdoolzm
TPwTaVEo.RtrO3ZZzLISr99GMkT9sGbJCQzcR0oZGy1KbCABzHE+wlo0SAIL
koXVapjGU.PhNl6dAYTmbGWIFa.sCsgCiIARNgovan2W3BbgguD9WrvGoJI
-----------end_max5_patcher-----------
1 Like

That’s significantly easier than I imagined/pictured it would be!

A fly in the ointment is that the standard gives the coefficients for a sampling rate of 48kHz, so (unless you work exclusively at 48k), you’d want a way of making this lookup sample rate agnoistic.

Whilst the formula to plug a frequency in and get the filter response out isn’t really that bad, it’s a prime example of something that looks completely eye-watering in Max, because there’s complex numbers involved. I’ll see if I can come up with a form that is legible.

Wait, so that filtergraph~ thing is only correct at 48kHz?

For the purposes of the patch it would get converted into gains for the specific melbands (which presumably don’t change based on SR…).

Any filter guru-ing would be greatly appreciated, though if that filtergraph~ thing works ‘as is’, that probably covers most of the bases I’ll be needing (for now!).

Afraid so. I think the below works: give it a frequency in Hz., it should give you the linear gain of K-weighting. I think it could be made more compact, at the cost of being less explicit about what’s happening


----------begin_max5_patcher----------
3794.3oc6c00bihiE84jeETtlGRlIws99ispYqZlm184c2m5o2TDarCc6.ds
wcmtmZ9uuRBvAv.VX.GaGb0cRrDXjN5pijtWoi+yquZzigu3sdjyey4iNWc0
ed8UWYRRmvUIu+pQO69xjEtqMW1nIgO+rWPzn6hyKx6kHS5yc8Cbbibl47qN
O6NOvOZyTOmvYNQgQtKbV4sdYXvZOm+H3OBRSJNke0Y4pvoalDouZO2IO4Ly
eQj2ps2i9V1Mc8Mtdyy5a5lIgdyl8vu+wfO47yN+3+devsNNevoP1+Vlr0ej
5+vQ8g38xxaT+0O67Y0+Qp+uzW8iYq79eeX15aUWvjv0wWvtY9KlaZsePEWf
94rNz7Lc7Wq9jdd4BuWb90+tyT+u5u1OTgYAScddyhH+kK7m3FYRZk21KU+I
XJ+qMIO2+qdANyBW4PDewQA4+y+8+w42+WPNGbmi5Iotrm7TWm5gMy+EuoJ3
2I5IU6xMpq8iKc7tI3ye61Ok17svOvaR3l.SaHDljZvlmC2DsvKxzjCRRcoa
zjm7Cl+vJuIQwlLPJYr.ndgnPJFx.v6bnrwTg9s.j.yDR5cNDFcr9p.XoDSg
Pzcl6D37oWef9AoOuzRg+TigU3ie9dIejNs+55q0+3NKMUiqCiZZkBIGCkpW
TBU.QL.SbmCF.GCz+J8m1WzooEfzdN5bz3t6Jmub+277m+Tjp.3rsCjxzI8V
7Cl5YpgfCn5aJVkW6SKmwIE88kdwU8Qi1VurEXHiQD.jSDpVZFgBI6Gk.kfR
jxPoalsHzM5VCjrwKXx20F7+iezInSf22TO3cnwVtsiWRexuWNBhpDAu6.PQ
DlMFCA.BliPXopGhT0EAvFKy9hfUWIpJTkTBphFksb3sJAOR.jqFoHT89p2J
MOTFyhqF4tbYljuJysnQwOGZ9fD2sMI+f3jfaSZkWL8lNU71TcWoPiHETrYk
AuF8BKsgW+wDN0aUvFeymTbhp1yjhjokKv8YE2u6j3aV2.ml8q3qfns9THn9
WLhwVjHxXLprLluHbxW7llwXT0RtzKvOXoZvEk4mgGNW1S8l4prHdXVXPzZ+
eXJAPUiQY4OKoDVZl55fo3+aq7cWrsBLek+zv.cgHWKgN4zGmlu0T2nYqLlq
HvcYI2rxFPAKUj4ZUkby5GcWoandbgWFqZU+gvvE4yZ68svaVTR1K8CBJfhQ
gKqNyUZttpy9wPUlOW2msIm0OrIHN2GT1DQOr18q4Qa0jKVjz8N+G+KtA9O6
F4E4G2Df.ayzKvUUQeZ8jUgKVjq9FmyWKImoJa7IdeyeZzSlGTViA0k6uL0H
Zz1V4o9y8VGkOsH24qymx5nuGC5YRZyiI8geHxSQPopE4ufbSjKaG1rDg4Ru
NBw7jhpYHsx4leZFTMyleZFQOsG06Pl2guM6sT5vL6YnlJIJU14H0rGfBPrU
uoicVBvJIAKRDRoiRS2LLQB0R2iTQNKbVTMffpEPtyBPQABFLQMfAXKzTOl.
q.SHGILQwW+EUmis+qurWRfFIxfLLzgasfORHS99U3act+09Uja6YbZa2J3g
CTntDnxNe09pRS.kOM9JmjZwprfksDlcxpundZt456uc9ovyETBpVliDxd8E
G1EXFuZLSMd77RwLzYClQjpE7he8kdZ5sGyDUgYeuZ6L7YClI4cT2QY0vTkl
VjNDlx4igp8yPMzRFxWE6KFgnbtjprfDLjcnRECsKA4FtYk+jvEwKP6ipwek
pOdBCPjD.ARTqWW8H.bHBvEBfjiEHSRHNASfBgfqJWL0.EEJHYA6iByWKg5z
oS14fMrNvlBfRFivYDEZiiwZnZ4nRLWsbefPpSRJEpqChfRIWwjTOVqMq8Cb
W8cqoMecshZ2NUwhDLHlN+xaIVGtY0jz92ISRRUzyUJUq5IRUxRW0yG2NOSy
EZkkPiKEDaKEn9tT.soTP6wRgdpI1gE61z0YDD8SMi2jZFr5ZVK5M1OULQSp
XnyolLYSpY3ymlrThj8VwzCBeV0KKkbZ+0LX80rtsIKIwTOAOR6tuoOD6ZyG
biTC393ln3Q0x5Z6F4Bt4KBezcQhC115f1R7P20uV35p3MDGTSTWGlAAerPu
BNDDQ3RDmprvP.7XIiBXT0BVnprk5kpHFSvLlPcc.tjCpOJCkDgKA8cXTFvl
ItyMAYfyMNiSYYODjggfLLDjgCzMwai7pdqQL0qW8htvrraI1zuUBFmwkWLA
kcf9CMmyHJPFlGUpjTrJhwB2dYDjUPRVMQ49IKqhvLGooEDmEHOMK1FTY7Yq
j9zBJTanQ2KUpkzo0PoZGs5dnV2K85doX2CM69oZ2KcqETt1P61Dp2Zne2KE
b8zv0SEWOcbsTxUQKWN0bEzyVQQWNMcQ1ihz06j+9nsqOpm0yYaIuck9NFIh
2fGrwZu4IM+r.acsNuqHqM90nXkaoG4WWUOCg0Djz589tEdfeeHIvvAqVv.v
FjjTMRxEm.HYZPUS1dBN26jYiK7AcN3jb9EcZ6Fr0dCuw33PSyMiDfXj1C37
SH.GlAVQmD.NEjCu6.Cb1w.uKF5s9l.ntnvUaj3JBOvhE5rwsnXd6FinKBHk
g6THEcPPJ5hBRkcqUJ9ffT7kDjhvcqUJ8ffTxQ.R2Inw0G335GIAQ4MAvpYN
m7SVlxNBvRlqS2gXhNmHL+xv2Iz36BjkEPkRfycBrBFULpj0DbENOeHhaTS8
gVB46DGxZJgXzaPIDiZPIjydCJgvlT.EuAEPTSKfvicabSKfnibAj1zBH9X2
Ol0jR3aAQCuAEv82IISlYcG89hQbQewePtsq9XFWVbiyWA52sV9OVnO8q8ZL
TPxRBaBz3TCBd+6obT4wPgcrNpF8OBgkwNdn8XB9hASfRnwgssGSPWLXRRzH
aOj.NhPxB+IdN39GV3l0QPPGNrPNVLJe03IzTGgh5sixRYDuv38fhfcvvDhe
YASIruc.vHNhGdvG0+uZHgrudUO5FL2z6J8usElfImWNXrRMj7Bg3G3wKDI6
RT6Yu0qcm6UJrAG6bObrTB.DtYiEB.79qymjuK.AIYOy4GjQFFbLgKzXGXuc
NLILzXb1W5CQVBDQZABAur3mRlITGvOwtvFeSzQ71zKYd6DTJg1FV51fvNhZ
xEIQMRAPzNgZlcwvLCQwi02ZtXx4y49NtahbLAhDDBAJIbIl2pCcJmV0gN8T
+LPFiFXD2r.BpTfQp4vvws6DPxq7P3dNbtPKc4TcMDI.iNsONmLfsG9myrS0
DC2fJ1YzQGjgZP85b5jCxnMnhcFcvAs8.QxO25gIs7vOK.GyiMX6qWHaOa4H
5YVKlolgrolw5uZVlOym8mtLzOHJYrLD.NNqHzvn7W2EmwBwo4c8E5HsEc3m
YFz1RAgDmWULhsCYTRW5S6dplZlMjqoss8igis3K6b6LuirUyLJY5Vm30Lak
VBF9LiEyVw.gQOupXba6kQ5SUjoQS5ol0KAnRpxvmIABDfYvRMfijRrfKwv3
NDJ3kPIbhjJHPon2mziMTo8odEggMYH3yJ301kAjBA8yhGsEdYmiVuXaX85y
4AHsrPfA8YeHacUkYjhiWi76CgpAdTzC+JDpFPSklF36boogAgwaeJ4fzzLH
MMCRSyUmIRSCNdafRPh8GW+AwnoUhQS9uuPfIQHENnGMC5QyfdzjsYcPOZFz
il98f9OnGMC5QS2A3C5QyfdzLnGMC5QyfdzbxCoC5Qyfdzzu.1fdzLnGMcNF
NnGMWMnGMC5QSM8iGziFaBEbQ2wOnGMGPfSHr33CyfCJPSwY8zdL4xRAZ5FL
4hSAZZOjb4p.MHIZPAZJP0B4CZNSo7ssGXtr0bFLLmlyfO3uD6OhpLiV6BXR
.iJc.i4XDQj6K9U8jOmDtI1A.395zriSBZOUGkw3.HPjm3xMipPCQTszFvjP
lj4.GCkBrDezgOrTlE9DGN7cApEMcCu0EoVzzA3x6IsnQbNnEMmBz4ZuQSek
Ohbv7Qr2ir4opYSqGL7bSMaPjpigw6CArQ.sEAtHkrFByvazdXXPVZZkPEjz
LPHIDPouYPJaFjxlAorYPJaNsjxlFb1mqlxCFe5xfzXO3fIwSf8R+fuNHEPu
URADHVjbSD+mWe2vAH+x3TSeYnWSUaAq93hsYMtdjv4ae2fJOcNp9.MVmKpw
z.H1N54c4d2f5iLnZMCRa1fzlMHsYCRa1fzlkauUdwJuNd2D74uc6wPccf.1
XIF.wPHiC4XrP0cMdRHUqtNncUWGN4cn55jStHHImXIJYPdcFjWmA404v2yB
K50s7KNQ5vhOu6vVreyNta7m09A5Cx9s81WRNomJNSGeA7vwEvQEWlDttWwk
TClDbgdv3BTd71PzyWEtY4QnaDLFOnvCd2PAOV6t0Xof393sIFaLRnVAOU8m
Z433Cp4CC.iusuMhfDXFgq+vvqi01jdyO7cvNfpQDbcHR59FK82958Rv91QK
fLR9BDvObLBdprKdraKyA12Ad2tcxC3Mam7zFHZ1hP28aafQFfI9fWzFPB1H
PBc5rQeRGGRBZ69cBcNuemRmlR6gA7I99cBZqGffh9zon1Fm.Xe5ZVnst4CA
6arvJ2T2mQcBZaonDPq3N3.fiCAYriLH7suqOK61DeVHuGQPtsw+F1mVSbq6
YwyK3AcaKh0afqytPCXaqL+nFZfKaeWOwcUT3xvEMz20wSB7thyFzZMhmIFy
nT.BJXPnjRYjRWAwdciMM9zSzMXQjyiNyZHPjtdoCCGTL2TAERw.0xaYBIc+
9xuDkxmB6TP3UG50uQxfCGyP.ffSHDt.gzeSwo2hMD..IU8WUWGW+0OeivBD
tCwhOqF5sbn.VITzXX.KGi3TnhcBPkbEPnpxTPwig0d6IfPYq3laK+jaiwgh
jxInwtxSStHPW0VeNSD+1Aws8IIIV7jnvN3IgvYmHVUaO3tnNInV7jjnWU0m
18j.17jPs8IAs8IA5hmjUnGrs1dHar8XcgUNxh5Dk0A0ID1h5jnK5OQswhfS
5pmDzlmTaQOtMrQntvJmSrnNg5BqbjMV4olM6LHRg.9qeHEBzegf7ua.9qN3
9ECruYV1UEP+q+qq++.oSf.I
-----------end_max5_patcher-----------
1 Like

Oh man!

Thank you for that. I mean, it probably wouldn’t have been worse than my “hand drawn” k-weighting graph, but this is worlds better!

I’ll add it to the patch and post a working example of the whole thing.

edit:
Here’s the patch from above with this implemented.


----------begin_max5_patcher----------
10407.3oc68r1iiiibedleENF4CWRl1Ge+HeJ2lM2Ffr6lCY1fEAWBZn1VcO
ZF0VFxxyiKH6u8vWVVxVxlRhR18gtua6gsjnTUEqWrHYU+uu8MyeH6qwamO6
eb1ed1ady+6aeyaLWReg23962L+4nutLMZq4wluL64miWWL+c16UD+0By0Q6
uRxJyem8vGuCu+Zq28bx5z3Byq.d3hY6J1eUf6pOlstXaxeIVeM4h8WcSTwx
Ojr9o6yiWVXAWHfAT2eFEIVPnbNR8+QXIU.YuaFT20YP9Bvr+G8a3+6suU+q
2MPjDz.RRmDjTxCNRtN9KJ3+DbLMKZ0CQqeZ+Mrfew21DaAo4laN6+4TJArC
TBX63r.RWvT+fnbr.IfHJ8cyvDExV4GHjnnJBMA.gB7nLrgQYwnxKynlgRDf
sfHO7iPLsrxBxTfjb5jgjMNRBGSjTJAKn2.ijno.ImvQxlLuvFUjTo+QiIbI
4pZdgim.jTvvAGIedWZQx1zjUw4sZJY96T+WSlR3kVU2DkG8bbQb98wqidHM
tJZ1HEYq5uK9l8AalJg1+jNJj3POUuOERXgNigWisk1oeXA1P+.vSoeHh4Mv
Ag097pGJxhZmh1D0jJCikYG1xonZx8bNVYfVNHawsfrals84rrhO78YeY81n
m2jF+9MJvIe2yciBv.gkB.HMn4iWgDT8UnD.rHtCyUxmIoweNNeaR15Jev2L
OZylJW9MU5hlb8wr7Jrq5Kkr1dIX4kxi+bx99SKuZTtBQJTXwtbCYZ9WY6M0
qeMYJYz06RLuI6EUCbNPxLDsVIBtcSzRam0ij6ucERCwf8Dy+n7a0PLXb9Ap
ghG3ozrkeJdUEgX0H3l30Iq2jGuUoSLpvA7k2dU7iQJUI2WUmFDsnw6+nCDa
7lZjv.++g7jnzRL3o7jUYq0.QsgB8k2+4T9gaTSp+8Ajw7Dqi1zPmUrbJ5RK
2bqBI2s8gnb8HkSiFZ+MKxxRqeqx9kF+Xg61aRVu9HpXQ1l1uYdxSe3L88gL
0Me9buayc1d+t016duhon39sQetN0tHJM0IHW+0+0n0IOGUDWjXGBPfxaZ0p
+gsKyyRSqgu1674FtyJES9x3ujrp3ClOTUlA0imrYOSz7xQ4UIOEusn90Jhd
Za8qTZ3nxk18fSH99hXkBHEVT+AThGIaK19grur08f6YzpR.NLI6pB0U0JV6
5WzVpG1SOY5Y3p88L1Usc7Iktk3koIK+TMMLsnBsMSusa9sISvsZFFVQvqEU
yDpQ0LQPVHqXJlJjJiSTt4sPf6MO8l8lnbZ654.SMyVsam9BVpNYjhL2Gxci
VstD4gT2cVK44Ha2iOwIpHa0C8j3fFAhCzXU2DNgQhXDDQ3aXIXBHXhvtwgw
RlMHiDB1M7PAIXCEH0XwKcsoB5noMEgESl1z5AM3HpS4zilUjMSL6QM631YO
7sYJWzxidRA7yzS33aynyzOq9ofUeSoIqiWlsas40galNJ6AYDbdxHDJVvoJ
qRR1BDCI3RJliQTtI9CHqEK9DRHW9grMyxd7wYOmjmqDYW4HkckVwCOsRxsj
JHbADBv.LCIEL.GnX4rKRvjRon2sIKYcga94IkqWvojHTyjH1XvNQVfzKV.F
cpVKNxXUAOgzHKSzLEBDmeIFoVnRzvSkPTKUBQL1Y4jImtrLasRYTgVKTcu.
qf3jvi3BpAuEjCNYf.SmIrmiiVeVKXOllEUn85HQyRzl6u8ftfNOcgCbRMha
goF7WRm8Td1tMyDCXpt0mqaMxDp2jItgLQovEXrDx3DIDPEXLVo.FN0jo.wM
0qoZ5IgBnLtWwnt.ekXmRzpeoCgahNZbSDFaATvnRnh9PkJKWbqg7ImJkG+4
APhPvvShPJJf1kGDDrfiDBFVvfPImKIJNoqAMRMqwkwyvrgPnPgmPAE.CgBx
DKfTk6yTIfSXTHmeMTM8Qkigyv8M5Nsq4F22Yq4LvgTSZCCnPJT.IRLf.Q5U
sAZVK6Ij9TL6gYol+2eIcYZbz4CCgcu33Xqb+2990NUrOp0o9DjLHhtfVQsN
Cx0tQQU1Dq7CG9RS+0Xnh2w1cio9hLDxDazHSMp7hReQRlvif6mJwOiCCH7B
1wy++pPlLdoODhDYzHRXgRWEl.fTFmAQBDfoHRvqAuTQdbzyCx6SLe7TMIoK
DJigXImIXJFJNRul8iBcx.08zof1o.fArjOHqce6N3.PXHFGy0y40DMML3nn
juOhFUW8WCftdU7Wqr2IBB0xhHsDaDnH7AGwMeDF.XlcK2QPHHXXIHG1+D5v
e0xphafO88alRsMaW9x8bM6Cw+r5.2p3sEIqK2NI+4CKayLe4q6JTnYS8BJv
m7bY4qr6RHv0ExzKtZafFbb.MhufFdLG5vdSgFUnvWhQCL7iMKD1+AJ7jyDY
9jPe.NHcLG.QLuEzFW3f5MbLphU54gNi3ESCezgC+XdIiNb3EeJhM5vAxa9C
3nBGXufCznROvdyeLt7oHu4OFUCQ6e6dxefFM3vavXTEagdqNENtvg2pwFWu
kfdKtHlbWA7G1HStOTAvHzg4OY1cXsLApC608cqRxduYGme+OEud2g4oseuw
2Lr+vSOljltLKMKuxCT4Idy78ybet8odWkaU1O8FNCIIPnPgOKvJsmHlokpg
9XcVSUmqev8cjPIR.R+3pohxITSKABSw5VfF5J5v2D.k1uDPO2daK0kfmr62
dy7n0O41E97Cakb6.bd1lr7xijvBrrV+1Uj8TdzpD2jfKYZNLdc3fTX2kfpm
7z8Xtdt+58jX02QSrakCp+3tkQ9NPVanfvoPrgNhjXgz1hpOrFmto.iVtTAs
05NFoFQLjRBUQVMs31qcbuqdfKTb0+6ahWO68Qq2N68wOm7PV5p5A6INM94i
+ZbAiwMfn..EBaK0GFgN8ysU8BVpGmp+FPJLy.lPFGY4ZD.f9nCe7KPGyNSe
uOQu2T1FWxIgkHHyRn1yNh3BB9TNIkPSsOuDPfbC8RQpI5vYqQ.jzhTT1Q80
eAtRltyHy0A9+5RchRYMAGPEBaqFQ3ik5X64JzGeaF21x91d4Kz8SQEE9JzU
8rH8mOxetpmiI8A7udXVGA.+O8GJt27Z.8RmgjpUfa4XIbfgoRySg8Smg+7D
GqyvdLspGwQ8pdV40ahnuBDUBWT6GQwypOMhdKda5+9ecQ4Yq.TSsNsqu7Em
6TWGC441kZPitTyu9K+wdIt.093XUvqkQL1K36814xhKT.mYFdALJFZDWfpY
igtrI1+0usJO6o30+hgs5RFWILHDX8nRhXDCuEUBUCusb7.raV0p7jZu4L1T
UvGkY8KPylXPY44DjfLrRUhoqbBSJcs.xaX4H+884lyWz1EiDitXjYEsRV1O
uUcVYZpkGhRco6GIK8Cwqi+bz7.XBoYYmtX0QfkbqpWrzYHVeIJdXBKsLoMX
2+rChe+XT04q8osFjjhOBCxoRV361UTjstGRDNucDkzWfqEbp.8uuxAm+EEf
+CQIq+sdoDBWZE+zVSG3u8KIJ8H9h.mnLD5zyb3WSJbidwA3+aGe9P6Fu9QP
7k7EqCFpZNPGc4Mbj4kSMEMEz2eLdU+0izlgylnsrqB58SQE4IecYQdZfvxI
An0GfYuURNTF4iXCuITy9yYqpdB85fUhN34xfobWI2V94dqR7Zoj4m287C9C
vMoY8TGWlPv+Okrrnaz7dwYMInhN4NU7hzyw2uLaSb+bc7vpVIMGJB+lu2Mw
.1uD8vnOk8l3VundzIA4Uyz+gAMIs18+qg3TbcTN9KYOom+7nLknKLHi4LBG
Z6EACMAHf3VR2o.0+OetCKD9MvjQ90nOG+XV9y+1nOZ08YW.VPGYhvpn7Oc2
ZcBr6NSvz58bI61RYUFtudrZHsD0ORoJMd4JIWtlxBCbLBw9FdAwtQKZdiVb
umpU78it74G.T4vMOFudTWVW4pqP5CowJqT1MVw2kk8oyuZomcQL.dwBeX0b
Oow3EJZ+g5WVLumYNcisR0OtIY8m5k4DlhF.DktrfY.kNP+1I.90yFihiec8
Dc1d1uSETNrJtltfq1xOild9oaSL6c098kVhnNXZJfarO+PwqfYnWb6snOYm
m+upSRyuDbLMU6NV2lhTih0kd+PK0mum83RwKDHIt8unThEbWKtXRlk7yQek
UIKX2CWQE0miK2wTOB6aoiXNFeG10DmiNrucIBBHLEIqaiWqcCNUiqOGucaz
SdKF12Qnf5Zunbu0cZqKnXkKz6n520XqqjKRgTk7oRpcmi33yhcWC7ck8w9j
EGOaVI36R2EWMiw0Y0TXH2sSsNnqVVUC8TfD4YeY8fvhKZmYBvh+4uEMLj.f
jT69ziysoILkLNBp7Tc5PheHONdfXgYTnLb3Pl120oCA9Ikl80EQCBEDD.iY
ClOCnP.yPBSBkzoCO9OhWMHbfW55MrbN0.mk2oBG9uhSSy9xvFJPT6djkKfB
ybJ.TkTB8RKZpd+CSk.fXJQTzeMinlkZ8GxRGHaYYXYoJOio1sHbUWJFUjXy
t7MoC2wOd4gCf.oLgcMrzp4ndLqFBv57KhBXRi.JRPYHwTf+4wKiS9r+6.hl
3SKi+vAbGT83dLtHfcZzZ1v9EaKhRwtzYXk6NvVJoLI9hibWWN2swqWs8knU
4CCX9q23nyjCGB310Xmv.R2YriC863VbcG1Jh1zyH++iQEYy9QcTXlO5v31h
3G2klVz+ELVe.f4FpLqbNi5XG1zgM43iJhfRg1kJig4X6AwjoTovllAHKxOQ
3dfiQFRvEVGUwkh1XjDKmDqIE55s0KwyK4WzQg8a8Tv76SxK91r+kmxl6wZD
.zrFlHtfcbD573qcMp8NRfc3.V17hM.kRfcVLJwJhaaVw..L7zCxU8ACLKLC
Ft2w9Wvbcgka081hn28QEE4IOrqvlpCpP86Vwd6ozrGhROpBs0Tsf6sGBtTf
JqqzFJqqjQs10pljfNoFyzUM7qXUHlfm.jjyBeoVdP0tVJXBqcs6K6VMVmmn
mu30R4LCArohY5HU7Z+b7W2jO6u8Q3reu52nY+SaWFkFkqq.okEjHOKoqkIk
+FSIpctjtxzk.4iKpsPaQiIzU01euZ3oUj0V2FZDiwgAioZ815DCuXgnRN6F
RzK.EULFXrNS3dtZ1aaxRPTGPYzYpy0bSFRVywCYG9gpml.AeKgwXPXvX2f7
DhwGjs+6Mx15ei6lLMF1Hxi6IGNEiZvz.jLAXeGwaTXjr2yl2DdKXCBsqurn
Ur6uPJvbAQ6pnTmG.LMXB0UTteBfXg4eYPBV2.hfPptABf3RcCLTMsNcCBmC
P5FL0TTz+qjK.PUCnR4jT+5fbJmq9WDBSD59nbyExzOKV43p90plhHvbA00I
59RnpIKouCQPD.MHncWVeAke1JfR2fX6Kkx3.ceoLpoKpIbQrWfyoFPiJTvh
4eIHfoupIXwflFboAenBITZdF0z8.tFbA2z.hjRaClvdKnja5tDAMXjpAlXe
XDgsOa6WuTgw6lcRYX3sDPpYJFHJGKPBnIiVfsESKLBYq52AVnRYJbklwyj3
l5lHEJLE7c0HjM2WqvrJ+.0KdhfOFJRzUGjGaEW2WMPZ2KADuCX94LffjKLU
ELvoXt8V8FyU.+5KXazfmknmBORdV0ipE66Z3Ls2tbq2X8QFTl0WJTS7FTv3
Zj4eXntOivA08YrsL5.4CyJSayt72oFllsJY6lznuMKac5296ZX5lBPOltYS
Z5zk3FEtHLJ0j75EJvoDi3xvfQDIHbXTK7lalsVKJkpmXZm3D47vnpl.MScw
gj7JU6ip8IN+3vH8XRpt13t0EFo8UPg4Qa1T4x0h6mhf7Qa.zJKb8ZcT1KUV
BFlmG+4j88ur3JMOJeoNBiKK1kaCB0WYGpDJy0xx4q2kTICoVFXM6ABRG7ps
abQKcdkM2z7JrvDasZxDFDlct7J+epDOv4O7TZ1xOEupZsgXd1l30Iq2nOtl
qKJSKok21EIz6qFiF8RL2z82GO2Fu4g7SZdkTJx7mxSVksVCD0FIzWtRHfM9
3BoUQFySrNZSCc1FFwVt4VSlQ8gnb8.kybApLlfYYo0uUY+Riervc6MIqWeD
UrHaS62LWupMse6GxT274y8tM2Y686Vau68Jdhh60gLs9yEkl5jTq+5+ZjxV
ZTQbQhcH.AJuo0j4G1tLOKMsF9Zuyma3NqT73Ki+RxphOTy7bGCO6g3uVK81
dzk18fSF99h3mUZNKN5AzGWtsEa+P1W1dTjdqR.ZKo4dMKR43QnFkaijivHt
L8Edynhr5E22NTueBOwfZMJfFQZwIab3JDC3hY2wV.QLNZ1cpwEcdualZpYK
TywCA4ytSW+7TWPuWmw5mQeKcRuUL6NDbAmyzyJ7NHagZRqHjpuH7BLEPw5W
CW0Dpr6oZhWPHHyCnZpO3TpYCeGhr.p7Jkp+BnEbgZluTyKCq7dSMqU8WS8Z
USYV8rb0zqY.yyJVnl.L27rBcFCV5ZwYP0TnuCoWIRHPMAV8Kfy3p4FpZp9X
HAGZeARj9oMHgjHgbt4pDNjAXFPfKn.tAGTSvDKrPKgKf.nAIAZDl6dsT.gX
9tDDj.MWjplksTeQkOaRLmZoRDImJvV5ASQP4FLmRETp5YUi+XLVSjTTY0qj
PZsrbyE8hCtOE4S3kJa2F21fRWnsbS3lOcRz+M2MCtviZNb60Q2vSUTrI1U5
wprSN00xS0yomY5g.5eNBykJFyiPUCbO8wFPTNYpsBTnqyoCn32MBkmZ6Tyg
.v0giwm4v6i1l1cits..1WwtV71+rjWD1sBrrashIHiD9hIn06BLXgaoCAJm
pER8dT5luVBxnguVBZYAvHK8PfbzCL6EPoDjQtAJDb9VBSXiZQDSN7xYH75B
YmVMkF6J7h2bOxwbjy6pL13VSE8tXEMp0pntLhLZE5rNVShZTa2eUrI4Bdzi
YgI5wbh70nG+ZzieM5wuF83Wid7qQO9lJ5w2oTWIfBLZ1cX3BBQMSJhpIdAT
u4+YlPpBYRLPcUn5ALW..US4hXBMKjPETczgo5BnFQ2YHdAiK0aho6jKnb.l
g0svPFSGkW1BAUxD7Y2w0G4Tj.ZBNsfCD5vpxW.wDJTXdO..S.LOIUYjPntH
YAByPP8qQRgRFR+p4p4EiruFBGq2QTpmiQnlKp.LJhSswWlXCQKERMQgVwAR
z0.GSS8woAKsMYBF27l4bhBVzuWFlp2WUJhi5KKnlXlqvJFGIrg4VQ5.HrkL
IPH.1DZZAWxzuK3Bj.QMHqBu03fpWXtNkG.bWEoASX6wKl8Z7heMdwuFu3Wi
W7qwK903E+Z7heMdwuFu3WiW7qwK903E+Z7h6U7hGzQwkeqbRbQm+j313Yqo
wSw0POWtssczMEnkYOljVbfNWahsnFntnvr6zQX6LU4bsu0D6AtAG3yo11hn
7B8Dfk5SMFlylAg7CsObns8aYGX7vb7IjlYXQTNDplfAUP3HkmvTNEo2f9vQ
4D6YoD5TqBj.LndklcjJHB04VzPETHL6Xp.zdjF6MUH9urJZ4u0vYqf0kyEG
3RvNkBOcDjPsCtA9fVjF8sea1GyzYT0ssNdsM4o05o3c7Qopp7KHLmTL2nmT
dJEfKGkiCz+87sqixi+umO62oXleJtnoCOS4D2pkdYPAQkkzEM.yAERHGkSH
z1nm2jFO62YcNnQLDOdXHkgOfgR5nfgFd3usHJ4wYQJiOZSzyDMfmkwasFdB
CBd5N+Zti7EBLYHJghkvlRZJxwCY4ty9tEYIC6bfMQVZIgxRqIlKBSNi4Efo
UBKjlVw1U8df1RaCsgKl0z+uiHLHLHLzk6erx0P3njAW1L643Tkg0UWz.bio
6gf51DBIdcKqTaKq.AP2rjnutmUdcOq75dVYX6Yk5d0bz9zX2pjrYJ0Uy67Z
316kKPhWHONtHT65G4xdUf.u7QmiBnXP1t82l8TTx5YopwhYIqagVHCOo.SY
KHbtDPHR.lqOAd5bwfSI3jSKrbCsR.3gm.HnmxKXwe53f9mYkZ2s9iYJl.9k
W9519u1VCRJpGTNwEXcPXmCwtIuOwqq8e+ucgku9HGnZ0Ip.t6P3L3BImvjb
fRVRBn5TKMggroKuoduPLTJDAGdJDSQLtcnPNcuLIirfiEToWzq2cYJGK76r
llob58YFjfDT6uYLSFpS7RiUCABOqFUYaSmc0vLAwjdj00.rFIXu7DMQzvSu
HTcM4hS45TJ.EQMEjFLGu3.0hCw5r57USPUMNp7cSuyNkgQPEIBufZi7cMRG
gHcZaPwDBTyAGHPLJ6ElMzQXGVhUNdcpKoH8tPtB86ZxEhIBhBZv.LILbgXT
34BaVZtAxnlI75PGQXgNAlHqqLq+jQ5HreVajaDoF+OPCU+VWaDdAZ08L610
9uswIzEPrDSHHFBIUZ.ksPvd4Y0kNBzKHgs.CkLNBhgPBmnqUS5coQUxEUue
NtZ56fTtVsAmCCj9NpL7BpMy20Dc7Jnvavt6MBd60Xocfs.UUNUWRQtZrcRt
XATmHmBj4A1XbbGZR5sQxHzjgpN7jTcQZ4JPU0IcV0DHor.IKC4ifuKMwaZ2
y6ikU1KuA+u.cPvB+17uI5f8f0bKrM+GvYhPvCOwxEOxgQePS0wfPHBerrah
cghEgleYTNFDZNBu1wx5PYO6Xr33RQXsxl9nrAq0h69sCq4mGdMCU57gHFf3
XSE6TeErDHH.0EMWAPf5LNHfhPJU27wDwzVI8Zu7SGyST.y28xOkLhPAU5Ks
.O1Pw.2L+A.J78jln0rMdPgubmXzXCEdcRkFySZBE4K24oGOmqgJSC7x7.dI
3aG3k6ynr31Adw9xUdi.uDeNUczaG3k5C7Btcf29cpEuZfKxWybWe3k3qGfj
wz4.CT.8UI0nAE3aAmC1ihWYnvWyxnQGJ.9pbczfB3svHBR34HxdQ5wCJ.9Z
9XzfB5MwHB3l.JtE.BS7A7g4jgGanvWeEF0zHv.GPNDbJytgtknScXyzq2vo
u2rk1u+mhWuy2p19CO8XRZZoaGu4jm3My2GGTmyIuqxsp4thtbsCMkOcLDyQ
lxmNV0vrTUUIFt9A22QBkHAH8iSb0qcfNmjgoXiuOMzUzguI.ZKT6XfTXiwD
VeoSKb7uYdj9fhZBNJGTMY7nFfyy1jkWdlGVfk052thrmxiVk3hvXYFv3v30
.p46uq8A0eb2xHeGHqMTP3TH1PGQRrPZaQg.8RIdDYYdzxkJnsV20kKEogTR
zEITSKt8ZG26pmnCES8+9l30ydez5syde7yIOjktpdnyiSie93uFWvXbCHJ.
5J8hok5CiPm941pdAK0iS0eCHElY.SHiirbMB.PW9AO9EnWEISeuOYs9L9DW
xIgkHHyRn1yNh3BB9TNIkPS8HeBHPtgdoH0DN2h.58rhtEkcTe8Wfqjo6Lxb
cf+utTmnTVSvATgv1pQD9XoN1dtBSkTlaaYeau7E59onhBeE5pdXm9yGY7q5
AkRmN4pO+sQ.v+S+gh6MuFPuzYHoZE3VNVBGXXpz7TX+zY3OOww5LrmCr5SC
NMNJuxqGZmFrTIbQseDEOqotz6q38oyk9bxyVAnlZcZWe4KN2otNFxysK0fF
cole8W9i8RbAp8wwpfWKiXrWv26sykEWn.NythXLJFZDWzo1UzkMw9u9sU4Y
OEu9WLrUWx3JgAg.qGURDiX3snRnvrSNN5CU5lacdRs2bFapJ3ixr9EnYSLn
r7bBRPFVoJwzU898W5ZAj2vxQ966yMmunsKFIFcwHytEHYY+7V0YkooVdHJ0
ktejrzODuN9yQyCfIjlkc5hUGAVxspdwRmgX8kn3gIrzxj1fc+yNH98iQUmu
1m1ZPRJ9HLHmJYguaWQQ15dHQ371QTReAtVvoBz+9ZIE2WP.9ODkr925kRHb
oU7SaMcf+1ujnzi3KBbhxPnSOygeMovM5EGf+uUKgJ1Yd8if3K4KVGLT0bfN
5xa3HyKmawDGO56OFup+5QZyvYSzV1UA89onh7jutrHOMPX4j.z5z+o2JIGJ
i7Qrg2DpY+4rUkILvtYknCdtLXJ2Uxsket2pDuVJY94cO+f+.bSZVO0wkID7
+SIKK5FMuWbVSBpXxdtuH8b78Ky1D2OWGOrpURr9G+lu2Mw.1uD8vnOk8l3V
undzIA4Uyz+gAMIs18+qg3TbcTN9KYOom+7nLknKLHi4LBGZ6EACMAHf3VR2
o.0+OetCKD9MvjQ90nOG+XV9y+1nOZ08YW.VPGYhvpn7Oc2ZcFx6NSvz58bI
61RYUFtudrZHsD0ORoJMd4JIWtlxBCbLBw9FdAwtQKZdiVbumpU78itDFH.T
4rMOFudTWVW4pqP5CowJqT1MVw2kk8oyuZomcQL.dwBeX0bOow3EJZ+g5WVL
umYNcisR0OtIY8m5k4DlhF.Dktrf04+Ghe6D.+5YiQwwutdhNaO62oBJGVEW
SWvUa4mQSO+zsIl8tZ+9RKQTGLMEvM1men3UvLzKt8Vzmryy+W0YA5WBNllp
cGqaSQpQw5Ruenk5y2ydbo3EBjD29WTJwBtqEWLIyR94nuxpjls6gqnh5ywk
6XpGg8szQLGiuC6ZhyQoNgtDAADlhj0swq0tAmpw0SpyzmG366HTPcsWTt25
Ns0ETrxE5cT86Zr0UxEoPpR9TI0tyQbbdtnqA9tx9XexhimMO47co6hqVt26
rZJLj61oVGzUKqpgdJPh7rurdPXwEsyLAXw+72hFFR.PRpce5w4XLxJiifJO
UmNj3GxiiGHVXFEJCGNjo8cc5PfeRoYecQzfPAAAvX1f4y.JDvLjvjl7O4Tg
G+GwqFDNvKc8FVNmZfyx6TgC+WwooYeYXCEHpcOxxEPgYNE.pRJgdoEMUu+g
oR.PLkHJ5ulQTyRs9CYoCjsrLrrTkmwT6VDtpKEiJRrYW9lzg63Gu7vAPfTl
vtFVZ0bTOlUCAXc9EQALoQ.UmCuQho.+yiWFm7Y+2ADMwmVF+gC3Nn5w8XbQ
.6zn0rg8K1VDkhcoyvJ2cfsTRYR7EG4ttbtaiOTnsdQYU9v.l+5MN5L4vg.t
cM1ILfzcF63P+NtEW2gshnM8Lx++XTQ1reTGEl4iNLtsH9wcooE8eAi0G.Xt
gJyJmyHzj43unbETPoP6Rkwvbr8fXxTpTXSy.jE4mHbOvwHCI3Bqip3RQaLR
hkSh0jBcA85k34k7K5nv9sdJX98I4Eea1+xSYy8XMB.ZVCSDWvNNBkFI2ZT6
cj.6vArr4Ea.Jk.6rXThUD21rhA.X3oGjq5CF5TQZHFLbui8uf45JW2p6sUo
u6iJJxSdXWgMUGTg52spI2SoYODkdTIfqohM2aODboPUIswrPVIsQBv9pl8M
bsyFSCYsyFRLIG4AVsraAmeX2iOFmWh0yNTLhak.7XZVTw4weRXvekazUpgo
PLeLn.EydXVZqHqAGeWKUkVDKL3oqxKi4PScV6npsVXPyOG+0M4y9aeDM62q
9Mb1+z1kQoQ45BrZY5q2yhwKLPUeXW00l.wZDFy.CBuM5Vqsmgao950HJUVe
gUZuUJHKhyu2VjOqpVRI4mo.+zjke5hkc6swGLAbdFh81THfCcU8BUHWkon.
Otx8dDGDwpcPGyiJ+.0w4RWmDz5OXWCBK6kMck3xH8iBcskBlMP+oXD3LSCH
fYa.DbaChPZZnti6VDov0.6dF0T4sMDH6yhgLWCJ01f65DjAscBBwX2sHHWu
EtdwXVvAQvtWHm6fBz9OAz8vH2ifTt76.KNw8wkN3iCf6ATz9F6ecV3SQ4sc
hn9w99nPWmHHGhik6IEz8Ww8MwDGVAnPhi.RcWfTZd15O3N6xqI5VEIOL5.c
p9oFUfHaIXGBGAVJBfhLC3PtvxaAIXpkfh2eEI0xc.U7VB2sXtQSoaXPMkTp
iWvQzIVRNm4F53bGGJx8jBjz9gnTG2LlycLcpY14FlQVN.hZ9.tq3FwvDG2m
x.o8C.crODv9uzdNUBFXewz8uNFwAtpOkiOBI2+ZHtOfSZiI.N1PgiSkRbPL
m4j1DTfkNh3LtsABiC.GUY0PNLlUu.KkABpmj+sbXGmX2b7YmjP230xpbskW
6NjK2NgU16ODyiODDDhuDvGTpVFaedVt1t39povD7ogm9oAC5SyDd7o4gf9x
3S1WxGxY0hbPu+R0Sf+sgSzl4Y.i+mtd9Ke9yIq1jkrtvIzikHsVBkIgZUWD
tN41nld84uEBZmepZ5Y6+qPKVP7giASCv3HgMYeIPGF1F1WxGVS1XvZ5yWFw
FCEoXezlguxe5fqCGS8kmZnbu0y8zsYMFEhuDzGbJDVKv9HQBwA3Kg7QeFpV
BW+XU1TrzVJrf5EJ+vO5EvyoNug6EB3F5CbOTcVHu71icNJDGYb8k.r0LLKM
w7Wg.1f9.aClJ3i77dlog8kvcfdOrujOnTHLvB8xkrwvrmWe450PfiYdEH5B
nZtlHJGKPBnI4IRgzE5sPCmZhPr8OCs4K+.dX0B4Qm.dFAbNfGMLfm4KvCtf
uvD0Dmq5vqTetmnVOda3dAmExK8ezwv+EnOJcNZlUS4mlB7X3iIaX9JTgYgj
Z3dAe3C66v2PMQ.Q95zxf+R93HFuEEpnw+SejKoMyWfA1pjIwUBQq9WDo4uX
po5Rc+Uv4Kf9pe5RyUGam0MlYWyvZ+EgaNmSTIt7uBtjJr6dvV9owC6S6CC+
owzwFoynMazacD2Sa9FyeN5i1sBhIPsJ58Z6eZBt5773Omr+4olqDkuTu+XV
VrK2tEJ9pqPKOWuLp4q2k3nulcywQEoBKtdghSwQ62FGkngSL098ARymW09T
DJ5YAnnmmU0lOTTsefnZ4vPseup7t219Nuo9ttoJiWCEUhlG.5Sgjn+EQhNT
.IFRwiXPENhAWzH5aAivKggiO1f86v60yrIe+JLD2VBDGJ3CMKPzxlVr0Mr3
fAniKjCdHm5YFuo+EtgyWzF5UAan6Go1dVnFdwIF4c2BkbTybznfwQWVjE7f
U1yBqP+KpBdUPEFRwTXXERg9UDEtd73dVvDt19N0LKtHXr30J.B93YkeYPwA
TvCtPwNnGpe6VQNneE3f9NAftVPC5K+XuRGvdyEeNlUYn4UqVfBtHG6kyPqg
BrNT7Atg.pJEV.ODt8JKWGLPqZQCnYfy67sefgIzMEPUKY+6GuUiI30gjYuG
Vh82uj5ennWkIueekCaxHf+Iq+PA1GmT96EzGT.pRB2uYfYHLT8IA6GJLqRh
z2CshdZsbPTiQ1j4O2IUHis.Z0Deey.SmS18gBzNNo1GP99fBlURX82PdaTM
Yz6ybItXBnuWIe9PgMkIY9.NsndmT4CFRcTxieH9S3cxhOX.eky4dHbm8LCJ
WJIvGJTpRxduWCEgDVNJQtGPJ7.Rb6CF4ZNAs6ou89Gh59lP1GdxXe.wPqKY
81fD4gfG+rPthJmjP0CwqBco0nwqDlduSV5CHQoO3PZ4YhQ+llwpE+yCkxoJ
I5bOT2d4LZc+Rr48Lol2mDZd+Sl48NQl28jXdOSf4CcSf3QBKe5TaeSsV2ml
.xudNKcRxE2+4H5YxRpWIS7AiW0REwd6dzkST3Cc8xaKAgGDDtRh.2mY44Qx
+NHfUsCIdy.VenpC1MQeSj28LIdOxlzGhpp5RG9MJVMwb6aP2NSx3dvbVmlz
s8VL2qDscn.vpITaugPuRh1ABBqlrr8F.8JAYGH.rVhv1eH7BoYy.AbGkjq8
2TiOI15.AiURf0dCedkzpCD7UO4T6OIzm7z74yQygEAPuDQfSRlz9yh3S9bc
v.X0DEcGcdvyjCcuRLzCFupm.n8mmwmj97vAtiSty9Led+Rny8JYNOXDpRRa
91wBxoIjYe1kw9kDludBrkIZYuhR3IIW4.78aHIJ6Cg0ujGbuRZxACoFIbJf
yu2qDg7voGkI73ajyKP0DYrWL9ml7hGVhKdnIs3gkvhaMYE2MBq8nyYVAOMo
Z6F2PnIMz81+u29+SKqgCI
-----------end_max5_patcher-----------

I’m running my batch analysis thing now on a composite/test corpus to see what makes the most sense in terms of compensation (normally takes around 45min).

The problem, as elsewhere with this approach, is that I’m analyzing 256 samples in real-time, and using that to query files that are arbitrarily long. The current approach I’m taking is to analyze each file in the corpus in three time scales: 0-256, 0-4410, entire sample.

So at the moment, I’m analyzing all the other descriptor stuff I was doing before and taking 40 melbands for each of the time series.

What’s interesting to see is that depending on the time series, the melband response of the sample (when taking a mean of each band) gets more and more isolated and narrow the longer the time series. This is probably intrinsic to the fact that these are largely resonant metallic sounds, so as the initial attack fades away, more and more of the noise fades away and I’m left with a clearer fundamental.

Take a gander at this:

(from top to bottom this is 0-256, 0-4410, entire sample)

I’m going to test and compare each version of this for the compensation, but based on this initial look, I’m thinking that I’m only going to take the melbands for the initial 256 samples and do correct in a like-for-like manner with the realtime analysis, otherwise I’m gonna get some weird ass corrections with the other two time frames.

The upside of this is that it makes my data structure less complex in that I would need 80 less features per entry.