<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Mopidy-MPD-mpc</id>
	<title>Mopidy-MPD-mpc - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Mopidy-MPD-mpc"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Mopidy-MPD-mpc&amp;action=history"/>
	<updated>2026-08-30T11:07:28Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=Mopidy-MPD-mpc&amp;diff=252728&amp;oldid=prev</id>
		<title>Joan: /* mpc: cas pràctic per a la rockola */</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Mopidy-MPD-mpc&amp;diff=252728&amp;oldid=prev"/>
		<updated>2014-12-18T16:02:56Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;mpc: cas pràctic per a la rockola&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Introducció=&lt;br /&gt;
'''nota''': ja havia treballat amb mpd i mpc ara fa dos anys en el projecte de les estacions de ràdio de JAZZ:&lt;br /&gt;
*http://wiki.joanillo.org/index.php/Raspberry_Pi:_Internet_R%C3%A0dio&lt;br /&gt;
&lt;br /&gt;
'''Mopidy''' (https://www.mopidy.com/, https://docs.mopidy.com/en/latest/) is an extensible music server written in Python.&lt;br /&gt;
&lt;br /&gt;
Mopidy plays music from local disk, Spotify, SoundCloud, Google Play Music, and more. You edit the playlist from any phone, tablet, or computer using a range of MPD and web clients.&lt;br /&gt;
&lt;br /&gt;
És a dir, mopidy és el servidor (té una base de dades textual, gestiona les cançons, els tracklist, sap aturar i arrencar una canço, etc.). Per programar aplicacions que treballin contra el servidor puc plantejar-me clients normals (que utilitzaran MPD), o clients WEB.&lt;br /&gt;
&lt;br /&gt;
'''Mopidy-MPD''' (https://docs.mopidy.com/en/latest/ext/mpd/) is an extension that provides a full MPD server implementation to make Mopidy available to MPD clients. It is bundled with Mopidy and enabled by default.&lt;br /&gt;
&lt;br /&gt;
Finalment necessito clients. El client més senzilla treballa amb la consola i està escrit en C: '''mpc''' (http://www.musicpd.org/clients/mpc/). A solid, lightweight, simple mpd client, written in C (línia de comanda). mpc: A minimalist command line interface to MPD.&lt;br /&gt;
&lt;br /&gt;
Finalment, si tinc un client que funciona en línia de comanda, ha de ser fàcil integrar-ho amb altres aplicacions fent crides de sistema: system().&lt;br /&gt;
&lt;br /&gt;
Per fer el projecte del moble ''rockola'' (jukebox), necessito un servidor media player (que sàpiga gestionar una base de dades i tracklist), i un front-end. Com a servidor tinc mopidy, però necessito una interfície per poder programar aplicacions: mpd. Per tant, si soluciono el tema del servidor, només m'hauré de preocupar de fer el front-end.&lt;br /&gt;
&lt;br /&gt;
En aquesta entrada documentaré mopidy-mpd-mpc a Ubuntu. En el projecte real interessa implementar això en la RPi. Un altre tema que consideraré més endavant és que modpidy ja té una base de dades pròpia, i per tant no sé si quan implementi el meu front-end serà realment necessari una base de dades duplicada. (però aquest és un altre tema).&lt;br /&gt;
&lt;br /&gt;
=Instal.lació=&lt;br /&gt;
Instal.lació a Ubuntu:&lt;br /&gt;
*https://docs.mopidy.com/en/latest/installation/debian/#debian-install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add -&lt;br /&gt;
&lt;br /&gt;
Add the following to /etc/apt/sources.list, or if you have the directory /etc/apt/sources.list.d/, add it to a file called mopidy.list in that directory:&lt;br /&gt;
&lt;br /&gt;
# Mopidy APT archive&lt;br /&gt;
deb http://apt.mopidy.com/ stable main contrib non-free&lt;br /&gt;
deb-src http://apt.mopidy.com/ stable main contrib non-free&lt;br /&gt;
&lt;br /&gt;
For the lazy, you can simply run the following command to create /etc/apt/sources.list.d/mopidy.list:&lt;br /&gt;
&lt;br /&gt;
sudo wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/mopidy.list&lt;br /&gt;
&lt;br /&gt;
Install Mopidy and all dependencies:&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install mopidy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=Configuració=&lt;br /&gt;
*https://docs.mopidy.com/en/latest/config/&lt;br /&gt;
De moment no existeix el fitxer de configuració. El pot crear un mateix a ~/.config/mopidy/mopidy.conf, o executant la comanda ''mopidy'' es crearà.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mopidy&lt;br /&gt;
INFO     Starting Mopidy 0.19.4&lt;br /&gt;
INFO     Creating dir /home/joan/.local/share/mopidy&lt;br /&gt;
INFO     Creating dir /home/joan/.config/mopidy&lt;br /&gt;
INFO     Loading config from: builtin defaults, command line options&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ara ja puc editar manualment el fitxer de configuració.&lt;br /&gt;
&lt;br /&gt;
Altra informació que es veu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
INFO     Starting Mopidy core&lt;br /&gt;
INFO     Starting Mopidy frontends: HttpFrontend, MpdFrontend&lt;br /&gt;
INFO     HTTP server running at [::ffff:127.0.0.1]:6680&lt;br /&gt;
INFO     MPD server running at [::ffff:127.0.0.1]:6600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El servidor ja està esperant col.leccions, ja siguin clients web o de clients MPD.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
INFO     No local library metadata cache found at /home/joan/.local/share/mopidy/local/library.json.gz. Please run `mopidy local scan` to index your local music library. If you do not have a local music collection, you can disable the local backend to hide this message.&lt;br /&gt;
INFO     Loaded 0 local tracks using json&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Mirant el fitxer de configuració:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#media_dir = $XDG_MUSIC_DIR&lt;br /&gt;
#data_dir = $XDG_DATA_DIR/mopidy/local&lt;br /&gt;
#playlists_dir = $XDG_DATA_DIR/mopidy/local/playlists&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
queda clar que ''$XDG_DATA_DIR'' per defecte és: ''/home/joan/.local/share/'', que és on es guardarà per defecte la base de dades. Però primer hem d'escanejar la nostra col.lecció, i dir quin és el directori on tenim la col.lecció:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
media_dir = /home/joan/musica_rockola&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mopidy local scan&lt;br /&gt;
...&lt;br /&gt;
INFO     Found 15 tracks which need to be updated.&lt;br /&gt;
INFO     Scanning...&lt;br /&gt;
WARNING  Failed local:track:TXARANGO%20-%20Som%20Riu/CLOWNIA.pdf: La vostra instal·lació del GStreamer manca un connector.&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
INFO     Done scanning.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
No fer cas a l'últim missatge, és perquè hi ha un pdf que s'ha d'esborrar.&lt;br /&gt;
&lt;br /&gt;
Ara ja tinc la base de dades, i el directori on aniran les playlists:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ls /home/joan/.local/share/mopidy/local/&lt;br /&gt;
library.json.gz  playlists&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
I ja puc fer funcionar el servidor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mopidy &amp;amp;&lt;br /&gt;
...&lt;br /&gt;
INFO     HTTP server running at [::ffff:127.0.0.1]:6680&lt;br /&gt;
INFO     MPD server running at [::ffff:127.0.0.1]:6600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ara he d'instal.lar algun client per poder escoltar els fitxers.&lt;br /&gt;
==La base de dades==&lt;br /&gt;
Com hem comentat, la base de dades es troba, segons diu el fitxer de configuració, a ''$XDG_DATA_DIR/mopidy/local'' que és ''/home/joan/.local/share/mopidy/local''. Aquí dins es troba l'arxiu ''library.json.gz'', i també es troba la carpeta playlists on aniran a parar les playlists que gravem com a fitxer. Mirar el fitxer json veiem quina és l'estructura. Per a la primera cançó tenim:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;tracks&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;composers&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;__model__&amp;quot;: &amp;quot;Artist&amp;quot;,&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;Txarango&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;album&amp;quot;: {&lt;br /&gt;
        &amp;quot;__model__&amp;quot;: &amp;quot;Album&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;Som Riu&amp;quot;,&lt;br /&gt;
        &amp;quot;artists&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;__model__&amp;quot;: &amp;quot;Artist&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;Txarango&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        ]&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;__model__&amp;quot;: &amp;quot;Track&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Coraz\u00f3n viajero&amp;quot;,&lt;br /&gt;
      &amp;quot;uri&amp;quot;: &amp;quot;local:track:TXARANGO%20-%20Som%20Riu/10%20Coraz%C2%A2n%20viajero.mp3&amp;quot;,&lt;br /&gt;
      &amp;quot;length&amp;quot;: 230384,&lt;br /&gt;
      &amp;quot;last_modified&amp;quot;: 1394097908,&lt;br /&gt;
      &amp;quot;track_no&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;artists&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;__model__&amp;quot;: &amp;quot;Artist&amp;quot;,&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;Txarango&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;date&amp;quot;: &amp;quot;2014-01-01&amp;quot;,&lt;br /&gt;
      &amp;quot;bitrate&amp;quot;: 320000&lt;br /&gt;
    },&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Veiem que el root és ''tracks''. Per tant en definitiva és un array de tracks, cada track és un objecte, i s'opta per una definició del track el més general possible. Veiem que per cada track tenim un array de compositors, informació de l'album a que pertany (i l'album conté un array d'artistes), propietats del track, i un array d'artistes que conté el track. Per tant, és una definició molt completa.&lt;br /&gt;
&lt;br /&gt;
=mpc: Music Player Client=&lt;br /&gt;
*http://www.musicpd.org/clients/mpc/&lt;br /&gt;
És un client MPD, de consola, escrit en llenguatge C.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo apt-get install mpc&lt;br /&gt;
&lt;br /&gt;
$ man mpc&lt;br /&gt;
NAME&lt;br /&gt;
       mpc - Program for controlling Music Player Daemon (MPD)&lt;br /&gt;
&lt;br /&gt;
SYNOPSIS&lt;br /&gt;
       mpc [options] &amp;lt;command&amp;gt; [&amp;lt;arguments&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
DESCRIPTION&lt;br /&gt;
       mpc is a client for MPD, the Music Player Daemon.  mpc connects to a&lt;br /&gt;
       MPD and controls it according to commands and  arguments  passed  to&lt;br /&gt;
       it.   If no command is given, the current status is printed (same as&lt;br /&gt;
       'mpc status').&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Primeres proves:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mpc status&lt;br /&gt;
volume:100%   repeat: off   random: off   single: off   consume: off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El primer de tot és afegir cançons a la playlist:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       add &amp;lt;file&amp;gt;&lt;br /&gt;
              Adds a song from the music database to the playlist. Can also&lt;br /&gt;
              read input from pipes. Use &amp;quot;mpc ls |  mpc  add&amp;quot;  to  add  all&lt;br /&gt;
              files to the playlist.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mpc listall&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
no es veu res, cosa curiosa. I és que hi ha una mica de confusió. El fitxer de configuració de MPD està a ''/etc/mpd.conf'', i aquí és el lloc correcte per ficar la ruta de les cançons:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ joe /etc/mpd.conf&lt;br /&gt;
...&lt;br /&gt;
music_directory         &amp;quot;/home/joan/musica_rockola&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Reinicio mopidy, i ara sí:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mpc listall&lt;br /&gt;
local:track:TXARANGO%20-%20Som%20Riu/01%20Esperan%C2%87a.mp3&lt;br /&gt;
local:track:TXARANGO%20-%20Som%20Riu/02%20M%C2%A3sic%20de%20carrer.mp3&lt;br /&gt;
local:track:TXARANGO%20-%20Som%20Riu/03%20La%20vuelta%20al%20mundo.mp3&lt;br /&gt;
local:track:TXARANGO%20-%20Som%20Riu/04%20Compta%20amb%20mi.mp3&lt;br /&gt;
local:track:TXARANGO%20-%20Som%20Riu/05%20El%20meu%20poble.mp3&lt;br /&gt;
local:track:TXARANGO%20-%20Som%20Riu/06%20Alegre%20i%20encantada.mp3&lt;br /&gt;
local:track:TXARANGO%20-%20Som%20Riu/07%20Som%20un%20riu.mp3&lt;br /&gt;
local:track:TXARANGO%20-%20Som%20Riu/08%20Governant.mp3&lt;br /&gt;
local:track:TXARANGO%20-%20Som%20Riu/09%20Batega.mp3&lt;br /&gt;
local:track:TXARANGO%20-%20Som%20Riu/10%20Coraz%C2%A2n%20viajero.mp3&lt;br /&gt;
local:track:TXARANGO%20-%20Som%20Riu/11%20Camp%20de%20batalla.mp3&lt;br /&gt;
local:track:TXARANGO%20-%20Som%20Riu/12%20Com%20dues%20gotes%20d%27aigua.mp3&lt;br /&gt;
local:track:TXARANGO%20-%20Som%20Riu/13%20Tant%20de%20bo.mp3&lt;br /&gt;
local:track:TXARANGO%20-%20Som%20Riu/14%20No%20t%27adormis.mp3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Afegeixo una cançó i la faig sonar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mpc add local:track:TXARANGO%20-%20Som%20Riu/01%20Esperan%C2%87a.mp3&lt;br /&gt;
&lt;br /&gt;
$ mpc ls&lt;br /&gt;
Local media&lt;br /&gt;
&lt;br /&gt;
$ mpc playlist&lt;br /&gt;
Txarango - Esperança&lt;br /&gt;
&lt;br /&gt;
$ mpc play&lt;br /&gt;
Txarango - Esperança&lt;br /&gt;
[playing] #1/1   0:00/3:38 (0%)&lt;br /&gt;
volume:100%   repeat: off   random: off   single: off   consume: off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Afegim totes les cançons a la playlist:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mpc ls |  mpc  add&lt;br /&gt;
$ mpc playlist&lt;br /&gt;
Txarango - Esperança&lt;br /&gt;
Txarango - Esperança&lt;br /&gt;
Txarango - Músic de carrer&lt;br /&gt;
Txarango - La vuelta al mundo&lt;br /&gt;
Txarango - Compta amb mi&lt;br /&gt;
Txarango - El meu poble&lt;br /&gt;
Txarango - Alegre i encantada&lt;br /&gt;
Txarango - Som un riu&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
i esborrem la playlist:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mpc clear&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Per mostrar la cançó que està sonant en aquests moments:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mpc current&lt;br /&gt;
Txarango - Esperança&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tinc una playlist amb dues cançons.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mpc playlist&lt;br /&gt;
Txarango - Esperança&lt;br /&gt;
Txarango - Tant de bo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vull eliminar una cançó de la playlist, he de fer ''del'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
del &amp;lt;songpos&amp;gt; Removes a playlist number from the playlist.  Can  also  read&lt;br /&gt;
              input from pipes (0 deletes the current playing song).&lt;br /&gt;
&lt;br /&gt;
$ mpc del 1&lt;br /&gt;
&lt;br /&gt;
$ mpc playlist&lt;br /&gt;
Txarango - Tant de bo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
També hi ha eines per cercar per tag (''find'', ''search'', ''findadd'', ''list'')&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mpc list album&lt;br /&gt;
Som Riu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==mpc: cas pràctic per a la rockola==&lt;br /&gt;
Es tracta de simular el funcionament de la rockola. Quan poses una moneda, tens dos crèdits i pots escollir dues cançons. Quan esculls la cançó, va a la cua de la playlist (només hi ha una playlist). Ha d'haver-hi un mètode de saber quan una canço s'ha acabat, i retirar-la de la playlist.&lt;br /&gt;
&lt;br /&gt;
Pot ser que una persona posi una moneda mentre està sonant la música. No hi ha problema: les cançons que selecciones s'afegeixen a la playlist.&lt;br /&gt;
&lt;br /&gt;
Per saber quan una cançó acaba, s'ha d'explorar la comanda&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mpc idle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que espera que hi hagi un event, com ara acabar una cançó (TBD).&lt;br /&gt;
&lt;br /&gt;
Amb tota aquesta informació, es pot fer un joc de proves que simuli la rockola, simulant una moneda amb un scanf.&lt;br /&gt;
&lt;br /&gt;
'''single mode i consume mode''':&lt;br /&gt;
&lt;br /&gt;
The 'single' mode plays song only once, or repeat it if the 'repeat' mode is&lt;br /&gt;
enabled.&lt;br /&gt;
&lt;br /&gt;
I also implemented the 'consume' mode, which deletes each played song. Patches&lt;br /&gt;
on mpd, libmpdclient and ncmpc aren't pushed on master repository yet.&lt;br /&gt;
&lt;br /&gt;
Efectivament, el mode ''consume on'' funciona. Quan acaba de reproduir-se una cançó, la cançó s'esborra de la playlist. Si tenia 4 cançons, ja només en queden tres.&lt;br /&gt;
=Simulació rockola=&lt;br /&gt;
Es tracta de simular el comportament de la '''rockola'''. S'engega la màquina i la playlist està a 0. Es fica una moneda=2 crèdits, i puc escollir dues cançons que s'afegeixen a la playlist, i comença a sonar. Ve una altra persona i afegeix dues cançons més, que s'afegeixen a la cua de la playlist. Quan una cançó acaba, desapareix de la playlist (mode consume on). No hi ha cap problema en què es repeteixi una canço. Qualsevol cançó que faig ''add'' s'afegeix a la cua.&lt;br /&gt;
&lt;br /&gt;
Amb '''mpc idle''' i sobretot '''mpc idleloop''' tinc la possibiltiat de capturar els events de quan una cançó canvia. Ara bé, a mi m'interessa captar l'event en un programa C, exactament igual que:&lt;br /&gt;
*https://bbs.archlinux.org/viewtopic.php?id=75518&lt;br /&gt;
i per sort l'exemple en llenguatge C funciona perfectament:&lt;br /&gt;
&lt;br /&gt;
'''simulacio_rocola_v1.c''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// https://bbs.archlinux.org/viewtopic.php?id=75518&lt;br /&gt;
// gcc prova_v1.c -o prova_v1 -lmpd -I/usr/include/libmpd-1.0/libmpd/&lt;br /&gt;
// $ sudo apt-get install libmpd-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;libmpd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;debug_printf.h&amp;gt;&lt;br /&gt;
#define RED &amp;quot;\x1b[31;01m&amp;quot;&lt;br /&gt;
#define DARKRED &amp;quot;\x1b[31;06m&amp;quot;&lt;br /&gt;
#define RESET &amp;quot;\x1b[0m&amp;quot;&lt;br /&gt;
#define GREEN &amp;quot;\x1b[32;06m&amp;quot;&lt;br /&gt;
#define YELLOW &amp;quot;\x1b[33;06m&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void status_changed(MpdObj *mi, ChangedStatusType what)&lt;br /&gt;
{&lt;br /&gt;
        if(what&amp;amp;MPD_CST_SONGID)&lt;br /&gt;
        {&lt;br /&gt;
                mpd_Song *song = mpd_playlist_get_current_song(mi);&lt;br /&gt;
                if(song)&lt;br /&gt;
                {&lt;br /&gt;
                        printf(GREEN&amp;quot;Song:&amp;quot;RESET&amp;quot; %s - %s\n&amp;quot;, song-&amp;gt;artist, song-&amp;gt;title);&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
        int run = 1, iport = 6600;&lt;br /&gt;
        char *hostname = getenv(&amp;quot;MPD_HOST&amp;quot;);&lt;br /&gt;
        char *port = getenv(&amp;quot;MPD_PORT&amp;quot;);&lt;br /&gt;
        char *password = getenv(&amp;quot;MPD_PASSWORD&amp;quot;);&lt;br /&gt;
        MpdObj *obj = NULL;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        if(!hostname) {&lt;br /&gt;
                hostname = &amp;quot;localhost&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        if(port){&lt;br /&gt;
                iport = atoi(port);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        obj = mpd_new(hostname, iport,password);&lt;br /&gt;
&lt;br /&gt;
        mpd_signal_connect_status_changed(obj,(StatusChangedCallback)status_changed, NULL);&lt;br /&gt;
        mpd_set_connection_timeout(obj, 10);&lt;br /&gt;
&lt;br /&gt;
        if(!mpd_connect(obj))&lt;br /&gt;
        {&lt;br /&gt;
                mpd_send_password(obj);&lt;br /&gt;
                do{&lt;br /&gt;
                       &lt;br /&gt;
&lt;br /&gt;
                        mpd_status_update(obj);&lt;br /&gt;
                }while(!usleep(100000) &amp;amp;&amp;amp;  run);&lt;br /&gt;
        }&lt;br /&gt;
        return 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Per compilar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ gcc simulacio_rockola_v1.c -o simulacio_rockola_v1 -lmpd -I/usr/include/libmpd-1.0/libmpd/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
comprovar que existeix la llibreria libmpd a /usr/include/libmpd-1.0/libmpd/&lt;br /&gt;
&lt;br /&gt;
Si no hi és, s'ha d'instal.lar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo apt-get install libmpd-dev&lt;br /&gt;
&lt;br /&gt;
$ ls /usr/include/libmpd-1.0/libmpd/&lt;br /&gt;
debug_printf.h     libmpd.h           libmpd-playlist.h  libmpd-strfsong.h&lt;br /&gt;
libmpdclient.h     libmpd-internal.h  libmpd-status.h    libmpd-version.h&lt;br /&gt;
libmpd-database.h  libmpd-player.h    libmpd-sticker.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
cada vegada que canvia una cançó rebo una notificació:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./simulacio_rockola_v1 &lt;br /&gt;
Song: Txarango - Camp de batalla&lt;br /&gt;
Song: Txarango - Corazón viajero&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Mopidy a la RPi=&lt;br /&gt;
*https://docs.mopidy.com/en/latest/installation/raspberrypi/&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>