I'm trying to implement and calculate the tonal tension of a triad (and its harmonics) following the definition given here: https://pdfs.semanticscholar.org/f05e/56c9548fa18c64efeed248742e3a6afb0c02.pdf

The tension of a single triad is given by: t=v*exp[-((y-x)/alpha)^2], where y=log(f3/f2) and x=log(f2/f1) and f3>f2>f1 where f1,f2,f3are the frequencies of the 3 components of the triad.

So far i've implemented this Matlab code:

function [tension] = tension(f1,f2,f3)
   Fdif1 = log(f2/f1);
   Fdif2 = log(f3/f2);
   alpha = 0.60;
   tension = exp(-(((Fdif2 - Fdif1)/alpha))^2);

Which seems right to me, but following the experimental data in the paper mentioned above (for example the tension for a single triad of 3 notes without overtones, so 3 simple sinusoids) I don't get at all the value mentioned in the graph (figure 6 of the paper).

What am i doing wrong? I thought it could be a mismatch of co-domain: the definition of tension works over a pure frequency difference, while (in figure 5 of the paper) the gaussian function of the tension works over semitones difference.

Could it be the problem?

PS: I took inspiration from this answer: https://music.stackexchange.com/questions/4439/is-there-a-way-to-measure-the-consonance-or-dissonance-of-a-chord/6556#6556?newreg=b8a315477e404f34984a65b7d96f2f49 and i wanted to extend the research implementing the other algorithms mentioned in the various papers.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.