Inversión de alturas en archivo de audio

  • 1
Guillermo Vega Fischer
#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
OFERTASVer todas
  • -40%
    ¡Precio mínimo histórico! AKAI MPK 261
    298 €
    Ver oferta
  • -8%
    Behringer X Air XR18
    645 €
    Ver oferta
  • -26%
    AKAI MPC Key 61
    1.290 €
    Ver oferta
Jack
#2 por Jack el 03/05/2015
Qué te hace pensar que eso es posible?
Subir
Euridia 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?
Subir
Jack
#4 por Jack el 03/05/2015
Habrá que crear uno nuevo...Aunque Usted No Lo Crea...... :desdentado:
Subir
Kdjsound
#5 por Kdjsound el 03/05/2015
#4 buen titulo para foro¡¡ :comer:
Subir
1
avallesp
#6 por avallesp 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++?

2e5a0ac16105a30da69b4dbd5e1cd-4098298.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
vagar
#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).
Subir
avallesp
#8 por avallesp 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
cablesyruiditos
#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 ( para descargar)
fft_transform.jpg
Subir
vagar
#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 ( para descargar)
escala-mono.mp3
escala-mono-inv.mp3
sv-ss.jpg
Subir
avallesp
#11 por avallesp 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
Mordus
#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.)
Subir
Jack
#13 por Jack el 03/05/2015
:comer:
Subir
vagar
#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 ( para descargar)
escala-mono-inv.mp3
Subir
1
Euridia mod
#15 por Euridia el 03/05/2015
Hecho
Subir
1
Hilos similares
Nuevo post

Regístrate o para poder postear en este hilo