Inversión de alturas en archivo de audio

  • 1
#1 por Guillermo Vega Fischer el 03/05/2015
Quisiera sabér cómo invertir las alturas de un archivo de audio. No el típico efecto "invertir", sino lograr el espejo de las alturas: los agudos se vuelvan graves, los graves agudos, escalas ascendentes en descendentes, etc... uso Audacity, OX wave, Sounde Forge, etc...
Subir
--543762--
#2 por --543762-- el 03/05/2015
Qué te hace pensar que eso es posible?
Subir
mod
#3 por euridia el 03/05/2015
Vaya preguntita. ...

Sé que esto no va en el foro de mastering. ... pero no sé a que foro mandarlo.....

¿Ideas?

"MASTERING ON-LINE"- ibon@euridia.net

http://www.euridia.net/servicios/mastering/ibon-larruzea
http://www.sinadurak.tv/?portfolio=ibon-larruzea-euridia-soinuaren-magia

Subir
--543762--
#4 por --543762-- el 03/05/2015
Habrá que crear uno nuevo...Aunque Usted No Lo Crea...... :desdentado:
Subir
--447301--
#5 por --447301-- el 03/05/2015
#4 buen titulo para foro¡¡ :comer:
Subir
1
--447838--
#6 por --447838-- el 03/05/2015
#4 Aunque usted no lo crea... :desdentado: mediante técnicas de análisis espectral y resíntesis se podría hacer algo así. Analizar la evolución del espectro de un archivo de audio digital y generar otro con el mismo espectro invertido respecto a una frecuencia concreta que actúe como "eje de simetría".

#1 No creo que exista nada parecido en el mercado (aunque nunca se sabe), así que me temo que te toca autogestionarte el plugin... ¿Qué tal te manejas programando en C++?

9780240825151.jpg

http://www.focalpress.com/books/details/9780240825151/

#3 Plugins e instrumentos virtuales o bien Programación y entornos podrían ser un destino adecuado
Subir
1
#7 por vagar el 03/05/2015
Puede intentar invertir la transformada de Fourier de la señal, a ver qué sale. Con una herramienta como Matlab o GNU Octave no es muy complicado:

1) Se carga la señal (archivo WAV) en un vector.
2) Se calcula su DFT en otro vector.
3) Se da la vuelta (flip) a éste último.
4) Se calcula la DFT inversa del resultado.
5) Se graba en un fichero WAV.

El problema de hacerlo tal cual es que el espectro suele estar cargado en frecuencias bajas, así que la inversión saldrá muy desplazada a los agudos. Además se perderá la armonicidad de los sonidos afinados.

Se podría también definir una frecuencia eje de inversión, pero entonces habría que limitar en banda al doble de esa frecuencia para evitar aliasing.

Otra opción, que creo que se acerca más a lo que puede querer el creador del hilo, es partir de un MIDI en vez de un WAV y procesar los eventos de nota, de forma que, por ejemplo, P' = C + (C - P) (P es pitch, la altura de la nota, C sería la altura del centro de inversión).

Ars longa, vita brevis.
Mi colección de enlaces web en diigo.

Subir
--447838--
#8 por --447838-- el 03/05/2015
lgarrido escribió:
Además se perderá la armonicidad de los sonidos afinados.
Imagino que se perderá también toda la tímbrica.
lgarrido escribió:
Otra opción, que creo que se acerca más a lo que puede querer el creador del hilo, es partir de un MIDI en vez de un WAV
Eso sería bastante más lógico... y sencillo.
Subir
#9 por cablesyruiditos el 03/05/2015
en este articulo explican como trabajar con espectros en tiempo real Max-msp:

http://www.academia.edu/4999436/A_Tutorial_on_Spectral_Sound_Processing_Using_Max_MSP_and_Jitter_Spectral_Sound_Processing_with_Graphical_Interaction

supongo que se podria hacer (no me pregunteis como exacamente) trabajando la fft graficamente en un esquema como el del grafico que os adjunto y que he extraido de ese articulo.

No se si esto ayuda o nos deja peor ; )
Archivos adjuntos:
fft_transform.jpg
BBCode:
Subir
#10 por vagar el 03/05/2015
Bueno, efectivamente la inversión espectral a lo bruto no da resultados demasiado interesantes. Como era previsible hacen falta oídos de perro y realiza inversión temporal.

Las mejoras al algoritmo quedan como ejercicio para el lector.

Alguien escribió:

octave:30> w = wavread ("Music/hispasonic/escala/escala-mono.wav");
octave:31> f = fft(w);
octave:32> f2 = vertcat(flipud(f(1:size(f)(1)/2)),flipud(f(size(f)(1)/2+1:end)));
octave:33> w2 = ifft(f2);
octave:34> wavwrite (w2, 44100, 16, "Music/hispasonic/escala/escala-mono-inv.wav");
Archivos adjuntos:
sv-ss.jpg
BBCode:

Ars longa, vita brevis.
Mi colección de enlaces web en diigo.

Subir
--447838--
#11 por --447838-- el 03/05/2015
Yo no he conseguido oír nada pero cuando he reproducido el segundo los murciélagos de mi baticueva se han puesto a bailar como locos.
Subir
1
#12 por Mordus el 03/05/2015
Precisamente ese fue el título de mi tesis: "Murciélagos y elefantes: una aproximación al paradigma de la audiofrecuencia" (sic.)

-Que mi avatar se esté descojonando no significa que yo también lo haga...

-Tanto discrepar me va a matar.

Subir
--543762--
#13 por --543762-- el 03/05/2015
:comer:
Subir
#14 por vagar el 03/05/2015
Bah, venga, en vez de hacer el sudoku del dominical: inversión cutre limitada en banda alrededor de C5 (523.25 Hz).

Alguien escribió:

w = wavread ("Music/hispasonic/escala/escala-mono.wav");
f = fft(w);
l = size(w)(1);
sphz = l/44100;
fa = 523.25;
s = round(sphz * fa);
f2 = vertcat(flipud(f(1:s)),f(1:s),zeros(l-s*4),flipud(f(1:s)),f(1:s));
w2 = flipud(ifft(f2));
wavwrite (w2, 44100, 16, "Music/hispasonic/escala/escala-mono-inv.wav");
Archivos adjuntos:

Ars longa, vita brevis.
Mi colección de enlaces web en diigo.

Subir
1
mod
Respuesta rápida

Regístrate o para poder postear en este hilo