Inversión de alturas en archivo de audio
OFERTAS Ver todas
-
-29%Behringer X-Touch Compact
-
-20%Technics SL-1200M7 Lamborghini
-
-7%Modal Argon8 (B-Stock)
mod
#4 Aunque usted no lo crea... 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++?
http://www.focalpress.com/books/details/9780240825151/
#3 Plugins e instrumentos virtuales o bien Programación y entornos podrían ser un destino adecuado
#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++?
http://www.focalpress.com/books/details/9780240825151/
#3 Plugins e instrumentos virtuales o bien Programación y entornos podrían ser un destino adecuado
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).
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).
lgarrido escribió:Imagino que se perderá también toda la tímbrica.Además se perderá la armonicidad de los sonidos afinados.
lgarrido escribió:Eso sería bastante más lógico... y sencillo.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
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 ; )
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 ; )
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.
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");
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");
Hilos similares
Nuevo post
Regístrate o identifícate para poder postear en este hilo