SanDisk Sansa Clip Zip

http://www.sandisk.com/products/music-video-players/clip-zip/

La premessa è che questo gadget è arrivato ieri, quindi la presente recensione (che non escludo di aggiornare) riguarda più che altro il primo impatto.

Prime impressioni

Per il Sansa Clip Zip da 4GB e una scheda micro SD per espandere la memoria di 16GB ho pagato una sessantina di euro. Non è poco, ma non è nemmeno molto. Anzi, per qualcosa di qualità è difficile spendere meno di così. Il Sony Walkman in mio possesso lo pagai un 25-30 euro vari anni fa, ha una capacità di 1GB, è senza radio FM e legge solo MP3 e WAV.

Per una spesa doppia (3-4 anni dopo) invece abbiamo un lettore che legge praticamente ogni formato sul mercato (MP3, FLAC, AAC), ha una capacità venti volte maggiore, ed ha pure la radio FM.

Sulla carta pare una favola.

L'oggetto in sé

Beh, una volta tolta la confezione, l'impressione non è delle migliori. È tutta plastica e non pesa nulla (cosa che può essere vista come positiva). Ho qualche dubbio sulla durata dell'attacco delle cuffie. Cercherò di attaccare e staccarle il meno possibile, giusto per non metterlo troppo alla prova. Rispetto all'attacco metallico del Walkman non fa una grande impressione.

Il lettore è dotato di un microscopico schermo a colori LCD da 1 pollice e qualcosa. Il problema è che al sole non si legge un cazzo (mentre invece il display del Walkman è sempre leggibilissimo). Insomma, non mi pare una gran furbata. Farà chic, ma solo in negozio. Non è che un lettore così si tiene sempre sul comodino...

Le cuffie date in dotazione fanno pena e compassione. Suonano come dei kazoo. Non sapete che è un kazoo? Ok, let me google it for you

Il cavetto USB incluso nella confezione è inoltre cortissimo (10-15cm) e quindi piuttosto scomodo. Nulla che un hub non possa sistemare, comunque.

La navigazione nei menù è intuitiva (a meno di non essere all'aperto, per i motivi di cui sopra) e confortevole.

L'oggetto per sé

Fortunatamente lo scopo del lettore non è usarlo come martello o come fermaporta. L'aggeggio funziona, e funziona bene.

Ho effettuato 3 ore di ascolto con delle modeste cuffie in-ear (nulla di spaziale, ma non scadenti come quelle incluse nella confezione), prima all'aperto e poi al chiuso. Rispetto al Walkman la differenza si sente, eccome. Ho riascoltato pezzi conosciuti, e si percepisce un'indubbia maggiore ricchezza di tonalità e particolari. Ignoro se sia grazie all'hardware o al software (e il fatto che ho usato dei FLAC), ma di certo l'ascolto è impeccabile. Non è una sorpresa, comunque. Le recensioni dei Sansa Clip* sono unanimi nell'attribuire una buona qualità all'audio prodotto dal lettore.

Degno di nota è che tale ricchezza è ben percepibile anche a un volume medio-basso e la musica si gusta benissimo senza spararsela nei timpani.

Collegato al PC, il sistema operativo monta due partizioni, ossia la memoria interna e la scheda SD. Le directory sono già predisposte, basta solo copiarci i file dentro e staccare l'USB perché il lettore indicizzi i nuovi pezzi. L'operazione, anche per una ventina di album, dura una ventina di secondi, non di più.

Nella directory PODCASTS si possono aggiungere, scusate la ripetizione, i podcast. Ok, mi direte voi, i podcast sono file musicali come altri, solo in genere un po' più lunghi (da un'ora a quattro, in genere). Già. Però se si sospende l'ascolto e lo si riprende in un secondo momento, dopo aver ascoltato altri brani, il lettore chiede se riprendere al punto in cui si era interrotto, senza faticose (e dispendiose in termini di batteria) ricerche. Si noti bene che MOC (Music on Console) non ha opzioni del genere. Ottima e utile funzione, quindi.

C'è la possibilità di creare una playlist al volo (chiamata GoList). Il lettore comunque digerisce senza problemi le playlist .m3u, a patto di ricordare di usare percorsi relativi al file della playlist, non percorsi assoluti che magari puntano al filesystem locale.

Il firmware del dispositivo può essere sostituito con Rockbox. Esiste, ma è minimo, il rischio di far diventare il dispositivo un inutile fermacarte da 40€. Anzi, dato il peso del lettore non può servire nemmeno da fermacarte. Ad ogni modo, installare Rockbox è un piccolo rischio che vale la pena correre, perché si apre tutto un mondo nuovo. Il lettore con Rockbox riesce perfino a leggere file di testo (utile in caso di podcast con una lista delle tracce allegate). Si rimanda al sito ufficiale di Rockbox per rendersi conto del perché ne vale la pena.

Io ho installato Rockbox per mezzo dell'installer ufficiale (installa la versione di sviluppo) ed è andato tutto liscio :-) È comunque possibile avviare il lettore sul firmware originale premendo la freccia sinistra appena dopo schiacciato il pulsante d'accensione.

Durata batteria

Il costruttore dichiara 15 ore di musica mp3 a 128 kb/s. Peccato che la mia (modestissima) collezione sia in FLAC e mp3 a 320kb/s. 15 ore si rivelano quindi troppo ottimistiche. Non ho compiuto misurazioni, ma almeno 8 ore (come il Walkman) dovrebbe reggerle senza tanti problemi (a patto forse di non smanettare troppo con il maledetto schermo LCD).

Cuffie

Per una quarantina di euro ho abbinato il Sansa a delle cuffie Sennheiser HD-202 (niente di spettacolare, ma pur sempre di un'azienda rinomata) poiché quelle in-ear, oltre che essere super-economiche, cominciavano ad opprimermi. In rete circolano ottime recensioni a cui non saprei che aggiungere. Si sente benone (tutta un'altra musica rispetto a quelle che avevo), ecco tutto.

sansa + cuffie

Sincronizzazione dei file musicali

Scarica il file: sync.pl

Partendo dal presupposto che tengo la musica in ~/Sansa/MUSIC, e che il dispositivo è montato su /media/extsd, mi sono fatto questo script, che fa ben poco, ma produce la corretta stringa per invocare rsync. Controlla inoltre la disponibilità di spazio del file system di destinazione e il fatto che sia effettivamente un punto di montaggio.

Lo script va lanciato dalla directory ~/Sansa. Per esempio: ./sync.pl /media/extsd.

    #!/usr/bin/env perl
    # written by MelmothX, No copyright

    use strict;
    use warnings;
    use utf8;
    use File::Spec::Functions;

    my $target = $ARGV[0];
    my $musicdir = 'MUSIC';

    die "Missing argument\n" unless $target;
    die "Target not a dir\n" unless (-d $target);
    die "MUSIC not found" unless (-d $musicdir);

    # strip the slash, just to be sure
    $target =~ s!/*$!!;
    my $origin = ".";

    my ($avail, $ismounted) = check_fs($target);
    die "Something is not OK: $target doesn't look like a mountpoint\n" unless ($avail and $ismounted);
    unless (we_have_free_space($avail)) {
      print "Current dir cannot is larger than target, exiting\n";
      exit 2;
    }

    my @rsync = ('rsync',
                 '-rtLvh', # please note the L and the t
                 '--no-p', '--no-o', '--no-g', # no permission
                 '--modify-window', '1',
                 '--safe-links',
                 '--delete',
                 '--dry-run',
                 '--exclude="*.bmark"', '--exclude="*.m3u8"',
                 $musicdir, $target);

    print join(' ', @rsync), "\n";

    sub we_have_free_space {
      my $avail = shift;
      my $total;
      die "Can't fork: $!" unless defined(my $pid = open(KID, "-|"));
      if ($pid) {                   # parent
        while (<KID>) {
          if (m!^(\d+)\s+!) {
            $total = $1;
          }
        }
        close KID;  
      }
      else {
        my @command = ('du', '-L', '.'); # use -L to derefernce the symlinks
        exec @command
          or die "can't exec du: $!";
      }
      print "$avail > $total? ";
      if ($avail > $total) {
        print "yes!\n";
        return 1
      } else {
        return 0
      }
    }


    sub check_fs {
      my $target = shift;
      my ($free, $ismounted);
      die "Can't fork: $!" unless defined(my $pid = open(KID, "-|"));
      if ($pid) {                   # parent
        while (<KID>) {
          if (m![\w/]+\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)%\s+\Q$target\E/*!) {
            $free = $1;
            $ismounted = 1;
            last
          }
        }
        close KID;
      } else {
        my @command = ('df', '-P', $target);
        exec @command
          or die "can't exec df: $!";
      }
      return ($free, $ismounted);
    }