Ok, I took a stab at “manually” creating a timeness metric.
This time I’m using actual values extracted from a larger corpus. I’m taking the overall duration, time centroid, derivative of loudness for samples 0-256, derivative of loudness for samples 0-4410, and derivative of loudness for the whole file.
I started playing with this “intuitively” by trying to weigh different bits of this together, and then trying to merge them.
I started with just the derivatives. I first thought to put the most amount of weight on the first time window, but then thought that it wouldn’t best represent the overall file, so at the moment I’m weighing them like this:
expr ($f1 * 0.25) + ($f2 * 0.25) + ($f3 * 0.5)
I then normalized the duration and time centroid by the maximum duration in this particular corpus. I weigh the normalized centroid with the overall duration, with the centroid itself having the most weight (80%), with my thinking being that that single number probably best represents how long something sounds. I’m weighing it against the overall duration as that would have an impact too. So that gives me:
expr ($f1 * 0.2) + ($f2 * 0.8)
The next bit was a bit tricky as I wanted to take the value I got from mashing the centroid and duration together (which are grounded in units of time) and have those impacted by the derivatives.
For this particular corpus the derivatives (when weighed together as per above) range from -1.051384 to 5.505389. My thinking here is that if the file is going down more than it goes up, which would correspond with a negative/low derivative value, that I would want to bring the overall timeness metric down. And the opposite would be the case for a positive/high derivative.
Since the ranges here vary a bit, I’m only giving a bit of weight to the derivative here with:
expr ($f1 * 0.99) + ($f2 * 0.01)
Finally I take the overall timeness and normalize that back up to 0.0 to 1.0 so for this particular corpus, I now have a ‘timeness’ metric between 0.0 and 1.0 which corresponds to how much timeness-ness each file has.
I had asked @Angie for some help with bits of this and she added an insightful “oh, you’re doing whatever you want”, when I was massaging the numbers, and that’s definitely the case here!
I also massaged and assessed things based on a corpus of struck objects with fairly quick decays (relatively speaking), so no clue if these numbers would hold up with samples with vastly different morphologies.
////////////////////////////////////////////////////////////////////////////////////////////////////////////
I set up a separate part of the patch that handles playback and did some comparing and testing and I have to say the numbers kind of hold up. I mean, it is largely the time centroid with a bit of “pepper” from the other stats (in varying degrees) so that makes sense.
Sadly, I can’t query the samples on the timeness
metric with how the patch is setup. I guess I can reanalyze everything and then use timeness
to choose which file to play back. That would make it easier to test whether a timeness
of 1.0 sounds longer than one which is 0.9.
I did notice that loudness plays a big part of this. Meaning, I may have a file with timeness value of 0.35 which actually sounds shorter than one with 0.25, if it is quieter. That is, the sound drops out of the “plainly audible” range more quickly if it starts off quieter. If I crank the volume up, the sound is indeed longer (or timeness-lier
to use the technical term), but that doesn’t quite hold true in a real-world sense.
This makes me think that it may be useful to try to incorporate loudness as part of the aggregate timeness
metric. For the most part these files will be queried and have their loudness compensated, so these kinds of differences would make less of a difference in context, but it may be useful to add a bit of that to this.
////////////////////////////////////////////////////////////////////////////////////////////////////////////
Would love any input on the idea or specific steps here.
_timeness.txt.zip (42.4 KB)
----------begin_max5_patcher----------
2718.3oc0b01aihqE9ys+JrhtqzN6lIWrMXfQiFo62t+G1tphj3lxrDHhWZ6
tq1+62isAhIwPgDSybizjT7Ar84wm2sY966uaw5r23EKPeA8an6t6uu+t6jM
IZ3t5quaw9n21jDUHusEax1ummVtXohVI+sxl1ODkyQkYn7nWQEkQkEOj90s
U4QkwYoeC80MvikmEuE9yhmyxKQa44wu.WsmuMtZe6ku9bVBG8TbB+aMiRRb
JeSVUpbnH0MdHmW.cor6erycfatk3sx4V15u+YrGqo2Rq1GmlvKkLD9XiYUk
Ms5zLFQkadNNc2i47MkJXB6gW4rD46PVEp8w2mtDQ8XBZT5JGzuK5g+496Ee
s7JA2GVTFCD3EEOrXgIdyyN7FyekWOrFySvYDGKyYoY46iRh+KNBVMqRJiRK
Q5bK5knjJoTkXjge.vGDvR2wGT1nC3PsC3PH9BHfQcV4RO9Ay7Whv9jYYg+U
d7tmA1dGu7YdNpQa5e2nKgdMt7YklCP3E9WdHML7mLbev.rN6gT7OocyFQP2
2U6x0DFisj.HfffDnKitho+gDBxdXpD+clELtAxPQo.Z0.aMHOfqAN+D5yHg
jYK4GRIxFydgmGkjz1GFAVpIXywNvFUo3R8gezDMoNTgJqTr00e1zbMCc+75
nB9VDzLzcs2ymFDa5WnyD54FXGzy2Q.dD+fUAcM6A50Dxr.djUHPvpCxbg95
Z.lmxRKSi1ykc++km7BuLdSjImEt9Kzdlmh1vOA0FKTJd7BP.PNQAsx9QX2v
vU9BAT.Nc00qcAHFGpT4mG05VqcE5JydR8V3whyUgZ.pxdhlj9XHdrNW65hc
FzXYG30RwYvB8jhkjvUDcHyirrIFDqaJbSFXEaezVNp5.J6ouf95ol1f3y5X
BDtVBwvciRxp1J7Zib9Lff8PQfkFIosX7sQ6a200R91AkeGgrH32Q2.JgARl
D5r3a2cEp.rA.xWOrnXSTBe6wf6lnQ.xzMBP9vMB3Sk1.bw3UA5xyLL.7PHm
ygQ.7JHtxns0p3zUfb79CxqFDom.Nh+vwQpqJNH2UNchQhJbW4HcWcov3dPQ
L5Xn0svnODjKX31gh8gvvHqnXR.gh9LLZXmPOOQv4NdNdDQSXGw80zGJVs7O
OvUy9EKP+tAbjFZTQlXDyvCjclanDb7k+P8jp0Bm3WDd7TRFLx8yJKQKVC4h
zCK0hAPhwfvTIO+QdZz5Dt95tQQjmDwVI4HlQ.fLfVlmh+CNOENOmaHX3cK.
CpxrhmCakutYc2.HKW7UgFo7WAF6LMkCh7X4k8hRwBiTpeLiSSwg1.bNgJkC
7.0AecAAOgUVuibtdOvyq42ZFFfdvPID.PgH7ziyh6VDc3fVy2o8HBT56YxN
JXYaSwoplvsMkyeIt448ZaMJG3iRfIpxU1dei0fGhtIChZHsJV1SpFg0q5oj
bkQXyt3PsQX4BXC4iHiTIvQYAUYsLv4HR.K66Rx17G7sZxkv53AdZbptC3Nj
2xeJpJo7Qci3XxJiza7QXjXqSm+SdbTR6reWd71rTwjnyxfn4lgSTXJYHLd5
Li7NRiNX3gAwM.S5gnn7cUEqixEqR0JojFhkYYIcI09bI7mJqIeHNM8DTrL6
P+Dygv0G3YWmAD2OTeKoT7XUph5if.Q4iEQuzEsKgnYq0c618uEkFC1Y3hva
UNgaIpLT8bwlbH93N7qhxKFnrEDv2veMda4yxARWX.t83CMBQKZWk2FuiWT1
ssxncEcaon7OUftVSUqqUferju+PBvEcuAP0Htnr34rWKpuwFAMc.3Xgf0Un
0MD1o8gLH10nXIBr7f9L7kN4wXa7L6ij.8tvjMx9sS1msRkeQHjXU4855V3t
FWC0latPzYcEH9lNH62w444Lt2hNbQuNQmBvfGEv3nhavs4aqBLxo4f3R+XB
E2qvfy0wyJOCz1u6LEZR1PWESN0R2xeSy4jUvG0LeQeH.4BTGbFCBPTq2+e.
DPsODD3YAHfX.BN5YVj2YO1akSHAcyXSQVU9lFkiVaCntyNvISYbZajJ+ll4
SzXUfm77PnONx4g2bNOZ3x2edHzel44AdTyCZuyi5FahzcgHhlsOphd6wnxx
7Xv2hRTROz8IEkADx65njSBMvTPH2ebxYoRKLb5R8jjjicJVPSRRlROj5MGo
G9qH7foFZjcIT6vt98ysjPUsluPtsBrDV0LIeI5nHTGB8Evm7eG4bHD1ZCi0
kEUPeo3KPRATd1I9S0V.aFtHCUpgITZN56AkF2lxlvkzSuVoy1prNfZqb6ty
d57zp04kp8mgO0PCpKtz44hSiKEIUpRVT2a142z4.Vm6JIKcmw03N20dPFou
dPdBPd+tnQXgbutYwKx.TOZj6fjkPDDYv5ZYVPCOkZV9tkryXoZvtyRUpjxM
PNofXf56IZ.FadmWYWlEIFXqM7rSTgK61UsR7MozsDJVtIHDmUd5BBL1UWsx
qCMtM0ts9LMPcOaKiuofA6FJZ7CGX3dCkLHtAqziighu0nA4FJZLGnQOdOJy
yp18rnld862..xn1p4MzFd3LEmnCDQlHrK5oGeGuPx460bf+rrwO7n+PVhSK
fIXGKgIgRV0LJPmCTf+1gbzO+udBi9EHvhvvOg9UwkD4kN3OMs3LBYVZSgU3
fwv0cASpdyMPP5fCASDFBBrJLX7TBhY3qBF5K8dwIbCOQ10Ro65gY8ZX7JCq
t2yOU8ohxvIEwmXoi5oueuGKL0oBy5mQ6SOgh5bkkN2ujlEDSbE4p3p4IEHV
ncx.pVmjDhO26El59CXxeLlc3bJUUyoYgyq1ulmOgv3.FIduprJXCr7kGl6n
CiqVPvmc9o55JO2N8HFHOqmMunECW8ikCTED5TND1tuu0ZShC9A8TQs2sJ3b
PNn64D3.Ljsm7Dl0KmTU52yhSeuxI0GXRBWXkxS1XUww6byoTmqS2pOO8SzK
Owtw1QUgyFNGwx8WInhj3M7KoHgDG6TivZ1DyHqv5pGAeXgv50IF11KoxK8l
XHsGKvVGXgN0UeFVd.+LJnSnyift3HDOMt0yRaWkW.f6l8QPCmEdUb3omFuZ
of2ohUz93U5Ov9Cw1wcXi9NNbE9zWHgOR2gxQn6gUPgwmtY30H84aBt9Vw26
1eGpuQ4PzXaO.dQKqGRhiLzf5W5k.l5U0nyULU9CtgxjijW01aY4aUmrUGiB
KilQvAihU7OtS9W7XIJ7wHFpNG6CawmAihMw9ywXK2Y+Qv3tV.ia6kgGKmZQ
SKLV32ETcrwXgCG8XMCJIiZATpJQ9XXT4BnAFEecC9Ic6PLpcVQG2X8wX44D
j2VXJgN5A+p09IjwLVDpEFK13vzYwZNabhNr4XrIiyPj6rM1uOeSlkwdLq2L
a3CaT9pCYyhAP+wNzFrSPtN70YLxU1HNrQo8bxhfkv2QYzHHXNrCOJcG1r3V
cTlLXyh.MMXrbMouDU7Hp+6+gPOuFltAXYBsCRjDXXSrIdpZbbNsaCDvtFHv
aXZFA.Zn5r3NF.3Jy8YLAfPsQbVrQk7wrHmO4A9jkXJ1U9h7icfTu0WOBcW1
lq94ztR.y6Zm1Dl+MXZOlxePblESoiISLx4wRqp3yIuguhA4j2r2SdqdO+M5
s+2l2SeSdkuaC88F7d++b++C9WDue
-----------end_max5_patcher-----------