¿Corrección automática de una grabación ligeramente fuera de tono?

Supongamos que tengo una grabación de un concierto en vivo de una banda conocida. Podemos suponer que el concierto se tocó con instrumentos que estaban afinados, en afinación estándar. Esto fue en la década de 1990, por lo que el concierto se grabó en una cinta de casete analógica (o un DAT maestro) y luego se distribuyó a los coleccionistas a través del comercio de cintas. Esto significa que en el momento en que me llega una grabación, ha pasado por varias generaciones de copias de una casetera a otra (el doblaje en un reproductor de dos casetes normalmente estaba mal visto) y no hay garantía de que ambas casetes funcionaran a la misma velocidad. precisamente la misma velocidad al copiar -muchas veces ocurría todo lo contrario- y el error podía acumularse con cada generación. Esto significa que la cinta que tengo en las manos casi con certeza está fuera de tono en cierto grado. Ahora que he convertido la cinta a un archivo digital, quiero reparar el error.

Mi método típico para hacer esto es encontrar una canción que sepa tocar, elegir un instrumento afinado y tocar, ajustando la velocidad de reproducción hasta que la canción coincida con mi instrumento. Cuando encuentro la relación de cambio de velocidad correcta, la aplico al archivo de audio y guardo el resultado.

Esto es genial para arreglar una o dos grabaciones, no tanto cuando tengo cien de ellas.

Creo que es teóricamente posible que un algoritmo analice una grabación y diga si está fuera de tono, asumiendo una afinación estándar. Supongamos que mi grabación tiene una nitidez de 0,2 semitonos, el algoritmo debería poder sugerir una corrección de -1,2/-0,2/+0,8/+1,8 (obviamente, no puede adivinar qué dirección es correcta, ni qué tan lejos estamos del tono original ). Buscar en Google software de corrección de tono invariablemente me lleva a complementos de corrección automática para pistas de voz, que en realidad no es lo que estoy buscando.

Usando mi bastante fuerte C++ pero muy limitada comprensión de las matemáticas del procesamiento de señales digitales, traté de escribir un programa que analiza la salida de (que realiza sox song.wav -n stat -frequna DFT en el audio y emite los resultados), encontrando las frecuencias dominantes y verificando si hacer coincidir las frecuencias de las notas estándar o desviarse de ellas en una proporción fija, pero no pude extraer resultados significativos, tal vez porque la salida soxes bastante tosca. Entonces, aquí estoy preguntando si existe una herramienta que ya implemente dicho algoritmo, o algún consejo para hacerlo yo mismo (¿tendría que realizar el DFT usando alguna biblioteca de software o los datos son suficientes? etc.), o si esto es soxun problema mucho más complejo de lo que imagino, no solucionable usando heurística simple.

Si aún tuviera todas las pistas separadas, sin mezclar, habría una posibilidad, pero con una grabación completa, especialmente una que es multigeneracional, es una gran pregunta.
¿Por qué quieres? Diferentes artistas y diferentes géneros, etc. pueden elegir tonos originales ligeramente diferentes de todos modos. ¿Qué esperas ganar con todo esto? Sería mucho mejor ajustando la afinación de su instrumento o digitalizando y usando un software de cambio de tono como Audacity.

Respuestas (1)

Esta no es una respuesta completa. Es quizás un desafío de marco, pero también es solo un 'tema de conversación' que eventualmente puede conducir a una respuesta a una pregunta que aún no se ha expresado... tengan paciencia conmigo...

Incluso antes de que lleguemos a arreglar el tono en una copia digital, primero tendría que abordar varios problemas... la pérdida generacional no se limita en absoluto a la velocidad; la pérdida de azimut va a ser masiva, al igual que los 'cambios' de EQ multiplicados y divididos.

Así que… si todo lo que tienes es una copia de varias generaciones, lo primero que debes hacer es 'sacrificar' un buen reproductor de casetes por la causa.

Necesita una pletina de casete de la que pueda recortar la cara frontal, para que pueda alcanzar el tornillo de azimut mientras se reproduce. Luego compra un tweaker de baja masa para hacer esto. No puedes hacerlo con un destornillador de metal.
Modifique el acimut de oído mientras reproduce el casete.
Esta no es una solución perfecta, pero estamos mucho más allá de las soluciones perfectas en este punto.

El siguiente paso es sacar la caja de la platina de cassette, encontrar el motor y medir la resistencia a través del 'potenciómetro de velocidad' que tiene; estos siempre tienen un pequeño potenciómetro manual para establecer la velocidad, a menudo justo dentro de la carcasa del motor. . Son clips de metal flexible, por lo que el desmontaje real no requiere mucha tecnología.
Puede hacer esto con solo un multímetro, un destornillador y un soldador.

Mida la resistencia en toda la olla, luego a la velocidad actual. Adivine los valores que le darán una mejor distribución en algún lugar dentro de esto, puede amortiguar el bote y esa distribución [tenga paciencia conmigo nuevamente]
Si su bote es 200Ω y a la velocidad actual está en 70 Ω y llámelo un 20 Ω.
Puede meterse con el potenciómetro original para ver qué cambio produce un tono o dos... tenga esto en cuenta. Compre un nuevo potenciómetro de alta especificación de 20 Ω y resistencias de 60 Ω y 120 Ω [es posible que deba agregar en serie para lograr sus valores finales].

Reemplace su olla con la nueva, atractivamente conectada al panel posterior, luego ajústela con sus ganancias de maquillaje.
Ahora tiene uno o dos tonos con mucha confianza y mejor estabilidad.

Reproduzca la cinta, corrija el acimut y modifique la velocidad incluso antes de grabarla.

Si a estas alturas estás pensando que esto es total y absolutamente mental, tengo una platina de cassette 'Blue Peter' exactamente como esta hecha para un proyecto muy, muy similar.
¿Sabías que los buggers varían la velocidad durante aproximadamente la primera hora de reproducción constante también? Bueno, ahora lo haces :P Comienza cualquier sesión reproduciendo todos los lados de un casete de 60 minutos 'desperdiciado', hasta que se estabilice... luego limpia las cabezas [nuevamente].

Sacrifiqué un NAD y un Nakamichi para hacer esto. La Nakamichi era una máquina mejor, en general, pero la NAD resultó comportarse mejor después de las modificaciones.

oh… y apaga Dolby. Está tan lejos de ser de ayuda para la precisión que debería tomar todo el extremo superior que pueda obtener, de la fuente.

Por cierto, hay una pieza de software que le quitará mucho trabajo a esta tarea... cuesta $4000... sí. Celemony [de la fama de Melodyne] Cabrestante

Alternativamente... verifique que la compañía discográfica no solo lanzó oficialmente los piratas, muchos de ellos lo han hecho ahora; creen que también pueden hacerlo oficialmente y tomar su parte.
Sería bastante triste hacer todo este esfuerzo y luego descubrir que ya está en iTunes, en una calidad muy superior. [ref: la mayoría de los viejos bootlegs de Bowie de la década de 1970]

En realidad, me has dado una respuesta completa y bastante interesante. Es decir, si mi pregunta hubiera sido "¿cómo modifico una casetera para obtener los mejores resultados de reproducción posibles?". Modificar el acimut del cabezal de la cinta compensaría, en el mejor de los casos, un cabezal mal afinado en la generación más reciente (es decir, la platina utilizada para grabar una cinta en particular). Esto podría hacer que una cinta suene mejor, pero mis cintas provienen de muchas fuentes, por lo que sería necesario repetir el proceso para cada cinta; Realmente no quiero ir allí. Y ajustar la velocidad de mi mazo no es exactamente lo que quería hacer. Celemony Cabrestante es interesante, gracias.
Lo que estás intentando es realmente uno de esos trabajos en los que "no quieres empezar desde aquí". Fijar primero el azimut y la velocidad básica será, con mucho, la mejor solución. Izotope tiene un módulo de acimut pero el software no puede hacer milagros. El oído humano es la mejor herramienta de primera conjetura para cualquier tarea como esta. La última vez que hice esta tarea fue hace unos cuantos años. Tenía que hacer casi 40 casetes, así que siento su dolor. También tuve cintas maestras de 30 ¼" para hornear primero y luego rescatar de la misma manera. En general, tomó 6 meses.
Sin embargo, me las arreglé para conseguir algunos equipos de muy alta calidad de la BBC para hacerlo, un Revox y algunos preamplificadores magníficos. ;)