Archivo de la categoría: Jukebox

Jukebox/Rockola inspirada en una Seeburg Wallbox

Todavía no tengo acabada la que tiene que ser mi rockola original, con más de 2000 canciones, front-end, un sonido potente y efectos luminosos. Mientras tanto, me ha surgido la posibilidad de desarrollar rápidmente una rockola mínima y bonita. La fuente de inspiración son las Seeburg Wallbox, pensada com dice su nombre para colgarse de la paree. Puedes ver el resultado en la foto, estoy satisfecho de como ha quedado, aunque al final no se parece en nada a una Seeburg Wallbox.

La rockola consta de 6 bancos de canciones (1.Baladas; 2.Pop Rock Español; 3.Pop Rock; 4.Rock & Roll, R&B-Soul; 5.Heavy Metal; 6.Catalana), y cada banco son 36 canciones. Esto hace un total de 216 canciones, que he intentado que sean lo más representativas de cada categoría. La elección de Baladas (Julio Iglesias, Pantoja,…) o de los grupos de pop español de los años 80 (Mecano, etc) es porque me imagino estas rockolas funcionando en un bar cutre de los años 80. Ya se sabe, cuando hago un proyecto me meto en la piel del proyecto a fondo… Tiene un monedero que acepta monedas de 20 cts de euro, un led indicador, y 12 botones de madera, nada de plástico. Sin pantalla. Los altavoces son normales de ordenador, por tanto no cabe esperar ni potencia ni buena calidad en este primer prototipo. En cualquier caso es interesante una salida AUX de audio para conectar un amplificador potente.

El mueble está hecho en madera de pino barnizada. Las dimensiones son 26 cm de ancho por 38 cm de alto, y la idea es tenerlo colgado de la pared. Dentro tiene una Raspberry Pi 2 y con una tarjeta de 8Gb hay suficiente para el sistema operativo, la aplicación y las 216 canciones.

Como no hay pantalla, el LED indicador es la única fuente de comunicación con el usuario. Hay 3 modos: LED intermitente, quiere decir que no suena ninguna canción y que la rockola está esperando una moneda (una moneda, dos cancioness); LED encendido, quiere decir que hemos de introducir el código de la canción (con el formato BANCO-LETRA-NÚMERO); LED apagado, está sonando una canción y hemos gastado todos los créditos (las canciones pendientes de sonar están en la cola).

Los botones están conectados directamente a los pines GPIO, y el LED también. Para cambiar el estado del LED la aplicación ejecuta un script Python que es el que se encarga de encendre y apagar el LED.

Por si a alguien le interesa, aquí va el código fuente (las canciones escogidas están dentro del código fuente).

Efectos de luz para la rockola

La rockola ha estado mucho tiempo en stand-by, pero para este otoño ya estará acabada. Finalmente los efectos de luz los haré llamando a un script python des de la aplicación. La idea es que para cada canción cambiará el efecto de luz. El script python consume menos del 1% de CPU, y por tanto no representa ningún problema. Como utilizo el bus I2C, sólo ocupa dos pins de la Raspberry: SCL y SDL. El chip MCP23017 tiene dos bancos, y por tanto puedo redireccionar 16 bits, que son 16 leds. Esto va perfecto porque el mueble tendrá 15 módulos led, y después habrá otro módulo que hará intermitencias para recordar que hay que poner una moneda.

En el video se muestran 16 efectos diferentes: varias modalidades de led chaser, lluvia, intermitencia, zig-zag,… En la máquina real los 16 bits del xip MCP23017 activarán 16 módulos led, que se componen de un transistor y 3 led cada módulo, y así tengo unos módulos muy luminosos. A ver si acabo esta rockola (el proyecto está en http://wiki.joanillo.org/index.php/Rockola-Gramola-Jukebox), porque ara ya estoy pensando en otra modalidad de rockola que será pequeña y mona, sin pantalla.

Monedero electrónico para la rockola

Para hacer este monedero electrónico he seguido los planos del siguiente enlace:

Intenté ser fiel al artículo, cuando todavía no tenía los micro-switches de palanca. Pero ahora que ya los tengo, he hecho una simplificación. De entrada, utilizo madera en vez de metacrilato, que es más fácil de trabajar.

Este monedero es muy simple: no detecta el tipo de moneda ni su valor. Sencillamente es un interruptor on/off, y por tanto se puede engañar el monedero con cualquier ficha. Pero tanto da, pues no tendrá de momento un uso comercial.

El software para la rockola va tomando forma

He avanzado bastante en la parte software de la Rockola. Consta de os partes: la primera es un menú, y la segunda es el front-end propiamente dicho.
En el menú se puede escoger la colección de música que se quiere escuchar (Rock, Pop, Salsa, etc.), y se puede filtrar por década (70s, 80s, etc) y por licencia (toda la música o sólo la de dominio público). En cada momento puedes ver el número de canciones que serán seleccionadas.
Además, hay diferentes opciones relacionadas con la máquina hardware que se está construyendo. Por ejemplo: Coin Acceptor habilita o deshabilita tener que poner las monedas para escuchar las canciones; Piped music habilita el hecho de que suene un hilo musical si hace rato que no hay música en la cola de la playlist; Efectos de luz habilita o deshabilita los leds que harán efectos con motivos decorativos; Enable Exit habilita o no que el usuario pueda volver al menú desd el front-end.
Una vez seleccionada una colección podemos ir a la Rockola, que lanza el front-end propiamente dicho. El front-end intenta ser fiel a los modelos clásics de Rockola. Se trata de ir rellenando las etiquetas de papel con las canciones. Cada etiqueta consta de un grupo y de dos canciones. La distribución de las etiquetas es de manera que los grupos queden bastante mezclados y que haya algunas etiquetas medio vacías con una sola canción. En cada pantalla caben 64 canciones, y se puede navegar por las diferentes pantallas.
El front-end gestiona los créditos de que se dispone (una moneda son dos créditos, que dan derecho a dos canciones). La manera de seleccionar una canción es bastante intuitiva. Se dispone de una pequeña pantalla con información de la canción seleccionada, y evidentmente se gestiona la playlist que controla las canciones que están a la espera de ser escuchadas. Tal como está avanzado ahora el proyecto ya se pueden escuchar las canciones. Funciona!
En definitiva, el software, formado por el menú y el front-end, está pensado para integrarse en una máquina con tan solo tres botones (izquierda, derecha y Enter), que ha de cumplir con el requisito de que sea fácil y claro de operar, sin mantenimiento.
Lo que de moment no resulta tan fácil es meter todos los ficheros MP3 en el sistema. Es bastante laborioso. Primero de todo hemos de disponer de unos ficheros mp3 que tengan los tags ID3 rellenados y con la información correcta. Si no es el caso, se ha de actualizar esta información. Se han de leer los tags de los ficheros mp3 y actualizar la base de datos. Se ha de decidir, para las canciones que se quiere incorporar, en qué colecciones saldrán. Se genera un fichero máster con todas las canciones de la base de datos y un fichero de configuración que lleva el recuento del número de canciones clasificado por colección y por década. Hay una serie de scripts que ayudan y automatizan todo el proceso, pero en definitiva si se quiere tener una base de datos de calidad el proceso no es fácil, aunque hay margen para mejorar y automatizar.
Un tema a destacar de estas dos piezas de software es que la geometría reside en ficheros de configuración, de manera que ha de ser fácilmente adaptable a diferentes formatos de monitor. Además, el código se ha compilado tanto en un portátil como en la Raspberry Pi (pues esta plataforma será el motor de la Rockola real que se está construyendo).
En resumen, la parte software ya va tomando forma y no tardaré mucho en hacer un video demostrativo. Paralelamente el mueble también va tomando forma, y espero no tardar demasiado en ver este proyecto de la Rockola finalizado.
Cuando tenga el software acabado publicaré un enlace para descargar el código fuente. De todas maneras este proyecto, programado en C++, se ha escrito de un tirón y de momento no quedará muy bien documentado.