AudioResearchBlog

Covering all audio related stuff with special focus on programming and digital signal processing

Archive for the 'alsa' Category

La historia de Horgand (conversación con holborn)

Posted by hordia on 28th June 2008

Hace bastante tiempo que tenia archivada esta conversación sobre síntesis por FM y Horgand que quería publicar.

Qué es Horgand? un sintetizador por soft capaz de realizar sonidos de órgano y otros tipos de sonido como pianos eléctricos (Rhodes , Wurlitzer, DX E.Piano ), Jazz Guitar, Strings, Brass, Fretless Bass, Accordion etc. Esta basado en síntesis por FM, según su web:

“Is based on a FM audio synthesizer with twenty carriers (20) without modulators in a plain based algorithm.
each carrier frequency can be modified for construct complex sounds. The synthesizer incorporate also a LFO (Low frequency oscillator) for generate tremolo effects and detune effects applying LFO Pitch and Amplitude to the carrier frequency’s. Some synthesizer parameters can be edited for each sound including two ADSR, (Normal and Percussion), Fine Frequency, Attenuation, Rotary Amplitude, Transpose, etc. Four DSP effects are available for obtain more complex sounds, Rotary, Chorus, Delay and Reverberation. Sounds are stored in banks of 32 organ sounds and can be changed externally with MIDI program change (1-32).”

También incorpora reconocimiento de acordes para producir acompañamiento automático (bajo y bateria) y con líneas de bajo editables para cada ritmo.

Ejemplo de como suena: Horgand_demo.ogg

No conozco mucho de síntesis por FM y tenía curiosidad de como lograba el sonido y terminó saliendo una especie de entrevista improvisada, creo que puede ser interesante para quienes quieran adentrarse en este tipo de programación.

La conversación:

<hordia> despues me tenes que contar en que te basaste para conseguir el sonido de horgand digitalmente…
<holborn> pues en el DX7 …. tiene 32 algoritmos de colocacion de los operadores … pero si usas el plano (todos en linea)… todo lo que hagas suena a organo … a partir de ahi … pues añadirle los efectos … y claro en vez de 6 “osciladores” hay 10 … que en realidad son 20 … con lo cual pues es mas rico que un emulador de dx7 tipo hexter o en el dx7 mismo … en realidad .. para usar 20 osciladores no chupa CPU nada … otros porgramas usan 3 y ch
<holborn> claro que para ahorrar cpu .. tuve que limitar algunos parametros de edicion … pero bueno … yo lo que queria era que sonara … si nadie se pone a editar sonidos … ni dios vaya …
<hordia> que es el DX7? :P me suena a un teclado legendario pero no estoy seguro…

<holborn> el DX7 fue el primer sintetizador FM … es de yamaha .. y fue una revolucion porque era el primero que mas o menos imitaba bien sonidos reales … algunos mejor que otros …
<holborn> los vendieron todos y mas …
<holborn> yo realmente era un experto … en aquella epoca ni dios sabia nada de musica electronica … yo me hice un curso que daba un loco de la musica electronica .. y sabia programar sintes cosa que nadie sabia .. te estoy hablando de hace mil años …
<holborn> cuando salio el DX7 pues me tuve que empapar toda la info porque realmente es muy diferente a un sinte analogico tradicional … y bueno .. le pedi a un amigo que trabajaba en un distribuidor de yamaha .. que me consiguiera info de verdad … de hecho todavia la conservo ..por ahi ..
<hordia> :O
<holborn> yo llegue a trabajar programando sintes en un estudio de grabacion …. vaya no todos los dias pero me llamaban de vez en cuando
<holborn> haciendo presets … me refiero .. claro
<hordia> veo que horgand es el resultado de muchos años de experiencia…
<holborn> si … a ese nivel si … pero todo fue gracias a un ejemplo de la web de alsa .. .se llama fmminisynth.c … o lago asi … 100 lineas de codigo … entonces se me ocurrio … y empece ..

<holborn> luego buscando … encuentras mil ejemplos de codigo … en HArmony Central … no esta el codigo pero explican como funcionan los efectos … en cristiano .. sin mucha matematica … esta muy bien .. luego ya el implementarlo es cosa de uno … pero el mismo Paul Nasca dice por ahi (el del zyn) que se basa en esa explicaciones … y yo tambien claro :)
<holborn> ya te aseguro que su implementacion es mejor que la mia :)
<hordia> jeje
<holborn> ahora …la mia consume un tercio de cpu que la suya :)
<hordia> entonces hay que ver que parametros se toman para definir cual es mejor ;-)
<holborn> pues es un sinte … lo que suena … sus efectos suenan mejor …. pero … el usa 3 o 4 osciladores por sonido … yo uso 20 … con lo cual en algun lado hay que recortar …

El ejemplo que se menciona: miniFMsynth.c


, , , , , , , , , , ,

Posted in audio, algorithms, effects, free software, programming, instruments, GNU/Linux, GPL, c++, alsa, Castellano, sound | No Comments »

Otra forma de resolver el problema del orden de detección de placas en GNU/Linux

Posted by hordia on 26th May 2007

En este post, ya habia comentado algo sobre este tema, pero a pesar de que era lo que encontré como la “solución más prolija y oficial” a este problema, no siempre funciona del todo bien. Para colmo, desde que actualicé mi sistema a kubuntu feisty, alsa detecta también mi placa onboard por lo que el total de placas son 3! fantástico!

Tener muchas entradas y salidas independientes es útil para muchas cosas, pero es bastante molesto tener que estar ajustando la configuración del sistema cada vez (problema que surge cuando cambia el orden de detección)

La alternativa consiste (según se describe en este faq) en usar en el archivo de configuración “~/.asoundrc” de alsa los nombres asignados a los dispositivos en lugar de los números (debido al orden de detección) según:

cat /proc/asound/cards
 0 [CS46xx         ]: CS46xx - Sound Fusion CS46xx
                      Sound Fusion CS46xx at 0xfae00000/0xfad00000, irq 21
 1 [V8237          ]: VIA8237 - VIA 8237
                      VIA 8237 with AD1888 at 0x1000, irq 20
 2 [CA0106         ]: CA0106 - CA0106
                      Live! 7.1 24bit [SB0410] at 0xe800 irq 22

Por ejemplo, en lugar de pcm.ca0106 { type hw card 2 } hay que poner pcm.ca0106 { type hw card CA0106 }, en lugar de slave { pcm “hw:1″ … poner slave { pcm “hw:V8237″ … y asi…

El problema original de esto surge debido a que en todos los tutoriales para configurar “~/.asoundrc” se habla de referirse a los dispositivos por el número de orden que tienen (debido al orden de detección) y con este método uno logra abstraer ese archivo de estos números.

Ya que estoy les dejo este faq que explica como configurar el dispositivo por default para alsa.

 

Update:

Encontré una forma sencilla para solo configurar la placa de sonido por default:
 
#Listar las placas de sonido disponibles

asoundconf list

 
#Elegir la tarjeta de sonido que se desea usar como default y escribir el .asoundrc
asoundconf set-default-card NOMBRE-TARJETA


, , , ,

Posted in audio, GNU/Linux, hardware, alsa, Castellano | No Comments »

Repercusiones de la LAC2007 y un nuevo MusikMesse

Posted by hordia on 29th March 2007

Algunos ecos de lo que fue LAC2007:

Parece que todo el “streaming recolectado” va a estar disponible para bajar en esta dir: link.

Por otra parte, estos días (del 27 al 31 de marzo) se esta llevando a cabo en Frankfurt, Alemania, la exposición (creo más grande del mundo) de instrumentos, software y hardware musical y accesorios denominada Musikmesse.

Conclusión: LAC2007 en Berlin, Musikmesse en Frankfurt, parece que todo pasa por Alemania…


, , , , , , , , , , , , , , , , , , , , , , , , ,

Posted in audio, algorithms, effects, signal processing, free culture, music, free software, programming, instruments, GNU/Linux, GPL, open source, c++, hardware, codecs, libraries, formats, alsa, midi, lutheria, python, publications, Castellano, talks, events, conferences | No Comments »

Configurando el orden de detección de las placas de sonido en linux

Posted by hordia on 28th October 2006

Desde que tengo 2 plaquetas de sonido me pasa que mi Kubuntu me reconoce a veces primero una placa y otras veces la otra como primer dispositivo (/dev/dsp) y eso me traia problemas con la configuración general del sistema, programas, el archivo .asoundrc de alsa, etc. Como no reinicio mucho la máquina no me represantaba un problema mayor, porque cada vez que lo hacia me aseguraba de que queden en el orden deseado (reiniciando hasta que queden como yo queria :-( ).

Encontré que por medio de udev se pueden establecer reglas para forzar el orden de detección/asignación:

En el archivo “/etc/udev/rules.d/20-names.rules” puse estas dos reglas:

# sound card with PCI bus id 00:0d.0 to be called dsp (SB Live) 

BUS=="pci", ID=="00:0d.0", NAME="dsp"

# sound card with PCI bus id 00:0c.0 to be called dsp1 (SoundFusion) 

BUS=="pci", ID=="00:0c.0", NAME="dsp1"

el id del bus lo averigué con el comando lspci, que me arrojó algo como:


0000:00:0c.0 Multimedia audio controller: Cirrus Logic CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] (rev 01)
0000:00:0d.0 Multimedia audio controller: Creative Labs SB Audigy LS

Update: ver este nuevo post para más datos sobre este tema “Otra forma de resolver el problema del orden de detección de placas en GNU/Linux“.


, , , ,

Posted in audio, GNU/Linux, hardware, alsa, Castellano | No Comments »

 
Cerrar
Enviar por Correo