Algoritmos a palo seco

Nox
#31 por Nox el 04/06/2012
Por cierto, otra cosa que me está rondando la cabeza últimamente, son los reverbs. Alguna vez he intentado hacer algo "a lo bruto", directamente con delays, pero la cosa no ha salido muy bien, la verdad, y no tengo la más mínima idea de cómo se hacen.

¿Alguna idea, experiencia, texto para leer?
Subir
OFERTAS Ver todas
  • -7%
    Modal Argon8 (B-Stock)
    559 €
    Ver oferta
  • -29%
    Behringer X-Touch Compact
    263 €
    Ver oferta
  • -50%
    NI Komplete 15 Collector's Edition
    885 €
    Ver oferta
brote
#32 por brote el 06/06/2012
Hola Nox,

ciertamente el filtro más facil de implementar por medias moviles es el pasabajos pero creo que el HPF es lo mismo pero por diferencias. Y si convinas un hpf y con un lpf ya tienes el bpf, es cuestión de elegir bien el indice (fc en estos casos). El tema de las reverbs es mas peliagudo, pero como bien dices se trata de añadir retardos por indice, pero lo que se suele hacer es tirar de convolución o de filtros fir, creo que una expresión como esta te puede valer ===> y1[n] = x1[n] + r x1[n − P]
Donde P es el retardo en muestras, 1 segundo serian 44100 en un caso estandar, y r viene ha ser la amplitud de la repetición, creo recordar. Ya miraré me suena de haber hecho aguna prueba alguna vez. Tambien puedes provar con esta expresión que es la base de los FIR filters y de la convolución:

y[n] = ∑bk x[n − k]

o mirate este enlace, se entiende bastante bien:

http://en.wikipedia.org/wiki/Finite_impulse_response

Salut!
Subir
Nox
#33 por Nox el 07/06/2012
#32 Gracias brote, leo en la wiki que lo de las medias móviles es la forma más simplita de hacer un filtro, es interesante, incluso los mínimos cuadrados tienen una aplicación a todo esto. En cualquier caso parece que Fourier siempre se lleva la palma, está en todos lados el tipo.

Lo que no veo muy claro es qué tienen que ver los filtros FIR con los reverbs, pero bueno, por lo que estoy viendo los reverbs son complicados de cojones, así que mejor tomárselo con calma.

Saludos.
Subir
brote
#34 por brote el 10/06/2012
Hola Nox,

Fourier y Lagrange fueron dos grandes tipos que creo que no perderemos de vista en mucho tiempo...jajaja!

A ver si consigo explicarme, sin ponerme muy teorico...como puedes ver en la wiki los FIR tienen una estructura bastante clara, son lineales y se les aplica ciertos pesos (bo, b1....) a cada muestra que procesamos. Estos pesos pueden ser como tu quieras definir la forma del filtro, como si diseñas b0=1, de b1 hasta b160 es igual a 0 y b161=1 (lo que seria un delay). En el caso de las medias moviles, bo=b1=b2... y todas las muestras del filtro tienen el mismo coeficiente, esto les convierte en un pequeño conjunto de los FIR . Asi que, puedes diseñar tu filtro como quieras, cogiendo las muestras que quieras, o variando sus coeficientes el efecto del filtro variara. Si mantiene esta forma siempre sera un FIR.

La convolucion de una señal continua con un filtro, la definimos como una integral de las dos señales, si te miras: http://en.wikipedia.org/wiki/Convolution, puedes ver el efecto de un filtro (pulso) sobre la señal (otro pulso), el pulso azul corresponde al filtro, o sea la forma que definimos con los coeficientes b en un FIR ya estan definidos por su amplitud...

En señales discretas, la convolución podemos simplificarla en un sumatorio de las muestras de la señal por las del filtro. Que es exactamente lo mismo que hacemos en un FIR pero en esta caso la IR modela la forma del filtro (ya indica que muestras procesa y nos da los coeficientes b de cada una). Por lo tanto una convolucion es un FIR, convolucionar es filtar una señal, la diferencia es que el FIR lo puedes diseñar con la forma que quieras y que en la convolución tu filtro ya tiene forma, dada por el valor en amplitud de las muestras.

Te añado un par de dibujitos de filtros que podriamos generar con la equación de los FIR:

Salut!
Archivos adjuntos ( para descargar)
Captura de pantalla 2012-06-10 a las 15.45.46.png
Captura de pantalla 2012-06-10 a las 15.46.05.png
Subir
brote
#35 por brote el 18/06/2012
Nox, y para el que le pueda interesar, os dejo este enlace, del CCMRA, donde se tocan casi todos los temas de señales y seguro que hay cosas de convolucion y filtros. Esta todo en expresiones matemáticas pero si lo entiendes es un gran banco de sabiduria.

https://ccrma.stanford.edu/~jos/dft/

Saludos!
Subir
Nox
#36 por Nox el 18/06/2012
Buen link brote, le echo un vistazo cuando llegue a casa.
Subir
simper66
#37 por simper66 el 26/09/2012
wea!!

A ver si me hechais una manita. Soy nuevo en esto del dsp...pero nuevo nuevo nuevo

Estaba haciendo un programa en android y por una causa u otra he tenido que meter mano al sistema de audio a bajo nivel por lo que tengo delante los unos y los ceros y la infraestructura montada para empezar a manipularlos.

Lo que no se es como manipularlos!!

Creia que iba a ser tan fácil como poner en el google "Codigo fuente efectos de audio" pero cual fue mi sorpresa que nada de nada.

¿Sabeis por donde empezar? digamos siplemente subir y bajar el volumen, quizas sumar señales....nada de limitación multibanda por ahora, jeje
Subir
Dan_Vates
#38 por Dan_Vates el 26/09/2012
En audio Digital, generalmente los valores de amplitud(Volumen) van entre 0 y 1, donde, como es de suponer, 0 es nada y 1 es el máximo. En los 3 sistemas que conozco esto se hace multiplicando la señal por estos números, no sumándola. Ejemplo:

Sig*1 = señal con valor máximo.

Sig*0.5 = señal con la mitad de la intensidad

Sig*0 = señal con amplitud 0

No sé que mas decirte por lo vago de la descripción, pero podrías abrir un tema nuevo y vamos solucionando tus dudas de a una.
Ojalá te sirva
Subir
Nox
#39 por Nox el 26/09/2012
#37

Yo es que no termino de entender la pregunta :-k ... ¿quieres saber cómo manipularlos en el lenguaje que estés usando, o algoritmos de efectos para pasarlos al lenguaje que estés usando...? Y por cierto, ¿qué lenguaje estás usando, sabes usar ese lenguaje? Es que como dices que tienes una "infraestructura" montada, supongo que será alguna librería, SDK o similar de algún lenguaje que admita android ¿no? :???:

Sería más fácil si especificaras un poco más :wink:

Saludos.
Subir
simper66
#40 por simper66 el 27/09/2012
#39 si perdona

serían algóritmos de sonido en cualquier lenguaje, o pseudocodigo o incluso explicado de palabara si hace falta...es decir para hacer ésto sumas esto y lo otro y desplazas tantos bits o lo que sea

con infraestrucura me refiero a que mis problemas no son a nivel de lenguaje, o de como meter mano a los frames...todo eso ya lo tengo montado...y no, no hay librerias, todo es a manubrio jeje

android es java pero todo lo que tiene que ver con ésto lo he metido en código nativo c/c++ y lo he linkado al flujo java

por ahora lo único que he sido capaz de hacer es convertir a mp3...que no veais que movida...
Subir
simper66
#41 por simper66 el 27/09/2012
Dan_Vates escribió:
Sig*1 = señal con valor máximo.

Sig*0.5 = señal con la mitad de la intensidad

Sig*0 = señal con amplitud 0


esto no sería solo para bajar volumen?

para subir como sería? multiplicar entre 1 y 2?
Subir
marcianus
#42 por marcianus el 27/09/2012
Nox escribió:
Por cierto, lo de la convolución es algo que me ha intrigado siempre. A lo mejor es que no termino de entender el concepto, pero no le veo la utilidad práctica



Es dificil explicarlo, ya que intuitivamente no es nada facil entender una convolucion. Y no te digo ya nada de un (transformador de Hilbert).
Lo importante es que quien lo explique sea alguin didactico (aqui el rey es este
https://ccrma.stanford.edu/~jos/, y sus libros de compra y lectura obligada, eso si, se requiere base matematica)

Pero aqui un breve pincelada (con errores pero que puede permitir entender el asunto):

Existe una relacion matematica entre un espectro temporal (la muestra de audio en el tiempo) y un espectro frecuencial (la informacion frecuencial que corresponde a esa muestra temporal).

Se pasa de una a otra mediante el uso de la Transformada de Fourier Directa (obtienes el espectro frecuencial de una señal de audio a partir de la misma) o Transformada de Fourier Inversa (obtienes una señal de audio a partir de su espectro frecuencial).

Es decir, existe una relacion matematica entre una señal en el tiempo y la misma señal en la frecuencia (si la señal tiene n muestras temporales, via Fourier obtendremos su "vista frecuencial" con n muestras frecuenciales, esto no deja de ser simplemente a nivel matematico un cambio del sistema de coordenadas de referencia en un espacio vectorial de N dimensiones) .

Aqui viene la parte chunga respecto a lo que es una convolucion:

Una operacion de multiplicacion en un espacio de referencia temporal se convierte en una operacion de convolucion en un espacio de referencia frecuencial.
Y a la inversa, una convolucion en un espacio de referencia temporal se convierte en una multiplicacion en un espacio de referencia frecuencial.

Segun la complejidad de la computacion a realizar, se prefiere utilizar un camino o el otro (multiplicar espectros frecuenciales para aplicar filtros o aplicar convolucion a señales temporales para reverbs, etc, etc).

Otro ejemplo, una modulacion en frecuencia (producto de señales temporales) puede resolverse como convolucion en el dominio espectral (expansion en funciones de Bessel y demas ladrillos).
Subir
Roberto Aramburu
#43 por Roberto Aramburu el 28/09/2012
#42
casi entendí todo!
pero lo bueno es que entendi algo, eso es buena señal :)
Subir
brote
#44 por brote el 27/01/2013
Hola,

cuanto tiempo, sin pasar por aqui. Veo que el hilo esta un poco parado.
Dejo un patch sencillo de un espectrograma hecho con FFTs en PD,
por si alguien quiere trastear o provar en dominio frecuencial.

Marcianus: buena explicación, no me habia planteado que la relación entre temporal y frecuencial
es un simple cambio de base. Es buena esa!!!

Saludos!!
Archivos adjuntos ( para descargar)
Captura de pantalla 2013-01-27 a las 16.21.57.png
Captura de pantalla 2013-01-27 a las 16.20.55.png
Subir
marcianus
#45 por marcianus el 27/01/2013
#44
brote escribió:
Marcianus: buena explicación, no me habia planteado que la relación entre temporal y frecuencial
es un simple cambio de base. Es buena esa!!!



A mi me lo explico el señor Julius Smith con sus libros, que repito son de compra obligada
Subir
Hilos similares
Nuevo post

Regístrate o para poder postear en este hilo