El atajo
El atajo elige, en cada instante, la fila de más energía:
\hat k(t) = \arg\max_{k}\, E(t,k)
El coste de Carmona, Hwang y Torrésani
Una curva es buena si pasa por mucha energía, cambia poco de altura y se tuerce poco. En continuo, con T la transformada y \varphi(t) la curva, se busca el mínimo de
\mathcal{E}(\varphi) = -\int \bigl|T\bigl(t,\varphi(t)\bigr)\bigr|^2\,dt + \int \Bigl(\lambda\,\varphi'(t)^2 + \mu\,\varphi''(t)^2\Bigr)\,dt
y en una rejilla, con c_t la fila elegida en cada instante, se maximiza su versión discreta, donde \lambda es el castigo por saltar y \mu el castigo por cambiar de pendiente, la inercia:
J(c) = \sum_t E(t,c_t) - \lambda \sum_t (c_t - c_{t-1})^2 - \mu \sum_t (c_t - 2c_{t-1} + c_{t-2})^2
La programación dinámica
La mejor puntuación que puede llegar a la fila k en el instante t es su energía más lo mejor que se podía traer del instante anterior, pagando el salto. Se guarda también de qué fila venía, para volver atrás al final:
D(t,k) = E(t,k) + \max_{|j-k|\le J}\Bigl[D(t-1,j) - \lambda\,(k-j)^2\Bigr]
El trabajo crece con el número de instantes, de filas y de saltos permitidos, y no con todos los caminos posibles, que son n_F elevado a n_T:
\text{cuentas} \approx n_T\, n_F\,(2J+1) \qquad\text{frente a}\qquad n_F^{\,n_T}\ \text{caminos}
El coste de Praat
Se suman los castigos de cada transición y se resta la fuerza de los candidatos elegidos. Un salto entre dos notas cuesta en proporción a las octavas que separa, y encender o apagar la voz tiene su propio coste (Boersma, 1993):
\text{coste} = \sum_{n=2}^{N} \mathrm{tr}(F_{n-1},F_n) - \sum_{n=1}^{N} R_n, \qquad \mathrm{tr}(F_1,F_2) = \begin{cases} 0 & \text{los dos sordos}\\ C_{\text{s/s}} & \text{uno sordo}\\ C_{\text{oct}}\,\bigl|\log_2 (F_1/F_2)\bigr| & \text{los dos sonoros}\end{cases}
La función diferencia de YIN
Mide cuánto cambia la señal al compararla con ella misma desplazada \tau muestras, en una ventana de W muestras. La segunda forma dice que es la autocorrelación vista al revés: donde la autocorrelación tiene un pico, la diferencia tiene un valle.
d_t(\tau) = \sum_{j=t+1}^{t+W} \bigl(x_j - x_{j+\tau}\bigr)^2 = r_t(0) + r_{t+\tau}(0) - 2\,r_t(\tau)
La normalización acumulada
Se divide cada valor por la media de los anteriores, para que los desplazamientos muy pequeños no parezcan periodos. El periodo \tau^\ast es el primer mínimo local con d' por debajo del umbral, que es 0,1 en el artículo, o, si no hay ninguno, el mínimo global:
d'_t(\tau) = \begin{cases} 1 & \tau = 0\\[2pt] \dfrac{d_t(\tau)}{\frac{1}{\tau}\sum_{j=1}^{\tau} d_t(j)} & \tau > 0\end{cases} \qquad f_0 = \frac{f_s}{\tau^\ast}
Semitonos y cents
La distancia musical depende del cociente de frecuencias, no de su diferencia. Una octava son 12 semitonos o 1.200 cents, y el 20 % de error que YIN usa para hablar de error grueso son unos 316 cents, algo más de tres semitonos:
n_{\text{semitonos}} = 12\log_2\frac{f_2}{f_1}, \qquad \text{cents} = 1200\log_2\frac{f_2}{f_1}, \qquad 1200\log_2 1{,}2 \approx 316
Las notas del karaoke
Para cada nota candidata se mide la diferencia media entre la señal y su copia desplazada un periodo, dando la vuelta al final del trozo, y se elige la que menos diferencia da. Las 49 notas candidatas de UltraStar Deluxe son:
D_C(\tau) = \frac{1}{N}\sum_{n=0}^{N-1}\bigl|x\bigl((n+\tau)\bmod N\bigr) - x(n)\bigr|, \qquad f_i = 440\cdot 2^{(i-33)/12},\ i = 0,\dots,48