Posts RSS Comments RSS 28 Articoli e 6 Commenti fino ad ora

Post nella categoria 'Musica'

mod + x86_64 = crash

Questo titolo può apparire strano ai più, ma chi usa la libreria libmodplug (ad esempio chi usa un player basato su gstreamer, come totem o rhythmbox, oppure xmms, o ancora audacious) oltre a non sentire niente e a incappare in un colossale crash del player preferito, sa di cosa scrivo.

Perché ho l’impressione che qualcuno guarda con occhi bovini il nero testo, chiedendosi cosa è la musica in formato mod?
Ahimé, nato in un altro secolo, in un altro millennio… quando c’erano gli Amiga e i floppy da 5″ e un quarto (ci stavano ben 160 kB!) e i PC erano scaldabagni a 12 MHz (sì, ma 33 col turbo!) con 640 kB di RAM e dischi da 16 MB.
Caprettech che non siete altro! Fatevi un idea su The Mod Archive.

Dicevamo: il player va in crash a causa di un problema nella libreria libmodplug versione 0.8.7, solo sui sistemi a 64 bit.

Mentre Ubuntu pare avere aggiornato la libreria alla versione 0.8.8.1, che risolve il problema, per Fedora l’aggiornamento non è nemmeno in updates-testing (al momento in cui scrivo).
Poiché i tentativi di installare il pacchetto ricompilato dall’rpm sorgente preso da Rawhide falliscono miseramente (non ci ho nemmeno provato tanto, in realtà, a modificare il file spec), ecco un trucco per tornare a godere della meravigliosamente vintage collezione di musica.

Prima di tutto, serve scaricare la libreria da qui. Si può scaricare il sorgente, oppure il pacchetto precompilato che non si installerà a causa di problemi di dipendenze.
Partendo dal sorgente, sarà necessario installare tutte le sacrosante dipendenze e dare la solita sequenza magica ./configure --prefix=/usr --libdir=/usr/lib64 && make.
Preso il pacchetto, invece, si dovranno vedere i file contenuti (ad esempio con file-roller), oppure estrarli con rpm2cpio <nome_del_file.rpm> | cpio -idmv.

Quel che conta è arrivare ad avere il file libmodplug.so.1.0.0.
Bellamente disinteressati all’incoerentissimo numero di versione, copiamo la nuova libreria al posto della vecchia:

$ sudo cp libmodplug.so.1.0.0 /usr/lib64/libmodplug.so.0.0.0

oppure, per chi non ha configurato sudo, con un altrettanto efficace:

$ su
Password:
# cp libmodplug.so.1.0.0 /usr/lib64/libmodplug.so.0.0.0

Per vedere se la cosa è andata a buon fine, si può provare a lanciare:

$ cd
$ wget http://www.claudiotomasoni.it/files/audio/TheGunDance.xm
$ gst-launch-0.10 -v playbin uri=file:///home/<vostra home>/TheGunDance.xm

Il rimedio è un po’ brutale, però da me ha funzionato.
Alla prossima…

Creative Zen Nano Plus

Il Creative Zen Nano Plus è un piccolo lettore mp3-wma capace di registrare dal microfono incorporato o da un ingresso line-in e dotato di radio FM e euqlizzatore a 5 bande. Ha molti pregi, in primis quello di essere davvero leggero e poco ingombrante, e poi quello di avere una qualità musicale davvero molto buona (risposta da 20 Hz a 20 KHz con una distorsione armonica inferiore a 0,1% e rapporto segnale rumore pari a 90 dB).

Il piccolo lettore multimediale Zen Nano Plus prodotto da Creative

Sotto Linux viene normalmente montato come un dispositivo di memorizzazione di massa usb (cioè come una comune chiavetta), perciò è possibile utilizzare un file-manager per organizzare la collezione di brani sul lettore.

Questo lettorino utilizza il protocollo mtp (media transfer protocolo), quindi è possibile utilizzare anche applicazioni più sofisticate come rhythmbox (la mia preferita), gnomad2 o amarok per gestirne il contenuto.

Purtroppo spesso è necessario compiere alcune operazioni di configurazione, la prima delle quali è installare (se non ancora installate) le librerie libmtp con

$ sudo yum install libmtp

Assicuriamoci ora di far partire l’applicazione desiderata (rhythmbox nel mio caso) quando viene connesso un riproduttore portatile. In GNOME si può controllare questa funzionalità dall’utilità Unità e supporti rimovibili presente nel menu delle Preferenze:

Quando viene inserito un riproduttore portatile viene lanciato rhythmbox

Leggiamo, dopo avere connesso il dispositivo, l’identificativo del produttore e dell’apparecchio con il comando

$ /sbin/lsusb
Bus 004 Device 006: ID 041e:4139 Creative Technology, Ltd Zen Nano Plus

L’identificativo del produttore è 041e, mentre quello del prodotto è 4139.

All’interno della directory /etc/udev/rules.d cerchiamo se esistono regole per lo Zen Nano Plus: se l’esito del comando grep 4139 è vuoto significa che non ci sono istruzioni per udev su come gestire il dispositivo. Possiamo aggiungerle manualmente creando il file ZenNanoPlus.rules (o anche un nome più esplicito, come 60-ZenNanoPlus-libmtp.rules, che indica che il dispositivo deve essere gestito dalle librerie mtp) contenente:

# UDEV-style hotplug map for Creative Zen Nano Plus
# Put this file in /etc/udev/rules.d

SUBSYSTEM!="usb_device", ACTION!="add", GOTO="libmtp_rules_end"

# Creative Zen Nano Plus
SYSFS{idVendor}=="041e", SYSFS{idProduct}=="4139", SYMLINK+="libmtp-%k", MODE="666"

LABEL="libmtp_rules_end"

Se dopo avere aggiunto queste regole il riproduttore musicale scelto non viene lanciato automaticamente quando lo Zen Nano Plus viene connesso, significa che il demone hal non lo identifica come riproduttore audio portatile, ma come dispositivo di memorizzazione di massa. Per ovviare al problema spostiamoci nella directory /usr/share/hal/fdi/information/10freedesktop e osserviamo se esistono regole per il nostro lettorino:

$ cd /usr/share/hal/fdi/information/10freedesktop
$ grep 4139 *

Se il comando grep non restituisce nulla, allora è necessario creare una regola. All’interno di questa directory, con i privilegi di amministratore, creiamo il file 10-usb-music-players-libmtp-ZenNanoPlus.fdi contenente:

<?xml version="1.0" encoding="UTF-8"?>

<deviceinfo version="0.2">
  <device>
    <match key="info.category" string="storage">
      <!-- USB Mass Storage devices that are music players -->
      <match key="@storage.originating_device:info.subsystem" string="usb">
        <!-- Creative -->
        <match key="@storage.originating_device:usb.vendor_id" int="0x41e">
          <!-- Zen Nano Plus -->
          <match key="@storage.physical_device:usb.product_id" int="0x4139">
            <append key="info.capabilities" type="strlist">portable_audio_player</append>
            <merge key="info.category" type="string">portable_audio_player</merge>
            <merge key="portable_audio_player.type" type="string">generic</merge>
            <merge key="portable_audio_player.access_method" type="string">storage</merge>
            <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
            <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>
            <append key="portable_audio_player.output_formats" type="strlist">audio/x-wav</append>
          </match>
        </match>
      </match>
    </match>
  </device>
</deviceinfo>

A questo punto, dopo avere riavviato il demone hal con sudo /etc/init.d/haldaemon restart, quando lo Zen Nano Plus viene inserito, dovrebbe essere avviato automaticamente il riproduttore multimediale scelto e sul Desktop dovrebbe essere mostrata il dispositivo con l’icona di un lettore portatile associata.