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?
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
algorithms
, alsa
, audio
, c++
, Castellano
, effects
, free software
, GNU/Linux
, GPL
, instruments
, programming
, sound 
Share This/Compártelo
Posted in audio, algorithms, effects, free software, programming, instruments, GNU/Linux, GPL, c++, alsa, Castellano, sound | No Comments »
Posted by hordia on 1st November 2007
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:
audio
, Castellano
, Chuck
, effects
, free software
, GNU/Linux
, GPL
, music
, noise
, programming
, signal processing
, sound 
Share This/Compártelo
Posted in audio, effects, signal processing, music, free software, programming, GNU/Linux, GPL, noise, Castellano, sound, Chuck | 1 Comment »
Posted by hordia on 12th July 2007
CLAM es un completo framework para hacer investigación y desarrollo sobre audio y música (esto también incluye aplicaciones para usuarios finales). Ofrece un modelo conceptual y herramientas para el análisis, la síntesis y el procesamiento de señales de audio. Tiene una interfaz muy amigable, es Software Libre, multiplataforma y esta escrito en C++ (en muchas de sus aplicaciones utiliza tiempo real).
A pesar de que tuvo su origen en una Universidad de Barcelona, España, la documentación en español sobre este framework es escasa, asi que me decidí a hacer una pequeña introducción sobre las cosas básicas, pero con links (eso si, la mayoria en inglés) para el que quiera ir más allá. Pienso que le puede servir a más de uno para empezar.
Básicamente hay dos perfiles: el de usuario final (de las aplicaciones) y el de desarrolladores que quieran escribir sus propios programas sobre este framework.
En este momento se compone de 4 programas principales:
NetworkEditor:
Es una aplicación que permite conectar módulos en forma de red de procesamiento al estilo pd (pero mucho más amigable), MaxMSP o Reaktor (o para los que usan matlab, tipo simulink). Estas redes se ejecutan en tiempo real y se pueden correr con jack, portaudio, LADSPA o VST como backend.
Una de las características más interesantes es que esta red se puede exportar y después correr con una interfaz gráfica diseñada con QTDesigner (ambos programas exportan a un xml que luego se corre con la aplicación Prototyper)
Recomiendo ver esta presentación: “Visual prototyping of audio applications”
Es decir, un usuario que no es programador puede armar complejos plugins o aplicaciones sin escribir una sola línea de código. También es muy útil para armar prototipos de futuras aplicaciones o desarrollos.
En este momento se esta integrando con LADSPA, lv2 y se planea reforzar aún más la posibilidad de usar plugins externos (como un módulo más) dentro del NetworkEditor y vicerversa, usar estas redes como plugins en otras aplicaciones.
Para el que quiera empezar, recomiendo esto:
Annotator:
Es un programa para hacer transcripciones, en el estilo de Sonic Visualizer. Muy potente y con características que lo hacen único.
Para conocer más:
SMSTools:
Un analizador de señales de audio en el estilo de wavesurfer que soporta diferentes tipos de visualización como spectogramas, y todas las derivadas del módelo Sinusoides + Residuo asi como trasnformaciones complejas basadas en este modelo (gender change, pitch-shifting, morph, etc) y muchas otras cosas más (ver tutorial).
Voice2MIDI:
Convierte voz en MIDI. Esta comentado en este artículo de linuxjournal.
Para desarrolladores, sirve como entorno para realizar sus propias aplicaciones de forma fácil o como herramienta para hacer prototipos de sus futuras implementaciones.
Recomiendo:
Si uno quiere, puede aportar al proyecto mandando ‘patchs’ de código a los desarrolladores principales y hasta convertirse en ‘developer’ luego de haber mandado varios de ellos.
En fin, es un proyecto bastante grande y ambicioso. Incluso hay miles de desarrollos más sobre el mismo que no están en el ‘paquete principal’, pero me pareció útil dar un panorama general porque tal vez sea tan abarcativo que maree un poco para el que recién escucha algo de él.
Como ya dije, es multiplataforma y esta disponible para GNU/Linux (con paquetes para varias distribuciones), Windows y Mac (ver más y descargar)
Otro links interesantes:
algorithms
, audio
, c++
, Castellano
, CLAM
, effects
, free software
, GNU/Linux
, GPL
, GSoC2007
, GUI
, libraries
, library
, midi
, music
, noise
, programming
, projects
, publications
, signal processing
, speech
, standards 
Share This/Compártelo
Posted in audio, algorithms, effects, signal processing, music, free software, programming, GNU/Linux, GPL, c++, noise, libraries, midi, publications, projects, Castellano, CLAM, standards, speech, GSoC2007, GUI, library | No Comments »
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
alsa
, audio
, Castellano
, GNU/Linux
, hardware 
Share This/Compártelo
Posted in audio, GNU/Linux, hardware, alsa, Castellano | No Comments »
Posted by hordia on 17th April 2007
Last week I got accepted into google’s summer of code program, so I will be with this on summer… ehm s/summer/winter here…
I’m very happy with that!
Google granted 6 students to CLAM, so it’s a big success!!! All applications are listed here.
The scope of my app may vary (or change totally! see below) because I still have to have a meeting with my mentor and adjust some details. Indeed seems that maybe could be another of my gsoc’s applications. Beyond that, of course it will be released under GPL.
ATM, it will be:
Title: Educative Vowel Synthesizer
Mentor: Pau Arumí Albó
License: GNU General Public License (GPL)
Abstract: The main goal of this project is to build an application that let the user to synthesizing different vowels by placing a point within the vowel triangle, and the reverse, given an input vowel from the microphone place a dot on the triangle. For example, this is useful to students who can check their pronunciation. This includes displaying the mouth position for the vowel, visualizing the spectral peaks (and identify the effect), changing the pitch and vocal track characteristics.
A teacher could limit the set of vowels to the ones used for a particular language such as Catalan or English, so that the students just see the relevant ones for the exercise. Also includes some didactict games about identify the vowels by his spectral content.
I really don’t know ATM if it’s going to change or not, but that is what the gsoc page says so far
CONFIRMED: it’s going to change, maybe something with real time sms transformations and real time voice2midi, news soon… here: “My GSoC2007 application: Real-time spectral transformations”
My mentor will be Pau Arumí Albó, one of the main developers of CLAM project and part of Universitat Pompeu Fabra (Barcelona, Spain). I meet him recently on irc channels and mailing lists and he seems very kind. He’s a free software enthusiastic and teachs software engineering. He also developed other free software like testfarm and MiniCppUnit and has many publications. Recently, for example, he was at LAC2007 conference with David García Garzón both showing the work: “Visual prototyping of audio applications“.
I had heard some about CLAM before this GSoC (i had played a little with it too) and indeed starting developing with was in my (long)ToDo. But i didn’t knew that they were open to new developers too, so as fast i get know about its GSoC participation (the bad thing was that was not much before the deadline) i had no doubts about try to apply. For luck, google extended the deadline a little and the time was enough to present (’at least only’) 4 app’s, but i had presented 20 (GSoC limit!) if i had enought time. That time i was thinking, researching about CLAM, imagining, reading some source code and documentation and writing proposals of course, hehehe. Seems that i overstating but is true
I had discarded from first the idea of apply to a different organization.
My first goal was to have a good opportunity to develop to or under this framework and even I was decided to keep close to the project beyond the results. I came here to learn a lot and give my best. They gave me a warm welocome from the beginning. I wish to be able continue developing to CLAM after completing GSoC (and completing it well of course!).
Some days ago, I already introduced me to the CLAM community here and also I have become member of his planet! Great!
And last but not least i want to express all my thanks for the opportunity to the entire CLAM development group! thanks!!!
algorithms
, audio
, c++
, CLAM
, english
, GNU/Linux
, GPL
, GSoC2007
, libraries
, programming
, projects
, speech 
Share This/Compártelo
Posted in audio, algorithms, programming, GNU/Linux, GPL, c++, libraries, projects, English, CLAM, speech, GSoC2007 | No Comments »
Posted by hordia on 5th March 2007
Del 22 al 25 de marzo de este año se desarrollaran las 5tas jornadas de Linux Audio Conference (LAC) en Berlin, Alemania.
LAC2007 tiene como objetivo reunir a desarrolladores y usuarios de linux y software de audio open source con el objetivo de compartir información y discutir sobre proyectos y música.
Puntos más importantes:
- Charlas públicas y workshops
- Conciertos
- Tutoriales
- Presentación de papers
- Audio en vivo/streaming de video
- Entrada gratuita a todos los eventos (excepto para los conciertos)
(info de prensa del evento aqui)
El programa detallado del evento aca (por días)
Títulos de las charlas y workshops:
- A Tetrahedral Microphone Processor for Ambisonic Recording
Fons Adriaensen
- Renewed architecture of the sWONDER software for Wave Field Synthesis on large scale systems
Marije Baalman, Simon Schampijer, Torben Hohn, Thilo Koch, Daniel Plewe, Eddie Mond
- Music Composition through Spectral Modeling Synthesis and Pure Data.
Edgar Barroso
- A Software-based Mixing Desk for Acousmatic Sound Diffusion
André Bartetzki
- pnpd, a new audio synthesis engine with a dataflow language
Tim Blechman
- openSUSE JAD - Tutorials for installation and producing music
Michael Bohle
- Integrating Documentation, End-User Support, and Developer Resources using *.linuxaudio.org
Ivica Ico Bukvic, Robin Gareus, Daniel James
- Audio Metering and Linux
Andres Cabrera
- Qtractor - A Audio/MIDI multi-track sequencer
Rui Nuno Capela
- Compiling Simulink Models as SuperCollider UnitGenerators
Martin Carlé, Sönke Hahn
- Python for Sound Manipulation - A versatile creation environment Tutorial
Renato Fabbri and Fábio Furlanete
- Developing Shared Tools: a Researchers Integration Medium Workshop
Fábio Furlanete and Renato Fabbri
- Visual prototyping of audio applications (CLAM)
David Garcia, Pau Arumi, Xavier Amatriain
- Interfacing Pure Data with Faust
Albert Gräf
- Faust Hands On Demo
Yann Orlarey and Albert Gräf
- Proposal for an XML format for Time, Positions and Parts of Audio Waveforms
Jens Gulden and Hanns Holger Rutz
- JJack: Using the JACK Audio Connection Kit with Java
Jens Gulden
- Model Driven Software Development with SuperCollider and UML
Jens Gulden
- Offener Schaltkreis, An interactive Sound Installation
Christoph Haag, Martin Rumori, Franziska Windisch, Ludwig Zeller
- Stereo, Multichannel and Binaural Sound Spatialization in Pure-Data
Georg Holzmann
- Canorus - a music score editor - Workshop
Reinhard Katzmann, Matevz Jekovec
- Buzztard Music Production Environment Demo
Stefan Kost and Thomas Wabner
- The One Laptop Per Child (OLPC) Audio Subsystem
Jaya Kumar
- Musical Signal Scripting with PySndObj
Victor Lazzarini
- Stochastic Composition with SuperCollider
Sergio Luque
- Beyond open source music software: extending open source philosophy to the music with CODES
Evandro Manara MILETTO, Luciano Vargas FLORES, Daniel Eugenio KUCK, Marcelo Soares PIMENTA and Jerome RUTILY
- pure-dyne
Aymeric Mansoux, Antonios Galanopoulos and Chun Lee
- Getting Linux to produce Music fast and powerful
Hartmut Noack
- Firewire Audio on Linux - Demo
Pieter Palmers
- The Linux MIDI Studio - A workshop with Dave Phillips
Dave Philips
- From resistors to samples: Developing open hardware instruments using Arduino, Pure Data and Processing - Workshop
Recursive Dog collective (Dolo Piqueras, Emanuele Mazza and Enrique Tomás)
- Video Editing with the Open Movie Editor
Richard Spindler
- Developing LADSPA Plugins with Csound
Rory Walsh and Victor Lazzarini
- Real-Time Multiple-Description Coding of Speech Signals
Jan Weil, Kai Clüver, and Thomas Sikora
- blue: a music composition environment for Csound
Steven Yi
- Livecoding with SuperCollider
Alberto de Campo
Link a las descripciones de cada uno de los papers: abstracts
Update:
Update 2:
Hay streaming de audio y video en tiempo real de todas las conferencias y conciertos (luego también estará en diferido)
acoustics
, algorithms
, audio
, c++
, Castellano
, CLAM
, codecs
, conferences
, effects
, español
, events
, free software
, GNU/Linux
, libraries
, midi
, music
, open source
, programming
, publications
, python
, signal processing
, talks 
Share This/Compártelo
Posted in audio, acoustics, algorithms, effects, signal processing, music, free software, programming, GNU/Linux, open source, c++, codecs, libraries, midi, python, publications, Castellano, CLAM, talks, events, conferences | No Comments »
Posted by hordia on 24th February 2007
SoX (Sound eXchange) es un conjunto de comandos muy potentes para procesar archivos de audio. Estos resultan tan diversos que normalmente esta herramienta se hace conocer como “la navaja suiza de las herramientas de sonido”.
Entre otras cosas, permite conversión entre formatos, aplicar efectos (por ejemplo distintos tipos de filtros), resamplear, grabar, reproducir, etc.
Otra cosa curiosa que tiene es que estas funcionalidades también estan disponibles como biblioteca (denominada libst). Se trata de una biblioteca estática que puede ser usada desde otras aplicaciones.
Recientemente hice algunos scripts para Musix que valiéndose de esta herramienta convierten en forma masiva de formato y resamplean desde el menú contextual de konqueror (ver mi otro post).
Los .desktop hay que agregarlos en “~/.kde/share/apps/konqueror/servicemenus/” para que este solo disponible para un usuario y en “/usr/share/apps/konqueror/servicemenus/” para que lo este para todos los usuarios del sistema. También hay que editar los .desktop con el path correcto donde van a estar ubicados los .sh, nada más.
Tres tienen acciones sobre directorios, convierten todo lo que tenga extensión mp3 o wav (según se elija) dentro del directorio a wav 44kHz o 48kHz y hay uno que actua sobre archivos individuales mp3 convirtiendolos a wav.
Se pueden hacer muchas variaciones de todo esto y es aplicar la misma idea.
(bajar conv_masiva_sox.tar.gz)
Otros ejemplos:
Grabar lo que entra por la entrada de línea: rec -c 2 -r 44100 -s w my_file.wav
Resampleo (resamplea a 44100Hz): sox test.wav -r 44100 test_44100.wav resample
Cambiar el bitrate a 16bits: sox test.wav -w test_out.wav
Convertir a PCM: sox test.wav -u -w test_44100_pcm.wav
Pasa bajo (frecuencia de corte): sox test.wav test_LP.wav lowpass 1000
audio
, Castellano
, codecs
, formats
, free software
, GNU/Linux
, libraries 
Share This/Compártelo
Posted in audio, free software, GNU/Linux, codecs, libraries, formats, Castellano | No Comments »
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“.
alsa
, audio
, Castellano
, GNU/Linux
, hardware 
Share This/Compártelo
Posted in audio, GNU/Linux, hardware, alsa, Castellano | No Comments »