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

A perfect Imperfect Day (As usual in this world)

Music player and embed code available at:

MP3 FREE DIRECT DOWnload (360kbps):


SCORE (PDF): A Perfect Imperfect Day’s PDF Score


Creative Commons License
A Perfect Imperfect Day by Daniel Campos Fernández is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
Based on a work at
Permissions beyond the scope of this license may be available at


The making of  – Free Software for Free music

English text

For Spanish readers: (lea la traducción en Castellano más abajo)

Some years ago I wrote a small study in order to practice the guitar fingerpicking style. It was quite simple indeed, but I’ve always thought it had a potential to be turned into an orchestral piece. Not long ago I just decided to play it with a guitar. It was difficult to remember, as I had never written down a score for it. Finally I was able to barely play it. I wasn’t interested in a clean performance, I just wanted a record not to forget it again.

But short after playing it, I resumed my goal of transforming it into something bigger. I thought it would be interesting to use Free or at least Open Source Software in order to achieve that result. It was not a big task, as I didn’t require to record real instruments nor synchronize long files. Thus, I didn’t care very much about looking for a low-latency optimized Kernel, which might be quite useful for more complex tasks. Instead I decided to use a regular GNU/Linux distribution and see if it was enough for my project. My laptop currently uses Ubuntu 11.04, and even though there are problems in some sound and video applications due to the lack of a single standard in the GNU/Linux sound stack, everything worked fine for me this time.

Ubuntu uses the ALSA project sound drivers. Those drivers are in charge of controlling the sound card, and they have a decent support for almost every common low-cost sound card that can be found in both laptop and desktop PCs. They’re updated regularly and are used almost in any modern GNU/Linux distribution. The ALSA project was born to replace the old OSS Unix system and provides some tools to keep compatibility with old applications still using OSS.

However, there’s a sort of chaos on the top of ALSA. According to the ALSA model, only a single application can access the sound card at once (at least this is true if you want to use every feature of your sound card). To avoid this problem there exist the so called “sound servers”. They allow to share the sound resources (both for playing and recording) among different applications running in the system and usually provide support for remote connections, so other computers are able to interact with a concrete PC’s sound card in order to play or record sounds over a network. This idea is obviously great, but the main problem is that many developers wrote different incompatible sound servers, and not every application can use every sound server’s architecture. The KDE Desktop project developed Arts, GNOME decided to used E-sound for a time, and so on. It seems that nowadays everybody is migrating towards Pulseaudio, a new and ambitious sound server, and every major distribution is trying to adapt their applications to use it. Current Ubuntu support is mainly working OK even though there are some applications like Kino that still show a bizarre behavior when running on a Pulseaudio environment. There are some additional problems to be understood: sound servers can be run both as a system daemon or as a single user daemon. It seems that Ubuntu 11.04-Desktop is prepared for the second scenario, and when I first tried to play with different sound servers I had problems until I discovered that I needed to run everything as a normal user instead of trying to start system services.

Anyway, I also needed a good score editor with MIDI support. The only option really working for me is Rosegarden. It has a very comfortable user interface, allowing to edit both MIDI and audio files, to use a full-featured score editor, to work with LADSPA plugins and to add in effects and to export and import audio data in different formats. It’s not as powerful as the well-known Cubase/Cubasis commercial software, but it’s final goal is to reach a similar level of usefulness. Rosegarden is not easy to install, there are Ubuntu packages available, so downloading the binaries is not a problem at all, but it requires some additional configuration, and I can’t provide general rules because it seems to be dependent on your concrete sound card, but the general rule is that you need to setup the Jack audio server. Rosegarden doesn’t use Pulseaudio, instead it’s currently using Jack, but somehow Jack is able to coexist with Pulseaudio. So I downloaded QjackCtl, a graphical tool allowing to start, stop and manage your Jack service whenever you want to use it. It seems that I can not watch Youtube flash videos with sound nor use the Totem multimedia player while Jack is active, but it’s not a major problem when I’m focusing on writing a score. In the past I tried prior Rosegarden versions along with a Debian distribution, but it was a real hell to get any sound, now it seems that Ubuntu 11.04 defaults are ready to offer a less painful setup for the user, just turning on and off Jack by using QjackCtl seems to work.

However that’s not the final step. I needed to “play” MIDI sounds instead of recorded sounds. ALSA doesn’t provide very good support for many soundcard’s MIDI capabilities. There are different problems: sometimes nobody wrote that part of the driver code, some other times your concrete card needs MIDI stuff to be loaded as a firmware and that firmware is not freely available, etc. Nevertheless there’s a workaround for that, and in fact it’s more powerful than your native soundcard MIDI support: there are programs that are able to emulate a MIDI device by getting MIDI commands and sending them as wave sounds to the regular soundcard sound device. This is a great solution not only because it allows to provide a generic support for MIDI completely independent from your hardware but also because those programs can use different soundfonts. Instead of being limited by the (often poor and cheesy) audio samples of your MIDI device, you can replace them by different high-quality sound samples that you can download from the Internet. As fas as I know soundfonts became popular thanks to Creative® which adopted that model to improve some of its sound cards: the new soundfonts were uploaded to the sound card replacing the native sound samples. Now you can avoid using the sound card memory by simply synthesizing those sounds with a regular program in the regular RAM memory, which allows to avoid the memory limits of your sound card and possible incompatibilities between your sound card and the soundfont model.

In my first try, I used Timidity++, a popular and we could say vintage program. However I found some segmentation faults while trying to use it along with Pulseaudio and Jack. I felt a little frustrated, but soon I found an alternative called FluidSynth. It works like a charm, has full support for the soundfont SF2 format (the most popular one) and a very comfortable GUI called QSynth that allow to start, stop and configure every common parameter of its work.

The last step was to find good soundfonts. The one officially provided with Ubuntu was a bit poor to me, it has a decent Yamaha® piano emulation, but Violins, Violas, Cellos, and other instruments don’t sound very realistic. I thought it would be easy to find commercial samples, but trying to find something good in the free or public domain “market” would be an odyssey. To my surprise I found that there are a good number of people sharing HQ soundfonts on Internet music forums and besides they’re often specialized in different instruments. That way you can find soundfonts for the nuances of fast played violins, slow played violins, pizzicato violins, and even many orchestra instruments playing at once to provide a chorus environment for a solo, for instance. Thus, I searched though the forums and finally I found all the free soundfonts I needed for my work. Initially, I just needed decent sounds for Viola, Cello and Piano, but finally I found a charming orchestra chorus and I added it to my song.

By the way, not every soundfont can be found in the SF2 format, some of them are compressed using SfArk, a tool for lossless audio compression.  It isn’t free software, but is free for non-commercial use. The problem is that the Linux (command line) sfark tool is a binary trying to use the deprecated stdlibc++5 library, and I was unable to run it. As a workaround, I just downloaded the Windows® version and run it by using Wine, a software that allows to run (some) Win32 programs. It worked very well for SfArk without any special configuration.

Now let me remark that the digital world is somehow tricky for the rights management. When you play a real instrument for your own piece, that’s your work and you own it, that’s all, however when “you play” MIDI along with soundfonts, you’ve not the right to publish that work unless you’ve purchased the right of use of a soundfont. That means that it’s important to care about using free or public domain soundfonts when you want to create free music, or at least buy the commercial soundfonts in order to use them legally.

With all those software pieces up and working, I wrote my song and “played” it. The final step was to improve a bit the sound. Once I recorded it as a wave sound, I used Audacity to add some effects. It’s a free and multiplatform sound editor, able to use hundreds of LADSPA plugins. Its GUI is very convenient and works very well along with both Pulseaudio and Jack. I added some effects such a room echo, stereo effect enhancement and bass amplification, as well as a digital equalizer.

Finally, I checked the Creative Commons web page in order to choose a free license fitting my purposes and published my song. In order to create a video, I looked for free images and added it to my videoclip created with OpenShot. About the score, Rosegarden uses the powerful Lilypond score editor as a backend so both creating a PDF and printing it is really an easy task. Likewise, the “PdfChain” and “PDFEditor” tools allow to touch the generated PDF file up.

Things to do:

– Find a place where to host a OGG version (every Internet site for free music uploading seems to be limited to the MP3 format and my free WordPress account doesn’t allow to upload music files)

– Publishing a Rosegarden and/or MIDI archive? No, it isn’t in the TODO list, just ask me for it if you need it.

DecorativeCómo se hizo  – Software libre para música libre

Texto en EspañolHace algunos años escribí un pequeño estudio para practicar el estilo fingerpicking en la guitarra. Era muy simple, pero siempre pensé que tenía el potencial para convertirse en una pieza para orquesta. No hace mucho, decidí tocarlo con la guitarra. Me resultó difícil recordarla ya que nunca la había apuntado en una partitura. Al final fui capaz de tocarla más o menos. No estaba interesado en tocarla bien, tan solo quería grabarla para no olvidarla de nuevo.

Pero tras tocarla, retomé mi objetivo de convertirla en algo más grande. Pensé que sería interesante usar Software Libre o al menos de Fuentes Abiertas para conseguir el resultado que buscaba. No se trataba de una tarea grande, ya que no tendría que grabar instrumentos reales ni sincronizar archivos largos. Así pues, no me preocupé mucho por buscar un Kernel optimizado de baja latencia, que podría ser muy útil para tareas más complejas. En su lugar decidí utilizar una distribución GNU/Linux normal y comprobar si bastaba para mi proyecto. Mi portátil usa actualmente Ubuntu 11.04, y aunque hay problemas con algunas aplicaciones de vídeo y audio debido a la falta de un estándar único en las diferentes capas de sonido de GNU/Linux, esta vez parece que todo funcionó bien.

Ubuntu emplea los drivers de audio del proyecto ALSA. Dichos drivers están a cargo de controlar la tarjeta de sonido y ofrecen un soporte medianamente bueno para casi todas las tarjetas de sonido baratas que se pueden encontrar en los PC portátiles y de sobremesa. Se actualizan de forma regular y son los empleados prácticamente por todas las distribuciones modernas de GNU/Linux. El proyecto ALSA nació para reemplazar al antiguo sistema Unix OSS y también ofrece algunas herramientas para mantener la compatibilidad con aplicaciones antiguas que aún utilizan OSS.

Sin embargo, hay bastante desorden en el software que está sobre ALSA. De acuerdo con el modelo de ALSA, solo una aplicación puede acceder a la tarjeta de sonido a la vez (al menos esto es cierto si desea utilizar todas las características de la tarjeta de sonido). Para evitar este problema existen los llamados “servidores de sonido” que permiten compartir los recursos de sonido (tanto para reproducción como grabación) entre diferentes aplicaciones que se ejecutan en el sistema y además proporcionan soporte para conexiones remotas, de forma que otros ordenadores sean capaces de interactuar con la tarjeta de sonido de un PC concreto con el fin de reproducir o grabar sonidos en red. Esta idea obviamente está muy bien, pero el principal problema es que muchos desarrolladores han escrito diferentes servidores de sonido incompatibles, y no todas las aplicaciones pueden usar los servicios de cada arquitectura de sonido disponible. El proyecto de escritorio KDE desarrolló Arts, GNOME decidió utilizar E-sound durante un tiempo, etcétera. Parece que hoy en día todo el mundo está migrando hacia Pulseaudio, un nuevo servidor de sonido bastante ambicioso, y todas las distribuciones principales están tratando de adaptar sus aplicaciones para usarlo. El soporte actual de Ubuntu está bastante bien aunque aún algunas aplicaciones como Kino se comportan de forma extraña bajo un entorno Pulseaudio. Hay además que reseñar otros problemas: los servidores de sonido pueden ser ejecutados somo servicios del sistema o como servicios de un usuario concreto. Parece que Ubuntu 11.04-Desktop está preparado para el segundo caso, y cuando al principio traté de hacer pruebas con diferentes servidores de sonido tuve problemas hasta que descubrí que debía ejecutarlo todo como un usuario normal en lugar de iniciar servicios del sistema.

En cualquier caso, también necesitaba un buen editor de partituras con soporte de MIDI. La única opción realmente funcional para mí es Rosegarden. Dispone de una muy buena interfaz de usuario, que permite editar tanto archivos MIDI como de audio, dispone de un editor de partituras lleno de posibilidades, y permite trabajar con plugins LADSPA además de disponer de filtros para importar y exportar datos de audio en diferentes formatos. No es tan potente como el software comercial Cubase/Cubasis, pero su propósito final es alcanzar un nivel de utilidad similar. Rosegarden no es fácil de instalar, hay paquetes disponibles para Ubuntu, por lo que la descarga de los binarios no es un problema en absoluto, pero la cuestión es que requiere de una configuración adicional, y no puedo dar reglas generales, ya que parece ser dependiente de la tarjeta de sonido en cuestión, pero la norma general es que se necesita configurar el servidor de audio Jack. Rosegarden no utiliza Pulseaudio, sino que funciona con otro llamado con Jack, aunque de alguna manera Jack es capaz de coexistir con Pulseaudio. Así pues descargué QJackCtl, una herramienta gráfica que permite iniciar, detener y administrar el servicio de Jack cada vez que se desee utilizarlo. Parece que no puedo ver videos flash de Youtube con sonido, ni utilizar el reproductor multimedia Totem mientras Jack está activo, pero no es un problema importante cuando estoy centrado en la escritura de una partitura. En el pasado traté de usar versiones anteriores de Rosegarden junto con una distribución Debian, pero fue un verdadero infierno para conseguir cualquier sonido, ahora parece que las configuraciones por defecto de Ubuntu 11.04 están listas para ofrecer un ajuste menos problemático para el usuario, tan solo con ejecutar y parar Jack mediante el uso de QJackCtl todo funciona.

Sin embargo, éste no es el último paso. Necesitaba hacer sonar archivos MIDI en lugar de sonidos pregrabados. ALSA no ofrece un soporte demasiado bueno para las capacidades MIDI de muchas tarjetas de sonido. Hay diferentes problemas: a veces nadie ha escrito esa parte del código del driver, a veces una tarjeta de sonido en concreto necesita cargar código o samples en forma de firmware y dicho firmware no es de libre uso, etc. No obstante hay un apaño para ello que de hecho es más potente que el soporte nativo de MIDI de una tarjeta de sonido: hay programas capaces de emular dispositivos MIDI tomando los comandos MIDI y enviandolos como sonidos sintetizados al dispositivo general de salida de la tarjeta de sonido. Es una magnífica solución no solo porque permite ofrecer un soporte MIDI genérico con independencia del hardware sino también porque estos programas pueden utilizar diferentes soundfonts (fuentes de sonido, en vez de tipográficas). En lugar de encontrarte limitado por los samples o muestras de audio (generalmente pobres y algo cutres) de tu tarjeta de sonido, puedes reemplazarlo por samples de sonido de alta calidad que se pueden descargar desde Internet. Hasta donde sé, las soundfonts se volvieron populares gracias a Creative®, que adoptó ese modelo para mejorar algunas de sus tarjetas de sonido: las soundfonts eran cargadas en la tarjeta de sonido y reemplazaban a las muestras de sonido nativas. Ahora además se puede evitar emplear la memoria de la tarjeta de sonido simplemente sintetizando esos sonidos con un programa genérico en la memoria RAM normal, lo cual evita los problemas de limitación de RAM de la tarjeta así como posibles incompatibilidades entre la tarjeta de sonido y el modelo de soundfonts.

En mi primer intento emplee Timidity++, un programa popular y digamos que bastante veterano. Sin embargo me encontré con violaciones de segmento al tratar de utilizarlo sobre Pulseaudio y Jack. Me sentí algo frustrado, pero pronto encontré una alternativa llamada FluidSynth. Funciona estupendamente, tiene soporte completo para el formato de soundfonts SF2 (el más popular) y una interfaz de usuario muy manejable llamada QSynth que permite iniciar, detener y configurar cada aspecto habitual de su funcionamiento.

El último paso era encontrar soundfonts de calidad. Las oficiales suministradas por Ubuntu eran un poco pobres para mí, tienen una emulación digna de piano Yamaha®, pero otros instrumentos como violines, violas, y violonchelos entre otros no suenan muy realistas. Pensé que iba a ser fácil encontrar fuentes comerciales pero que tratar de encontrar algo bueno en el “mercado” del dominio público o software libre sería una odisea. Para mi sorpresa encontré que hay un buen número de personas compartiendo fuentes de sonido de alta calidad en foros de música en Internet y además a menudo están especializados en diferentes instrumentos, de modo que se pueden encontrar fuentes de sonido por ejemplo para matices de violines tocando rápido, violines tocando lento, violines en pizzicato, e incluso muchos instrumentos de orquesta tocando a la vez para proporcionar un coro. Así pues, busqué en foros y finalmente encontré todas las fuentes de sonido libre que necesitaba para mi trabajo. Inicialmente, sólo necesitaba un sonido decente para viola, violonchelo y piano, pero al final me encontré con un coro de cuerda de orquesta encantador y lo añadí a mi pieza.

Por cierto, no todas las fuentes están en formato SF2, algunas están comprimidas empleando el software SfArk, una herramienta para compresión de audio sin pérdida. No es software libre, pero es gratuíta para uso no comercial. El problema es que la versión de línea de comandos para Linux es un binario que utiliza la librería o biblioteca obsoleta llamada stdlibc++5, y no fui capaz de ejecutarla. Como solución, bajé la versión Windows® y la ejecuté con Wine, un software que permite funcionar (algunos) programas Win32. Funcionó muy bien para SfArk sin ninguna configuración adicional.

Permitanme ahora señalar que el mundo digital es algo confuso en cuanto a la gestión de derechos. Cuando tocas un instrumento real, es tu trabajo y es de tu propiedad, eso es todo, pero cuando “tocas” MIDI junto a soundfonts, no tienes derecho para publicarlo salvo que hayas adquirido el derecho de uso de dichas soundfonts. Esto significa que es importante preocuparse en encontrar fuentes de sonido libres o de dominio público cuando deseas crear música libre, o al menos comprar soundfonts comerciales cuando deseas utilizarlas de forma legal.

Con todas esas piezas encajadas y en marcha, escribí mi canción y la “toqué”. El paso final fue mejorar la grabación un poco. Una vez grabé la salida MIDI como sonido sintetizado, emplee Audacity para añadir algunos efectos. Es un editor de sonido libre y multiplataforma, que está preparado para usar cientos de plugins LADSPA. Su interfaz es muy funcional y funciona perfectamente en conjunto con Pulseaudio y Jack. Añadí algunos efectos tales como eco de habitación, mejora del efecto estéreo y amplificación de bajos, así como un ecualizador digital.

Finalmente consulté la página de Creative Commons con el fin de elegir una licencia libre que encajara con mis propósitos, y publiqué la pieza. Para crear el vídeo, busqué imágenes libres y las añadí al videoclip creado con OpenShot. Con respecto a la partitura, Rosegarden utiliza el potente editor de partituras Lilypond como backend así que crear el PDF e imprimirla fue una tarea realmente sencilla. Así mismo las herrmientas “PdfChain” así como “PdfEditor” permiten dar algunos retoques posteriores al PDF generado.

Cosas pendientes:

– Encontrar un lugar donde subir una versión OGG (todos los sitios de Internet que permiten alojar música gratuitamente parecen estar limitados al formato MP3 y mi cuenta gratuíta de WordPress no me permite subir archivos de música)

– ¿Publicar el archivo de Rosegarden o una versión MIDI? No, no está pendiente, simplemente pidemela si lo necesitas.




PARTITURA (PDF): PARTITURA DE “A Perfect Imperfect Day”