0
$\begingroup$

I have discovered a method to measure the similarity of two successive musical notes which I wanted to share with a question:

It is known in music theory that two successive pitches $a,b$ which sound “good” or “nice” if some ratio $B/A$ is “simple”. The notion of simplicity has not been defined precisely, and I will give a possible notion here:

Let $\alpha = 2^{\frac{1}{12}}$, $p_1 = \alpha^{k_1},p_2=\alpha^{k_2}$ where $0 \le k_1,k_2 \le 127$ are the midi pitches. We define the similarity between $p_1$ and $p_2$ to be: $$K_p(k_1,k_2) = \frac{\gcd(a,b)^2}{ab}$$ where $a = $ numerator of a rational approximation of $\alpha^{k_1-k_2}$ and $b = $ denominator of a rational approximation of $\alpha^{k_1-k_2}$. We argue that this similarity could capture when two pitches have a "simple" ratio and hence will sound "nice" together or when played in successive order. We look at the following matrix:

$$ \left(\begin{array}{rrrrrrrrrrrr} 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 \\ 1 & \frac{16}{15} & \frac{9}{8} & \frac{6}{5} & \frac{5}{4} & \frac{4}{3} & \frac{17}{12} & \frac{3}{2} & \frac{8}{5} & \frac{5}{3} & \frac{16}{9} & \frac{15}{8} \\ 1 & \frac{1}{240} & \frac{1}{72} & \frac{1}{30} & \frac{1}{20} & \frac{1}{12} & \frac{1}{204} & \frac{1}{6} & \frac{1}{40} & \frac{1}{15} & \frac{1}{144} & \frac{1}{120} \end{array}\right) $$

In the first row is the pitch difference $k_1-k_2$. In the second row is a rational approximation of $\alpha^{k_1-k_2}$. In the last row is the similarity measure $K_p(k_1,k_2)$ where $k_2=0$. This similarity measure goes from $0$ to $1$. A larger value indicates a larger similarity. We sort the matrix above by the third row, similarity measure, to look how the rational approximation changes:

$$ \left(\begin{array}{rrrrrrrrrrrr} 0 & 7 & 5 & 9 & 4 & 3 & 8 & 2 & 11 & 10 & 6 & 1 \\ 1 & \frac{3}{2} & \frac{4}{3} & \frac{5}{3} & \frac{5}{4} & \frac{6}{5} & \frac{8}{5} & \frac{9}{8} & \frac{15}{8} & \frac{16}{9} & \frac{17}{12} & \frac{16}{15} \\ 1 & \frac{1}{6} & \frac{1}{12} & \frac{1}{15} & \frac{1}{20} & \frac{1}{30} & \frac{1}{40} & \frac{1}{72} & \frac{1}{120} & \frac{1}{144} & \frac{1}{204} & \frac{1}{240} \end{array}\right) $$

We see in the matrix above that a perfect $7$-th is more "consonant" by the above definition than the perfect $5$-th. The most "dissonant" is a half-tone difference realised by $1$ being the last number in the first row.

Since a pitch alone does not describe a note, we have also defined similarity measures for duration, volume and if it is a rest or not:

Herefore we make use of the Jaccard-similarity of two intervals:

$$J(A,B) = \frac{\mu(A \cap B)}{\mu(A \cup B)}$$

where $A = [0,a],B = [0,b]$ are closed intervals and $a,b>0$ and $\mu([x,y]) = y-x$.

Using $J$ we define the duration similarity:

$$K_d(d_1,d_2) = J([0,d_1],[0,d_2])$$

for two durations $d_1,d_2$ given as multiple of quarter notes. And similarily we define the volume similarity as :

$$K_v(v_1,v_2) = J([0,v_1],[0,v_2])$$

for $0 \le v_1,v_2 \le 127$ giving the volumes in midi notation. For rests we take the similarty $=0$ if one is not a rest and the other is, or $=1$ if both are no rests or both are rests.

Having two notes $n_1 = (p_1,d_1,v_1,r_1),n_2 = (p_2,d_2,v_2,r_2)$ we define a similarity between them as:

$$K(n_1,n_2) = \alpha_p K_P(p_1,p_2) +\alpha_d K_d(d_1,d_2) + \alpha_v K_v(v_1,v_2) + \alpha_r K_r(r_1,r_2)$$

where $\alpha_p+\alpha_d+\alpha_v+\alpha_r=1$ and $0<\alpha_x<1$ are weights.

The mathematical properties of this similarity measure are also nice and can be proven. We can use this similarity measure to define a distance between two notes:

$$d(n_1,n_2) = \sqrt{2(1-K(n_1,n_2))}$$

This has the advantage of using the nearest neighbors algorithm in generating music. To capture similarities between fixed length sequences of notes, one could define the sum of the similarites:

$$K_S((n_1,\cdots,n_s),(N_1,\cdots,N_s)) = \frac{1}{s}\sum_{i=1}^s K(n_i,N_i)$$

This could be useful for measuring consonance of two melodies or so. The algorithm we propose starts with a single note for a voice and keeps adding nearest neighbor notes sorted by distance, with the last note in a sequence of neighbors, becoming again the first note etc.

Here is an example done for two pianos with the knn-method described above:

youtube: https://www.youtube.com/watch?v=UjQWw-eWtZQ

bandcamp: https://musescore1983.bandcamp.com/track/knn-for-two-pianos-and-four-seeds

audio & score: https://musescore1983.gumroad.com/l/eVHvR

Here is another example where I would give 4 seed notes for each voice and the computer solves an approximate shortest Hamiltonian path problem between two successive seeds going through notes in the ball with center the first seed and radius equal to the distance of the two consecutive seeds. It has more dynamics and less loops as the first piece, which should be expected given the different method:

audio: https://drive.google.com/file/d/1d4CZ7dlEMKPbM41H3oA11nD0GBP4BcNZ/view

score: https://drive.google.com/file/d/1sPzG3w1Joh67bbGx1cXSnZL1IIUVBaqH/view?usp=sharing

Question: Are there other positive definite kernels over the natural numbers, which can capture the perceived similarity / simple ratios?

Edit as per request of @GerryMyerson:

Note similarity sorted by two octaves:

The first and second matrix are to be interpreted as in the example above:

$$ \left(\begin{array}{rrrrrrrrrrrrrrrrrrrrrrrr} 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 & 21 & 22 & 23 \\ 1 & \frac{16}{15} & \frac{9}{8} & \frac{6}{5} & \frac{5}{4} & \frac{4}{3} & \frac{17}{12} & \frac{3}{2} & \frac{8}{5} & \frac{5}{3} & \frac{16}{9} & \frac{15}{8} & 2 & \frac{17}{8} & \frac{9}{4} & \frac{12}{5} & \frac{5}{2} & \frac{8}{3} & \frac{17}{6} & 3 & \frac{16}{5} & \frac{10}{3} & \frac{25}{7} & \frac{15}{4} \\ 1 & \frac{1}{240} & \frac{1}{72} & \frac{1}{30} & \frac{1}{20} & \frac{1}{12} & \frac{1}{204} & \frac{1}{6} & \frac{1}{40} & \frac{1}{15} & \frac{1}{144} & \frac{1}{120} & \frac{1}{2} & \frac{1}{136} & \frac{1}{36} & \frac{1}{60} & \frac{1}{10} & \frac{1}{24} & \frac{1}{102} & \frac{1}{3} & \frac{1}{80} & \frac{1}{30} & \frac{1}{175} & \frac{1}{60} \end{array}\right) $$ $$ \left(\begin{array}{rrrrrrrrrrrrrrrrrrrrrrrr} 0 & 12 & 19 & 7 & 16 & 5 & 9 & 4 & 17 & 21 & 3 & 14 & 8 & 23 & 15 & 2 & 20 & 18 & 11 & 13 & 10 & 22 & 6 & 1 \\ 1 & 2 & 3 & \frac{3}{2} & \frac{5}{2} & \frac{4}{3} & \frac{5}{3} & \frac{5}{4} & \frac{8}{3} & \frac{10}{3} & \frac{6}{5} & \frac{9}{4} & \frac{8}{5} & \frac{15}{4} & \frac{12}{5} & \frac{9}{8} & \frac{16}{5} & \frac{17}{6} & \frac{15}{8} & \frac{17}{8} & \frac{16}{9} & \frac{25}{7} & \frac{17}{12} & \frac{16}{15} \\ 1 & \frac{1}{2} & \frac{1}{3} & \frac{1}{6} & \frac{1}{10} & \frac{1}{12} & \frac{1}{15} & \frac{1}{20} & \frac{1}{24} & \frac{1}{30} & \frac{1}{30} & \frac{1}{36} & \frac{1}{40} & \frac{1}{60} & \frac{1}{60} & \frac{1}{72} & \frac{1}{80} & \frac{1}{102} & \frac{1}{120} & \frac{1}{136} & \frac{1}{144} & \frac{1}{175} & \frac{1}{204} & \frac{1}{240} \end{array}\right) $$

Edit: The question about the consonance ordering is answered here

https://music.stackexchange.com/questions/117426/how-to-sort-for-pitch-similarity

The above ordering is approximately correct by the answer given above.

$\endgroup$
12
  • 1
    $\begingroup$ I see that sorting your matrix by increasing denominator in the second row (and breaking ties by sorting on increasing numerator) gives the same order as sorting by decreasing third row (and seems to me to be a simpler concept). $\endgroup$ Commented Sep 19, 2021 at 13:09
  • $\begingroup$ Also, it's not clear to me how you measure the similarity, or otherwise, of notes that are not in the same octave. High C is certainly quite similar to middle C, but not identical to it. $\endgroup$ Commented Sep 19, 2021 at 13:13
  • $\begingroup$ @peterTaylor: yes, you are right. I will correct it. $\endgroup$ Commented Sep 19, 2021 at 14:27
  • $\begingroup$ @GerryMyerson: To your question with the lexicographic sorting: What is "simpler" depends on the use case. I think that having a proven similarity / positive definite kernel, allows one to do Cholesky factorization and get vectors, k-nearest neighbors and traveling salesman or any other algorithm for metric scpaces, which in itself is interesting for music. $\endgroup$ Commented Sep 19, 2021 at 14:31
  • 1
    $\begingroup$ I want to put in a plug for a more empirical approach. There's a huge literature on this subject (do a Google scholar search for "musical note perceptual similarity" for instance) and there's a lot of experimental data available. Making a mathematical theory of music without reference to experiments might be like fitting planetary orbits to Platonic solids: beautiful on the surface, but missing a deeper and more descriptive theory. $\endgroup$ Commented Sep 19, 2021 at 15:32

0

You must log in to answer this question.