Archivo de la categoría: GNU/Linux

Interficie Wii Rockband drumset

El otro día compré en el Cash Converter, por 18e, una batería Wii de segunda mano, con la idea de hacerla sonar en mi Ubuntu. Estas baterías salieron al mercado en 2007, hace ya cinco años. Evidentemente hay gente que ha llevado estas consolas al entorno Linux, y me he beneficiado del código que he encontrado por aquí y por allá. Sin embargo, el codi que he encontrado no era para mi modelo (también existen versiones para PS2, PS3 y X360), así que he tenido que averiguar los códigos que envía el drumset (con la dificultad que cuando tocas las dos baquetas a la vez, o las dos baquetas y el bombo, se envían otros códigos). No tenía experiencia previa en la programación de la librería libusb. Utilizando esta librería ha estado la única forma posible de detectar la fuerza con que golpeo la baqueta, y por tanto hacer un poco de control de volumen, aunque con poca resolución.

Para hacer sonar la batería se necesita generar mensajes MIDI y enviarlos a un sintetizador. He utilizado Hydrogen como sintetizador de sonidos de batería. He programado cuatro presets diferentes que se acceden con los botones de la consola (los típicos botones 1, 2, A y B de la Wii). Se han hecho dos versiones del código, una que utiliza ALSA de forma nativa, y otra para el servidor de audio JACK. Puedes descargarte el código del proyecto:
jrbdrum project

Stop motion: puzzle de 1000 piezas

Només hi ha una època en la vida on fer puzzles és interessant: quan ets nen. Com el Pere, que disfruta fent el puzzle de pirates de 40 peces. Quan ets adult fer puzzles és una autèntica pèdua de temps. Dit això, jo tenia l’espina clavada doncs en el seu dia no vaig poder acabar un puzzle que corria per casa de 750 peces. M’ho devia. Així que un dia que vaig entrar al Cash&Converter vaig agafar un puzzle per 5 euros (no vaig poder triar la foto, però m’era ben bé igual), i em vaig posar a fer el puzzle a estones, igual que un nen.

Stop motion. Quantes fotos s’han de fer a mida que desmunto el puzzle? Quantes peces trec entre foto i foto? Anem a fer el petit càlcul. Si el puzzle és de 1000 peces i trec dues peces entre foto i foto són 500 fotos, que seran 500 frames del video. Si vull muntar un video a 20 fps (20 frames cada segon), sortirà un vídeo de 500f/20fps = 25 segons.

Amb un script es pot muntar el video. Primer de tot es renombren les fotos de manera que la primera passi a ser la última, i la última la primera. De manera que la última és la foto que es diu 99999.JPG. Després es tornen a renombrar de manera que la primera passi a ser la 00000.JPG, etc. I seguidament es munta el video concatenant totes les fotos. Finalment, amb l’editor de video Open Shot es posa la portada, la contraportada, la música i es fan les foses.

#!/bin/bash
#rename files in reverse
START=99999 #allows for an hour of jpegs
i=$START
for f in *.JPG
do
mv $f $i.JPG
i=$(($i -1))
echo $i
done

c=0;
for i in *.JPG;
do mv «$i» «`printf %05d $c`.JPG»;
c=$((c+1));
done

ffmpeg -r 20 -sameq -i %05d.JPG output.mp4

El resultat final:

Canción de cuna (de mi padre a sus nietos)


Otra canción de cuna de mi padre. Dedicada a sus nietos (los 10 que tiene, el que vendrá, y los que pueden venir). Entre ellos María y Pere, los míos. Una canción dulce y de melodía simple, sin sobresaltos, com corresponde a una canción que tiene por objetivo hacer dormir, cosa a menudo nada fácil.

Duerme, niñito, el dulce sueño.
noneta non canta la madre;
sueños de paz te envolverán;
noneta non, dentro de la cuna,
noneta non, canta el amor.

Canco bressol 2 (lullabye) by joanillo

Descarga la partitura: canco_bressol (dedicada a mis nietos) (JM Quintana, 2012)

Jugando con la FFT

Hace ya mucho tiempo (realment mucho tiempo) que estudiaba la Transformada de Fourier (http://en.wikipedia.org/wiki/Fourier_transform) en la facultad, e incluso utilicé el algoritmo de la FFT (Fast Fourier Transform, http://en.wikipedia.org/wiki/Fast_Fourier_transform) en un aplicativo escrito en C para procesamiento digital de imágenes. Desde entonces no me había preocupado de la FFT y realmente lo tenía muy olvidado.

Estos días he vuelto a la carga con la FFT pues, con la idea de aprender las técnicas de programación de aplicaciones de audio, quería programar un afinador o un analizador de la potencia espectral de una señal, que fuese compatible con JACK.

Antes que nada hay que mirar qué algoritmo de FFT se podría utilizar, con licencia GPL, y rápidamente he visto que la elección sería FFTW (http://www.fftw.org/):

FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST). We believe that FFTW, which is free software, should become the FFT library of choice for most applications.

Me he puesto a compilar unos cuantos ejemplos y a familiarizarme con los cálculos. En definitiva yo lo que quiero es calcular la potencia espectral de una señal de audio, por tanto el señal de entrada serán unas muestras reales (una sola dimensión). La salida de la FFT serán unos valores complejos, y he de tener en cuenta tanto la parte real como la parte imaginaria para hacer los cálculos de la potencia espectral.

fftPlan = fftwf_plan_dft_r2c_1d(fftSize, fftIn, fftOut, FFTW_MEASURE); //r2c_1d: real to complex, one dimension

Mirando si hay algún afinador de código libre, que trabaje en modo consola, y compatible con JACK, me he encontrado estos dos proyectos, que precisamente utilizan la librería FFTW:

y también me ha sido últil para mi propio código en este proyecto capture_client:

He dividido el problema en dos partes:

  • Primero de todo capturo la señal que proviene del micrófono, y como resultado obtengo dos ficheros: el fichero de sonido wav y un fichero de texto donde pongo un número suficiente de muestas.
  • Segundo: abro el fichero de muestras, aplico una ventana de Hanning a les muestras como es habitual, calculo la FFT, calculo la potencia espectral de la señal, y obtengo un fichero de salida para ser procesado con la utilidad de creación de gráficos gnuplot (http://www.gnuplot.info/).

No había trabajado nunca con gnuplot, que sería el equivalente a Matlab para el mundo Linux. Viendo la demo de gnuplot que se distribuye con el código fuente, y que muestra de forma rápida todas las posibilidades de gnuplot, me he quedado realmente sorprendido. En mi caso dibujar el gráfico es muy fácil:

$ gnuplot
gnuplot> plot «data_440_trumpet_output.txt»

La prueba que presento se ha grabado con un mini teclado Casio SK-8, un mini-teclado de los años 80, escogiendo el sonido de trompeta, y obtengo el siguiente resultado.

Casio SK-8 440Hz (A) trumpet, 44100 fps by joanillo

Ahora quiero comparar el resultado de mis cálculos con los obtenidos con Audacity y Ardour, para comprobar que los cálculos son correctos:

Mis cálculos y Gnuplot Audacity Ardour

Perfecto! Lo he clavado!

jcapture: grabar la señal del micro a un fichero wav

jcapture es un pequeño programa desarrollado en C++ que capta la señal del micrófono y escribe un fichero de audio en format wav. Básicament es un cliente de JACK que se conecta automáticamente a system:capture_1, que es el puerto físico que representa la entrada del micro de la tarjeta de sonido, y mediante la librería libsndfile va escribiendo los datos del micro en el buffer del fichero de audio.

Además, muestra el nivel del señal de entrada de forma gráfica en la consola (pues es un programa que funciona por la consola, no tiene interficie gráfica). Si te interesa la programación de la API de JACK puedes descargar jcapture:

jplay-sndfile: una aplicación educativa para Procesamiento Digital del Señal

jplay-sndfile es una aplicación que he estado programando la última semana y que tiene un carácter didáctico. Básicamente es un reproductor de ficheros de audio que además puede aplicar un cambio de frecuencia, y también puede hacer un barrido continuo de frecuencias sobre la muestra de audio. Es un cliente de JACK (el servidor de audio de Linux), y está basado, como punto de partida, en sndfile-jackplay que se encuentra dentro de las utilidades de la librería libsndfile (http://www.mega-nerd.com/libsndfile/tools/#jackplay).

Todo el mundo saber que cuando se reproduce un fichero de audio al doble de la frecuencia original dura la mitad de tiempo. Sería equivalente a coger una muestra de cada dos, y reproducirlas a la misma frecuencia de muestreo original.

Ahora vamos a hacer el caso contrario, queremos dividir la frecuencia por dos, y el tiempo que durará la reproducción tendría que ser el doble. Para hacerlo, lo más fácil es doblar cada muestra en dos, y reproducirlo a la frecuencia de muestreo original.

Estos dos casos especiales, multiplicar por dos y dividir por dos, son los casos fáciles y más evidentes. Un análisis de estos casos y estudiar el código fuente proporcionado puede aclarar muchos conceptos a losestudiantes de Procesamiento Digital del Señal. Ahora bien, más difícil es hacer frecuencias intermedias entre 0.5 y 2; y más difícil todavía es hacer un barrido continuo de frecuencias en un rango determinado. Todo esto es lo que se puede ver y se puede estudiar en esta aplicación que tiene un carácter didáctico.

La salida de la ayuda del programa proporciona la siguiente información:

$ jplay-sndfile -h

jplay-sndfile 1.00
Created by Joan Quintana Compte (joanillo)
joanqc arroba gmail.com – www.joanillo.org
Licensed under GPL v.3

jplay-sndfile is a JACK client intended for playing audio files (wav) and pitch shifting, written basically for learning, testing and educational purposes, and the first stage for future developments. A part of playing an audio file, you can change the pitch (between *0.5 and *2) of your audio file, you can play the audio file combing the pitch between two ranges. For testing is useful a sine wave, but remember that you can use any mono (one channel) audio files.
This Jack Audio client connects automatically to system:playback_1 and system:playback_2

usage: jplay-sndfile [-h] [[pitch-shift] | [pitch-shift-start pitch-shift-end]] wav-file

\t-h –help: this usage information
\t[pitch-shift] (0.5,2): shifting pitch
\t[pitch-shift-start] (0.5,2): shifting pitch start range
\t[pitch-shift-end] (0.5,2): shifting pitch end range
\twav file: mono channel audio file
\t

\tExamples:
\t./jplay_sndfile samples/hellosine.wav
\t./jplay_sndfile 0.65 samples/hellosine.wav
\t./jplay_sndfile 0.5 2 samples/hellosine.wav

La muestra de audio que se presenta quiere ser un compendio de qué puede hacer jplay-sndfile, y contempla los siguientes casos:

  • ./jplay_sndfile samples/test_44100.wav
  • ./jplay_sndfile .5 samples/test_44100.wav
  • ./jplay_sndfile .8 samples/test_44100.wav
  • ./jplay_sndfile 1.4 samples/test_44100.wav
  • ./jplay_sndfile 2 samples/test_44100.wav
  • ./jplay_sndfile .5 2 samples/test_44100x3.wav
  • ./jplay_sndfile samples/sine_440_44100.wav
  • ./jplay_sndfile .5 1 samples/square_440_44100.wav
  • ./jplay_sndfile 1 2 samples/saw_440_44100.wav
  • ./jplay_sndfile .5 samples/waves.wav
  • ./jplay_sndfile 2 samples/waves.wav

jplay-sndfile-examples by joanillo

Una de les cosas más interesants es estudiar la función callback de la API de JACK, que ha quedado bastante escueta, y donde está el meollo del asunto. Básicamente la función callback() es llamada por el servidor de audio cada vez que la interfície de audio (la tarjeta de sonido hardware) necesita llenar su buffer con más datos.

static int process (jack_nframes_t nframes, void * arg)
{

\tjack_default_audio_sample_t buf ;
\tunsigned int i;
\touts = (jack_default_audio_sample_t *)jack_port_get_buffer (output_port, nframes) ;

\tinfo_t *info = (info_t *) arg;
\t
\tmemcpy (outs_original, buffer2 + frames_counter_original, sizeof (jack_default_audio_sample_t) * nframes * DOUBLE_SAMPLES * 2);

\tint k=0;
\tfloat k2;
\tk2 = nframes/info->shift_pitch;
\tfloat var, var2 = 0;
\tint part_entera = 0;
\tvar = 1/info->shift_pitch – 1;

\tfor (i = 0 ; i < nframes ; i++)
\t{\t

\t\tif (info->shift_pitch < 1) {
\t\t\tif (frames_counter + i >= info->numFrames / shift_pitch_equivalent) { // shift_pitch_equivalent = info.shift_pitch quan no faig un escombrat
\t\t\tinfo->play_done=1;
\t\t\treturn 0;
\t\t\t}
\t\t} else { // >= 1
\t\t\tif (frames_counter_original + i >= info->numFrames * DOUBLE_SAMPLES) {
\t\t\tinfo->play_done=1;
\t\t\treturn 0;
\t\t\t}
\t\t}
\t\t
\t\tif (info->shift_pitch > 1) {
\t\t\tk=(int)(i*DOUBLE_SAMPLES*info->shift_pitch + .5);
\t\t\touts[i] = outs_original[k];\t
\t\t} else if (info->shift_pitch <= 1) {
\t\t\touts[k] = outs_original[i*DOUBLE_SAMPLES];
\t\t\tif ((int)var2 != part_entera) {
\t\t\t\touts[k+1] = outs_original[i*DOUBLE_SAMPLES+1];
\t\tpart_entera = int(var2);
\t\tk++;
\t\t\t}
\t\t\tvar2 = var2 + var;
\t\t\tk++;\t\t\t
\t\t}

\t}
\tframes_counter += nframes;
\tframes_counter_original += nframes * DOUBLE_SAMPLES * info->shift_pitch ;
\t
\treturn 0 ;
} /* process */

¿Y para qué sirve todo esto? Como hemos dicho es una aplicación didáctica, sirve sobre todo para aprender:

  • para aprender: teoría del Procesamiento Digital del Señal
  • para aprender: API de libsndfile
  • para aprender API de JACK, ejemplo de cómo funciona la función de callback

pero a parte de aprender, se ha desarrollado con una idea en mente, que ha de ser el siguiente proyecto a realizar: utilizar una tableta gráfica Wacom, de las que utilizan los diseñadores gráficos, para producir sonidos realísticos, sensibles al movimiento y a la presión del lápiz, pero esto es otro proyecto: Reconocimiento real de gestos con la wacom y Síntesis de audio

Wacom Theremin

El Theremin es un instrumento inventado por Léon Theremin en 1918 que tiene la particularidad de que se toca con los gestos de las manos. Está considerado uno de los primeros instrumentos electrónicos, y su sonido sintético y característico se ha utilizado muchas veces para películas de ciencia ficción y efectos especiales.

En este proyecto se implementa la manera de tocar y el sonido de un theremin con un controlador poco convencional: una tableta gráfica Wacom de las que utilizan los diseñadores gráficos. Si sabes cómo se toca un theremin la implementación es evidente:  con el eje x cambias el tono (Pitch Bend en terminología MIDI; con el eje y cambias el volumen; y claro: apretar el lápiz produce el sonido de la nota (mensaje MIDI NoteOn) y levantar el lápiz apaga la nota (NoteOff). Además de la posición XY, la tecnología wacom proporciona otros sensores que dan información como es la presión y la inclinación. Aunque no se ha hecho en este proyecto, se podría haber asociado la presión y la inclinación a otros mensajes MIDI CC (Continuous Controller) com pueden ser la modulación (efecto de vibrato).

Se ha utilizado un sintetizador Roland JV-2080 para producir un sonido de Theremin, aunque no estoy muy contento con el resultado obtenido. Lo bueno del JV-2080 es que tiene un espacio de memoria para guardar los patch de usuari y muchos parámetros, osciladores y efectos para poder ir jugando si tienes suficiente tiempo. Y lo que es mejor del JV-2080 es que puedes configurar el pitch bend (variación del tono) con una amplitud muy grande, también configurable, cosa que normalmente no pasa en otros sintes (sobretodo los sintes software).

Una de las cosas que me ha gustado más del proyecto es la integración de la aplicación desarrollada en lenguaje C (hay un enlace para descargar el código más abajo) con Gimp (el editor de imágenes y fotos de referencia en el mundo Linux). Esto da pie a múltiples posibilidades y ideas para hacer proyectos que combinen Gimp con efectos sonoros y interactivos.

Evidentmente, la idea no es nueva, hay otra gente que ha hecho Theremins con wacom’s y otros controladores como la Wii, pero en el proyecto 50 Ways to Play Una Plata d’Enciam no podía faltar un Wacom Theremin hecho exclusivamente con herramientas de Código Libre.

Canción de cuna muy personal

Estos días estoy cantando a Pere y a María una canción de cuna que tiene un significado muy especial. Es una canción de cuna que le cantaba mi abuela Montserrat a mi padre, y es realmente muy original, no es para nada conocida. Mi abuela nació en una masía en La Guàrdia, en la subcomarca del Lluçanès (Cataluña), una zona con entidad propia entre Puigreig y Vic. Precisamente, todo el folklore de la zona lo documentó Josep M. Vilarmau, allá por los años 40 del s. XX, que era precisamente primo de mi abuela, además de colega del folklorista Joan Amades. Hizo una obra de referencia para estudiar las canciones de la comarca <: Folklore del Lluçanès, y esta canción de cuna, sin título, precisamente no está.

Es una canción muy sencilla y dulce, como han de ser las canciones para hacer dormir a los niños. Mi padre la ha arreglado para piano, plasmando esta dulzura y simplicidad armónica. Yo sólo la he transcrito con lilypond y la he grabado con un buen sonido de piano. Así pues, mi reconocimiento para mi abuela (al cielo esté), a mi padre, y a todo el patrimonio inmaterial que representa el folklore de las tierras catalanas. La letra (traducción del catalán):

El ángel del sueño tiene las alas blancas,
tiene el cabello dorado y el vestido de plata.
El ángel del sueño que del cielo desciende.

El ángel del sueño al niño acompaña,
le mece en la cuna y los ojitos les cierra.
El ángel del sueño le besa y le canta.

Lilypond es un sistema de edición musical muy completo y que produce unas partituras de gran calidad. Eso sí, es un poco complicado de utilizar, aunque hay mucha información disponible. Yo sou un firme partidario. He transcrito la partitura manuscrita a lilypond, y aquí puedes ver el resultado:

Cançó de Bressol (descarga)

Lilypond, además de salida pdf, también produce la salida midi. Este fichero midi lo he hecho sonar con el sinte fluidsynth, que puede funcionar en línea de comandos, y que he cargado con un buen sonido de piano. Así de simple:

$ fluidsynth -l -a jack -m alsa_seq -g 1 /var/soundfonts/Musica_Theoria_v2_GM.sf2 /home/joan/lilypond/canco_bressol_v3.midi

El sonido que produce el fluidsynth se ha grabado en Ardour (el DAW de referencia en el mundo Linux), y sin más, sin añadir ningún efecto, lo he convertido a wav (y a mp3 con lame). Aquí puedes ver el resultado.
Cançó de bressol by joanillo

Espero que en un futuro esta canción se pueda ir transmitiendo de generación en generación y que quede com un bien preciado en mi familia.

Toc de Castells (canción de los castillos humanos)

Encontré por Internet la partitura del Toc de Castells. No sé exactamente de qué colla es, pues veo que cada colla toca el Toc de Castells de una forma un poco diferente. No tengo una gralla (sería equivalente a la dulzaina, en casa no me dejan tener una), pero sí que conseguí un flabiol de gralla, que tiene sonido de flauta dulce pero la digitación es la misma que la de la gralla. De esta forma puedes practicar com si fuese la gralla pero sin molestar a los vecinos. En algunas escuelas utilizan el flabiol de gralla en vez de la flauta dulce.

Esta pequeña grabación me ha servido para practicar algunos temas que tenía pendientes: la caja y los redobles están hechos con Hydrogen (me costó encontrar información de cómo hacer los redobles, pero al final lo conseguí). La secuencia de Hydrogen está grabada directamente en Ardour (escogiendo una buena librería de sonidos de batería), y he tenido que aclararme con el tema del Transporte (Ardour hace de Time Master, y JACK e Hydrogen le siguen). Todo está grabado con Ardour, con cuatro pistas: caja, redoble, flabiol 1 y flabiol 2. También he aprendido a hacer diferentes tomas (takes, playlists) en Ardour, para así poder escoger la que queda mejor; y hacer un punch en alguna zona concreta si se cree que se puede mejorar. Por otra parte, me he olvidado por fin de hacer las conexions en el QJackCtl y he hecho todas las conexions en Ardour, mucho más práctico y rápido.

Como efectos hay un reverb y compresión, que dan profundidad a la grabación y creo que la mejoran (y de paso disimulan alguna imperfección en la interpretación). En definitiva, otra grabación hecha con herramientas libres (JACK, Hydrogen, Ardour, GNU/Linux). El software libre al servicio de la música tradicional.

Hay una entrada de los Castells en la wikipedia en español, pero no en inglés. Podría ser interesante que alguien del mundillo casteller hiciese una entrada en la wikipedia en inglés.

Toc de Castells by joanillo

¿Cuánto vale un servidor? 0 €? 90 €?

Estos días he tenido que cambiar el servidor que hospeda este blog, www.joanillo.org. Es un servidor Ubuntu, que sale a internet a través de una ADSL y un router domésticos.

El anterior servidor, que ha estado en funcionamiento ni más ni menos que 3 años, las 24 horas al día, era (más bien dicho, todavía es) un PIII con 512 KB de RAM que me encontré por la calle un buen día y le metí un Ubuntu 7.10. Durante tres años ha estado hospedando la wiki y un par de blogs, no exento de problemas, y es por esto que finalmente he tenido que cambiar el servidor. Los problemas que me han obligado al cambio básicamente son: el sistema había quedado con versiones del software antiguas, imposibles de actualizar debido a problemas de dependencias por el hicho de utilizar paquetes que habían quedado antiguos; sin espacio en el disco duro (cada vez se hacía más difícil hacder copias de seguridad); la wiki que hospeda ha estado atacada continuamente por spammers y robots.

Tenía el servidor de recambio esperando desde hacía unos meses, y lo que me ha hecho decidir finalmente a hacer el cambioha sido un susto que he tenido con el servidor Mysql (debido básicamente a tener el espacio de disco ocupado al 100%). Bien pues, ya tocaba hacer un cambio en el servidor. He pasado de un servidor que me costó 0 euros a otro que me costó 90 euros! ahora hace ya ocho meses.

Los objetivos que ha de cumplir este servidor son:

  • Con un servidor Apache, hospedar la wiki wiki.joanillo.org y el blog www.joanillo.org. Además, hospedar langtrainer.joanillo.org (gestiona mi vocabulario particular de inglés), fotos.joanillo.org (el repositorio familiar de fotos), http://www.jmquintana.com (la web de mi padre).
  • Hacer que todas estas webs sean públicas (los dominios joanillo.org y jmquintana.com son de propiedad, y una cuenta en dyndns.org puede hacer que mi router con IP dinámica sea visible públicamente).
  • Servicios de Mysql y SSH para conexión remota
  • Servidor de copias de seguridad de otras máquinas, y copia de seguridad a un disco NDAS.

Toda la documentación sobre la instalación y configuración del nuevo servidor están en la wiki: http://wiki.joanillo.org/index.php/Servidor_Pentium_IV_3GHz

Como se puede deducir, soy un gran defensor, a parte del software libre, del reciclaje de máquinas que en la mayoría de los casos se consideran obsoletas. Creo que un sistema bien configurado y mantenido, con un SO ligero, y con una monitorización de su rendimiento, puede tener unas prestaciones suficientes para conseguir sus tareas: en este caso ser un servidor Apache público, totalmente transparente para los posibles visitantes (que se pensarán que la página está hospedada en un hosting profesional).

Las ventajas de tener un servidor dedicado es que lo puedes tener configurado a tu medida, sin ninguna restricción de los paquetes a instalar, con procesos y scripts que trebajan en background. A modo de ejmplo, la página langtrainer.joanillo.org, que gestiona un vocabulari de inglés particular, es capaz de generar un fichero de audio que puedes descargar al smartphone y así aprender inglés en el tiempo libre. Todo esto gracias a la utilidad espeak (és una herramienta TTX-Text to Speech), y unos cuantos scripts que convierten un fichero de texto en un fichero de audio. Se puede consultar la documentación en http://wiki.joanillo.org/index.php/P%C3%A0gina_principal#Projecte_Langtrainer.

Como inconveniente podemos destacar el hecho de tener una máquina encendida las 24 horas del día (ahora bien, este inconveniente puede quedar minimizado si tenemos presente que, cuando estemos en fase de producción, no serán necesarios una pantalla, teclado y ratón; y también procuraremos tener una fuente de alimentación y ventiladores eficientes y poco ruidosos-que de momento no es mi caso).

Por tanto, como coste del servidor, a parte de los 90 € que me costó de segunda mano, hay que añadir el coste de la factura eléctrica: 24 h/día*365 días = 8760 horas x 250W = 2190 KWh x 0,142319 €/KWh = 311 €. (ostras! nunca había hecho este cálculo, y nunca consideré que tener un servidor en marcha las 24 horas tuviese un coste de 26 € al mes, que es una cantidad no-despreciable en unos momentos que todo el mundo está recortando por aquí y por allá).

En cualquier caso, la instalación, configuración y mantenimiento de un servidor dedicado ete da una experiencia muy válida de las tareas encomendadas a un administrador de sistemas, es una muy buena plataforma de aprendizaje en un contexto de producción pero que a la vez no es crítico (si el ordenador está fuera de servicio, el único perjudicado soy yo mismo, nadie me pedirá responsabilidad, sólo yo me la pediré… o mis alumnos, que se han acostumbrado a consultar la información directamente de la wiki). Por tanto, como administrador de sistemas, en el servidor se tendrá que dominar la configuración de los servidores Apache, MySQL, SSH, SAMBA; la realización de copias de seguridad automatizadas (cppias de ficheros, copias de mysql, copias totales, diferenciales y/o incrementales, procedimientos de restauración); instalación, configuración y mantenimiento de Mediawiki y WordPress; configuración del router; aspectos de seguridad: control de accesos, monitorización del servidor y de la red. En definitiva, programación de scripts para automatizar al màximo todas las tareas posibles, y sobretodo, documentar bien todos los pasos (aunque esté escrito en todos los libros, la experiencia nos demuestra que la buena documentación nos ahorra trabajo y males de cabeza en el futuro, aunque siempre resulta complicado transmitirlo a los alumnos).

Así pues, ya está a toda marcha mi nuevo flamante Pentium IV a 3GHz y 4GB de RAM, con un Ubuntu 10.04 LTS. Larga vida a los ordenadores reciclados! ¿Cuánto tiempo estará en funcionamiento? Las cosas que funcionan mejor no tocarlas… Ahoraa bien, teniendo en cuenta que la nueva versión LTS de Ubuntu será la 12.04 LTS (abril del 2012), y que para esta versión las actualizaciones se garantizan para 5 años, podría ser un buen momento para volver a empezar de cero en mayo del año próximo.