feed icon Ambos idiomas / Both languages
(es|en)

Interferencia de los SMS
No se si alguna vez escucharon los ruidos tipo "tucu tuc tucu tuc" que hacen los celulares cuando están cerca de micrófonos o parlantes... Bueno, el otro día estaba probando un algoritmo que estoy haciendo para el google summer of code (que requiere procesar voz en tiempo real, por lo que estaba con un headset con microfóno abierto) cuando me llegó un SMS al móvil que estaba a un par de metros mío y pude ver trenes de pulsos casi perfectos en el osciloscopio que monitoreaba la entrada de audio!!!

Se puede ver una captura de esto aca: "Catching (phone) SMS pulse train with CLAM..."

Era un tema que ya lo venia charlando con varios amigos, pero nadie (ni yo) me daba una explicación completa (y satisfactoria) del fenómeno.

Y dado que este hecho me resultó sumamente curioso y que ya un par de veces habia efectuado búsquedas en google sobre esto sin demasiado éxito, re-pregunté a varios e incluso postié en listas de mails y en mi blog sobre audio tratando de resolver lo que ya en este punto era casi un misterio para mí.

Un amigo de la facu, Andrés Kasulin, le echo un poco de luz al asunto con unos comentarios que me hizo e incluso encontró referencias sobre esto en un artículo de wikipedia.

Me dijo
que parece ser interferencia de radiofrecuencia producida por el teléfono, filtrada por el sistema formado por el micrófono, cable, los conectores y el osciloscopio y que solo se ve un pulso cuadrado porque la frecuencia de la portadora es mucho más alta que la de corte del filtro (tal vez alrededor de 10^5 veces más).

Del artículo de wikipedia rescataría que comenta que esto normalmente ocurre cuando equipos de audio, televisores o computadoras están cerca del campo del aparato GSM, y la señal de radiofrecuencia es lo suficientemente fuerte como para que los amplificadores de estado sólido de los equipos de audio funcionen como detectores. Los ruidos en si provienen de la portadora de la señal TDMA y que esta forma de RFI (interferencia electromagnética) puede ser combatida o eliminada usando protecciones adicionales o capacitores de bypass, aunque el costo elevado de esto hace muy difícil que normalmente se justifique.

[ add comment ]   |  [ 0 trackbacks ]   |  permalink  |  related link
DSPrelated.com revamped
I knew this site because reunites a lot of dsp mailing-lists (mostly yahoo groups) and even comp.dsp usenet group. It's nice to see the new site design, fully web 2.0.

News include a (big) list of employers of DSP workers and a job opening section. Also a rating system that allows you to easily rate books and resources simply by clicking on the stars.

Seems social-networking and web 2.0 is reaching all fields (I'm also thinking in LinkedIn)

Check it out, I think it deserves a look.

[ add comment ]   |  [ 0 trackbacks ]   |  permalink
Programación, dsp, audio y música
Este lunes empiezo con el google summer of code, un programa destinado a sustentar el Software Libre y el Código Abierto promocionado por Google. Mi proyecto esta relacionado con transformaciones espectrales en tiempo real para el framework CLAM, para más información sobre esto consultar esta página: GSoC2007: "Real-time spectral transformations".

De paso aviso que de ahora en más todos los artículos que escriba sobre cosas relacionadas con audio y música van a estar en esta dirección: http://audiores.uint8.com.ar/blog y en este blog va a aparecer poco sobre estos temas (algún que otro post duplicado tomado del blog mencionado o lo que cuelgue en la sección "proyectos")

Otras cosas relacionadas con el audio que recomiendo/colaboro:

CLAM: completo framework multiplataforma Software Libre para trabajar con el audio en general y música. Entre otras cosas permite el prototipado rápido de aplicaciones mediante herramientas visuales de control de flujo.

Musix GNU+Linux: distribución para hacer música y trabajar con audio y multimedia en general orientada al usuario.

Grupo Buena Señal: grupo / lista de correo en español que trata temas sobre programación y procesamiento de señales aplicados al audio y la música.

[ add comment ]   |  [ 0 trackbacks ]   |  permalink
Reemplazando matlab con python
Hace bastante tiempo que bastantes personas con distintos perfiles me vienen hablando bien de python, de su facilidad de uso y potencia. También habia visto en internet que habia muchas bibliotecas "científicas" y para practicamente cualquier cosa, hecho que me agradaba.

Hace bastante tiempo también que queria encontrar una solución definitiva para poder usar libremente y sin limitaciones mis scripts en Matlab. Si, esta Octave, que es Software Libre y esta bastante bien y es bastante compatible, pero le faltan algunas cosas y pensar en integrarlo con aplicaciones gráficas (u otras cosas) más alla de algunos bindings, no parecia muy sencillo. Tampoco parece que existan al día de hoy muchas bibliotecas para cosas más avanzadas.

Siempre me gusto Matlab porque podía hacer cosas de una forma relativamente sencilla, pero también me encontraba con el problema de que después dependia de su intérprete (privativo) y su infraestructura para ejecutar ese código. Cuando supe de Octave (hace ya unos años) pensé que seria bueno mantener mis scripts compatibles con este último para poder garantizar su distribución y uso (por ejemplo) y es lo que hice hasta hoy (o ayer, je).

Hace unos días, Juan Vuletich me dijo: "¿Probaste Smalltalk? Tiene todas las ventajas de matlab, todas las de C, y algunas extras..." y bueno... a raíz de eso pensé si en python no podría hacer algo similar... y dado que estaba con ganas desde antes de ponerme a aprender, busqué y me di cuenta que la misma idea ya se le habia ocurrido a mucha gente (por suerte para mi :-)) ya que encontré muchisimo material y la "migración" total solo me costó un par de horas. Asi que Smalltalk quedará para la próxima (no lo descarto!)

Con las bibliotecas SciPy y Matplotlib se resuelve lo básico.

Se obtiene una sintaxis muy similar a Matlab, lo que facilita enormemente el "traspaso", y una vez en python podemos interfacear nuestro código con miles de bibliotecas (la comunidad python es realmente grande, muchisimo más grande que la de Octave al menos) y manteniendo, ante todo, la simplicidad y claridad.



También use algunas referencias que me fueron de gran utilidad, como esta tabla comparativa y esta descripción que hacen en el sitio de ScyPy.org: NumPy for Matlab Users.

De esta forma se puede trabajar mediante scripts y funciones. Para hacerlo de forma interactiva, ingresando comandos y viendo su resultado en el acto (la forma "standard" de Matlab) tenemos IPython, un excelente shell interactivo para python con soporte para Matplotlib y computación paralela.

Ahora, lo único que queda a favor de Matlab es la cantidad impresionante de toolkits que tiene para un montón de temas específicos (signal processing, redes neuronales, lógica difusa, etc) y Simulink, pero dada la cantidad de bibliotecas que hay en python y la facilidad que existe para integrar código (además que en este último caso el usuario tiene un control total sobre la aplicación, pudiendo hilar tan fino como quiera) no creo que no sea nada que no se pueda lograr con un poco de trabajo (sobre todo para los usuarios que también son programadores).

Si miran el siguiente código que puse a manera de ejemplo, se daran cuenta que perfectamente puede pasar como "código Matlab". En este caso en particular es practicamente igual. Básicamente lo que hace es comparar con gráficos (que además de mostrados son guardados en png) tres DFT con distinto N, mostrando que a pesar de que alcanza para recuperar la señal con N=L, rellenando la señal original con ceros y aumentando el N de la DFT se logra una mejor visualización del espectro.

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
from pylab import *
 
L = 10
x = ones( L )
 
# Figura 1: N = L = 10
N = L
X = fft( x, N )
figure(1)
subplot(311)
title('N = L = 10')
horiz = arange(0,L,1)
stem( horiz, x )
subplot(312)
horiz = arange(0,N,1)
stem( horiz, abs(X) )
subplot(313)
stem( horiz, angle(X) )
savefig( 'figura1.png' )
 
 
# Figura 2: N = 50
N = 50
X = fft( x, N )
figure(2)
subplot(311)
title('N = 50')
horiz = arange(0,L,1)
stem( horiz, x )
subplot(312)
horiz = arange(0,N,1)
stem( horiz, abs(X) )
subplot(313)
stem( horiz, angle(X) )
savefig( 'figura2.png' )
 
 
# Figura 3: N = 100
N = 100
X = fft( x, N )
figure(3)
subplot(311)
title('N = 100')
horiz = arange(0,L,1)
stem( horiz, x )
subplot(312)
horiz = arange(0,N,1)
stem( horiz, abs(X) )
subplot(313)
stem( horiz, angle(X) )
savefig( 'figura3.png' )
 
 
show()


Conclusión: aprendí algo de python que era algo que tenia pendiente y resolví el problema que tenia de poder tener aplicaciones "standalone"[1] de calculo numérico relativamente avanzado y con una sintaxis clara y sencilla. Cuando se requiera tiempo real o velocidad de procesamiento no quedará otra que seguir recurriendo a c/c++ (en este punto es bueno mencionar que python puede llamar directamente a funciones c/c++) o assembly.
Para los que ya manejen otro lenguaje de scripting (tipo Perl, Lua o PHP) y hagan cosas con Matlab recomiendo que al menos lo prueben ya que no es para nada complicado y los beneficios son muchos.

[1] Bueno, para ser exactos precisamos el intérprete de python, pero es Software Libre y multiplataforma :-)

Update 1: En mi otro blog dedicado exclusivamente al audio escribí "Funciones para trabajar con wav's vectorialmente en python" (es decir "a la manera" de matlab) como una de las primeras consecuencias de este post. Por otra parte, en el grupo Buena Señal surgió un thread bastante interesante sobre esto (link) con más datos y opiniones sobre lo planteado en este post. Además, Juan Vuletich también escribió en su blog sobre este tema, donde propone a Smalltalk como reemplazo y compara el ejemplo aqui dado con su respectiva solución en squeak (una implementación libre de Smalltalk): "A taste of Squeak for Signal Processing folks"

Update 2: Me crucé con este interesante blog destinado precisamente al tema de este post: "Python as a better Matlab" y me enteré de esto: "Sage: Un sistema de álgebra computacional basado en Python".


[ 2 comments ] ( 1063 views )   |  [ 1 trackbacks ]   |  permalink  |  related link
Convolución circular rápida (aplicación en reverbs)


[ add comment ]   |  [ 0 trackbacks ]   |  permalink  |  related link

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | Next> Last>>