hordia's blogs

January 05, 2008

Audio Research Blog

December 17, 2007

Audio Research Blog

LADSPA versions of my recent simple distortions

After prototype different kind of simple distortions in NetworkEditor i managed to port all them to ladspa plugins. Despite the fact that the task was less difficult than i had expected at first, prototype with CLAM first worth a lot. Probably, if i had begun coding directly to ladspa source, reach the same status would be taken to me 10 or more times more. I think also was very interesting as “development process”, instead of modeling for example with matlab, you could easy modeling (among other things) in CLAM, and then, if you want/need make your final product by your own.

More, the other day i learned that is already possible to compile ladspa plugins directly from CLAM networks… very cool! Though i think this feature is not completely ready yet and i’m still have to dig in it, i don’t think that i have lost time porting manually because now i have a better knowledge and understanding about ladspa specification that for sure will be useful to work with this (for me “new”) feature, that probably needs some fixes.

About the ladspa plugins programming, i just downloaded the sdk from ladspa.org, read some of the ladspa.h file and some basic examples (the ones from sdk) and that was enough to handle the basis. Ah, i had to ask for some ladspa ID’s for my plugins here: ladspa at muse.demon.co.uk

On the other hand i’ve forwarded my distortion examples to musix distro folks and some of them indeed have tried it and made a couple of jack-rack presets and audio demos. More info about this here: DSP-es#Presets, ogg demos and jack-rack presets, and patchs review.

Next step (in my TODO list): produce ladspa binaries directly from CLAM networks.

I have uploaded these plugins here: disthordian ladspa plugins.

by hordia at December 17, 2007 04:41 AM

December 09, 2007

Audio Research Blog

New CLAM plugin: (’very’ for now) simple guitar distortion

A week or more ago, Daniel Vidal Chornet (collaborator of Musix) asked me if i can develop guitar distortion effects, because he couldn’t find something decent that suits his needs, i said “sadly i have no idea about distortions effects and anyway i have no time right now to do that”, but then i remembered how useful could be the clam framework and i tried to do a little spike about. Results were better than i had expected at first (is not a super cool distortion, but at least sound like one).

Basically i merged and tweaked a couple of simple/base algorithms found in the web for distortion and compression and in less than 30 minutes i had something working and sounds like a guitar distortion (”clean” ones seems to sound better easily). I was amazed how fast and easy (develop and test in clam/networkeditor, once you get the basis) was. I think right now is far to be a good distortion, but as learning process and first demo seems very good.

Here some sound examples:

Original: Download audio file (dvlc-guitar.mp3)

(dvlc-guitar.ogg)

With distortion: Download audio file (guitardist-ex1.mp3)

(guitardist-ex1.ogg)

Test network looks like:

Distortion NE network

 

The source code is here (as NetworkEditor plugin): GuitarDistortion.tar.gz

Some optional tweaks could include add a three band filter but i’m still not sure if it’s better to put it at first or at the end.

Special thanks for testing and audio samples to Daniel Vidal Chornet. I should take from my closet my fender stratocaster and do my own samples :-D . OTOH, we already arrange to do a remote gig with this.

Another useful NetworkEditor processings plugins i had made during this “work”:

  • AutomaticGainControl: Adaptative automatic gain control. Given an output reference and step response adjusts the output volume to keep it constant (AutomaticGainControl.tar.gz)
  • AudioSwitch: Switchs between a configurable amount of inputs (like a multiplexer) (AudioSwitch.tar.gz)

 
Related: LADSPA versions of my recent simple distortions
Update: Distortion rack prototype

by hordia at December 09, 2007 06:47 PM

December 05, 2007

hordia's blog

Tweaking kate to work more comfortably with clam source

Normally i use kate editor to develop in any language, i tried many ones before like vim, jeditor or indeed some IDE's like kdevelop or eclipse but i'm still choosing kate for all (altough vim is always my first option). It's simple, has syntax highlight for nearly all languages, window split, embedded console, easy shortcuts for indent, comment and so and lot of more cool features, some plugins, etc.

Some months ago i started to develop under CLAM framework (because this year gsoc) which is C++ code, but i realized the problem that the source has as convention .hxx and .cxx files instead of the more classic .h and .cpp, then the kate editor fails to switch between header and definition with the shortcut (F12) i lacked very much this kind of feature for weeks, there was no configuration available, nor nothing in google searchs. But yesterday i asked in #kate freenode channel and then in the kwrite-devel mailing list (kate, katePart, kwrite related) and they told me that this kind of feature was hardcoded in one plugin, so i had the idea to download the sources and recompile it with my own fix.

i downloaded kdeaddons-3.5.6 source (same version than my current kde) and configure it well, but when i tried to compile the openheader plugin i was getting errors, then i had to run qt3 moc bin manually, because define 'export QTDIR=/usr/share/qt3' was not enough… 'make' command was still calling '/usr/share/qt4/bin/moc' not matter what you do.

These are the complete steps i had performed to have it working:
/usr/share/qt3/bin/moc ./plugin_kateopenheader.h -o plugin_kateopenheader.moc
make
sudo libtool --mode=install install -c kateopenheaderplugin.la /usr/lib/kde3/kateopenheaderplugin.la
kbuildsycoca

And first, of course the tweak in the sources, just an add in plugin_kateopenheader.h:91
QStringList headers( QStringList() << "h" << "H" << "hh" << "hpp" << "hxx" );
instead of
QStringList headers( QStringList() << "h" << "H" << "hh" << "hpp" );

that was all, very easy, don't? now i'm coding with clam a lot more comfortable :-D

i hope they include it in the official release (they already told me that they will)

for this kind of things is that i like so much the open-source! was so simple and now so useful!

Tech Tags:

by Hernán Ordiales at December 05, 2007 11:50 AM

November 13, 2007

hordia's blog

HP48 emulada en linux

La HP48, aunque ya vieja y discontinuada, es la calculadora[1] más cómoda y práctica que tuve oportunidad de usar hasta el momento. De su uso, me quedó la preferencia por la notación RPN.

Es por ello que en consola mi elección en calculadoras desde hace un tiempo es orpie. En ámbientes gráficos, todavía no había encontrado algo que se ganara mi preferencia.

Debido a que últimamente estoy usando la calculadora más seguido de nuevo, se me ocurrió buscar un emulador de la misma para gnu/linux[2]. Al parecer, no hay nada sobre esto en los repositorios oficiales de ubuntu, pero por suerte encontré esta guía sencilla y con todo lo necesario para tenerla funcionando en minutos: x48

Asi que ya tengo algo lindo y cómodo (y nostálgico?) para usar en ámbientes gráficos... :-D

[1] Dejando afuera las pc's y software de cálculo.
[2] Hace unos años la usaba bastante emulada en pc, pero eran tiempos de otro sistema operativo. Entre otras ventajas, uno dispone de mucha más memoria para instalar programas.

by Hernán Ordiales at November 13, 2007 03:11 AM

November 02, 2007

Audio Research Blog

TAPESTREA: Modelando la escena sonora a partir de ejemplos o muestras

Hoy vi el video demostración de TAPESTREA: Techniques And Paradigms for Expressive Synthesis, Transformation, and Rendering of Environmental Audio (también conocido como taps). Intenta ser un entorno para el diseño de sonido, pero desde un enfoque totalmente nuevo (lo mejor es ver el video para entender mejor de que se trata).

Me llamó la antención (además de la división del sonido entre sus componentes sinusoidales, transitorios y residuo), la interfaz gráfica intuitiva y sencilla y la manipulacíón de sonidos en el espectrograma.


TAPESTREA: Sound Scene Modeling By Example - For more funny movies, click here

 
El video completo esta disponible aca: http://soundlab.cs.princeton.edu/listen/taps/tapestrea.mov
 

Según su web, la idea es ser un framework unificado para analizar de forma interactiva sonidos complejos, transformarlos y sintetizarlos:

  • Identificar puntos de interés en el sonido y extraerlos para crear “templates” (una muestra/un sample) reusables
  • Transformar componentes de sonido de forma independiente a su entorno y otros eventos sonoros
  • Resintetizar continuamente las texturas de fondo de una forma perceptualmente convincente
  • Posicionamiento de eventos “templatizados” sobre la escena de fondo por medio de una novedosa interfaz de usuario o scripts escritos en Chuck (un lenguaje de programación orientado al audio)
  • Recuperación de componentes de sonidos basandose en la similaridad con otros.

TAPESTREA otorga una nueva forma de transformar dinámicamente una escena de sonido, permite generar puestas de cualquier duración, facilita la composición y el diseño de sonido combinando elementos de diferentes grabaciones de forma muy sencilla y ofreciendo miles de variantes para su manipulación (solo pensar en las posiblidades que otorga el solo hecho de poder manejar por separado sinusoides, transitorio y residuo).

Sin duda, una herramienta de trabajo interesante tanto para “diseñadores de sonido” como invesitigadores del audio, compositores y cualquier persona interesada en experimentar con el sonido.

Por si todo esto fuera poco, es Software Libre y multiplataforma. El código fuente y los binarios se consiguen aquí.

Más info:

by hordia at November 02, 2007 12:56 AM

October 27, 2007

Audio Research Blog

My presentation at the “VI Jornadas de Acústica, Electroacústica y áreas vinculadas (CADAE)”

Yesterday I had the opportunity to give a talk about my recent work in the google summer of code at the VI Jornadas de Acústica, Electroacústica y áreas vinculadas (CADAE). The given time was short, so was a little hard to explain all in only 20 minutes, but seems that all went well (at least seemed like the people). Here my presentation (in Spanish):

 

Transformaciones espectrales en tiempo real para CLAM

 

Download: Transformaciones espectrales en tiempo real para CLAM.pdf

by hordia at October 27, 2007 08:47 PM

September 01, 2007

Audio Research Blog

Conferencia ‘Tackling the Acoustic Front-end for Distant-Talking Automatic Speech’ en BsAs

Me llega vía mail/boletín de IEEE Argentina que el próximo lunes 3 de septiembre se va a dar la conferencia ‘Tackling the Acoustic Front-end for Distant-Talking Automatic Speech‘ dictada por el Prof. Dr.-Ing. Walter Kellerman, conferencista distinguido de la IEEE Signal Processing Society. Esto será en la Sede de IEEE / CICOMRA, con entrada libre y gratuita.

 

Temario

With the ever-growing interest in ‘natural’ hands-free acoustic human/machine interfaces, the need for according distant-talking automatic speech recognition (ASR) systems increases. Considering interactive TV as a challenging exemplary application scenario, we investigate the structural problems presented by noisy and reverberant multi-source environments with unpredictable interference and acoustic echoes of loudspeaker signals, and discuss current acoustic signal processing techniques to enhance the input to the actual ASR system. Special attention is paid to reverberation, which affects speech recognizers much more than human listeners, and a recently published method incorporating a reverberation model on the feature level of ASR is discussed.

 

Sobre el orador (para más datos ver este link)

Walter Kellermann is Professor for communications at the Chair of Multimedia Communications and Signal Processing of the University of
Erlangen-Nuremberg, Germany. His current research interests include speech signal processing, array signal processing, adaptive filtering, and its applications to acoustic human/machine interfaces. He received the Dipl.-Ing. (univ.) degree in Electrical Engineering from the University of Erlangen-Nuremberg in 1983, and the Dr.-Ing. degree (’with distinction’) from the Technical University Darmstadt, Germany, in 1988. From 1989 to 1990, he was a Postdoctoral Member of Technical Staff at AT&T Bell Laboratories, Murray Hill, NJ. In 1990, he joined Philips Kommunikations Industrie, Nuremberg, Germany. From 1993 to 1999 he was a professor at the Fachhochschule Regensburg before he joined the University Erlangen-Nuremberg as a professor and head of the audio research laboratory in 1999 (for more see http://www.LNT.de/audio). In 1999 he co-founded the consulting firm DSP Solutions. Dr. Kellermann authored or co-authored eight book chapters and more than 100 refereed papers in journals and conference proceedings. He served as a guest editor to various journals, as an associate editor and guest editor to IEEE Transactions on Speech and Audio Processing from 2000 to 2004, and presently serves as associate editor to the EURASIP Journals on Signal Processing and on Advances in Signal Processing. He was the general chair of the 5th International Workshop on Microphone Arrays in 2003 and the IEEE Workshop on Applications of Signal Processing to Audio and Acoustics in 2005. For 2007 and 2008 he is a Distinguished Lecturer of the IEEE Signal Processing Society.

 

Datos de la conferencia

Fecha y hora: Lunes 3 de setiembre a las 19:00
Lugar: Auditorio IEEE/CICOMRA, Av. Córdoba 744 Piso 1 B, Buenos Aires
Inscripción: No es arancelada, pero se solicita inscripción previa vía web completando el formulario disponible aca. Alternativamente por e-mail a sec.argentina@ieee.org citando ‘Conferencia SPS-01‘ o por teléfono a IEEE / CICOMRA (011) 4325 8839.

No hay charlas ni mucho movimiento sobre este tipo de cosas por aca, asi que voy a tratar de ir… y después, de hacerme tiempo para un review de la misma.

by hordia at September 01, 2007 03:25 AM

August 27, 2007

Audio Research Blog

Audio Player Wordpress plugin

De casualidad (buscando otra cosa) me topé con esto: Audio Player Wordpress plugin. Parece bastante bien logrado y lo instalé en este blog… (además en este último tiempo venia averiguando sobre estos temas, ver: “Streaming audio from your website (mp3 and ogg!)” y “Many files to stream with cortado in the same page“). Al estar basado en flash, solo soporta mp3, pero es bastante configurable y tiene cosas copadas como la posibilidad de agregar audios por defecto al inicio o al final de cada track (útil por ejemplo para anuncios comerciales en podcasts o instrucciones de uso), distintas alternativas de mostrado de los audios en el feed, configuración de colores y otras cosas más.

También se puede usar en sitios no basados en wordpress (ver tutorial) y por ejemplo es el que usa digg.com para los podcasts (ver).

Ejemplo:

Download audio file (elvis-harmonized.mp3)

by hordia at August 27, 2007 12:24 AM

August 26, 2007

Audio Research Blog

Fundamental (in Hz) to a MIDI note

Working to have audio-to-midi in NetworkEditor (CLAM) I needed to convert a fundamental frequency value to a MIDI note one.

I found some source code related with this in Voice2MIDI app, but was not explained at all, so looking for the reason of that formula I arrived at this:

Knowing about equal-tempered scale (check this) and 2^{\frac{n}{12}} relation between frequencies plus the fact that C4 or “middle c” has a MIDI value of 60, it’s easy to conclude that then A4 (which its frequency value is 440Hz, a standard for tunning and is 9 semi-tones more) has a MIDI value of 69.

 

Then, starting with:
fundfrec = 440Hz * 2^{(\frac{1}{12})^n}

 

It’s easy to arrive at this:
fund_{midinote} = 69+log_{2^{(\frac{1}{12})}}(\frac{fundfrec}{440Hz})

 

and then, also taking in account this mathematical relation::
log_{2^{\frac{1}{12}}}(a) = log_{e}(a)*17.31234

 

the final formula looks like:
fund_{midinote} = 69+log_{e}(\frac{fundfrec}{440Hz})*17.31234

 

and a final c++ code like:

fund_midinote = round( 69. + log(fundfrec/440.)*17.31234 );

by hordia at August 26, 2007 11:54 PM

August 08, 2007

Audio Research Blog

SMS interference mystery solved

Andrés Kasulin, a friend of mine from the University gave me some light about the issue of SMS interference (check “Catching (phone) SMS pulse train with CLAM…“)

He says in a comment from that post:

“I’ve found nice data in wikipedia[1].

It seems to be radiofrequency interference produced by the the phone, and filtered by the mic-cable-probes-osciloscope system. I think there is only a square pulse because the carrier frequency is much higher than filter cutoff frequency (maybe near 10^5 times).”

[1] http://en.wikipedia.org/wiki/GSM#Radio_interface

 
 

I’d add from that article:

“A nearby GSM handset is usually the source of the “dit dit dit, dit dit dit, dit dit dit” signal that can be heard from time to time on home stereo systems, televisions, computers, and personal music devices. When these audio devices are in the near field of the GSM handset, the radio signal is strong enough that the solid state amplifiers in the audio chain function as a detector. The clicking noise itself represents the power bursts that carry the TDMA signal. These signals have been known to interfere with other electronic devices, such as car stereos and portable audio players. This is a form of RFI, and could be mitigated or eliminated by use of additional shielding and/or bypass capacitors in these audio devices. However, the increased cost of doing so is difficult for a designer to justify.”

Very thanks Andrés!

by hordia at August 08, 2007 03:15 AM