Pagine

12 gennaio 2011

[Guida] Da mp3 a m4r: fare suonerie per l'iPhone con linux

Dite la verità, quante volte vi siete chiesti perché se l'iPhone può suonare gli mp3, allora perché non si possono usare gli stessi brani direttamente anche come suoneria per le chiamate in ingresso? Purtroppo non è così: gli mp3 non possono essere utilizzati direttamente come suonerie, ma devono necessariamente essere convertiti in un formato differente (AAC), avere una durata massima di 30 secondi e aver m4r come estensione del file.

Se siete utenti windows e iTunes allora state leggendo la guida sbagliata e non vi faccio perdere ulteriormente tempo. Qui facciamo le cose con linux, se volete sapere come fare con windows allora vi consiglio di prendere visione di quest'altra guida.

La presente guida si basa su Ubuntu 10.10, ma può essere adattata da un utente mediamente esperto a qualunque altra distribuzione. Iniziamo con il sommario:

  1. Credits
  2. Preparativi
  3. Prepariamo il file mp3 
  4. Convertiamo da mp3 a m4r
  5. Trasferiamo sull'iPhone e modifichiamo Ringtones.plist
  6. Riavviamo l'iPhone e selezioniamo la suoneria



Credits

L'idea dietro a questa guida non è mia e ci tengo a dirlo. L'ho presa in prestito, leggermente modificata e, ovviamente tradotta in italiano, da questo meraviglioso How2s

Cosa ci serve e cosa dobbiamo installare

Prima di cominciare diamo un'occhiata a quello che ci serve, tralasciando le cose ovvie tipo un computer con linux, un iPhone (va bene anche NON jailbreak) e il file mp3 che vogliamo trasformare in suoneria. Tutti questi software esistono già impacchettati quindi non dobbiamo compilare nulla.
  • Libreria di comunicazione con l'iPhone. [libimobiledevice] E' una libreria che ci permette di comunicare con il nostro iPhone.  Se volete maggiori dettagli su come installarla li trovate in una guida precedente.
  • Editor di file musicali. [Audacity] Ce ne sono svariati, io mi trovo bene con Audacity che, oltre ad essere Open Source, è anche multipiattaforma. Scegliete voi quello che preferite. 
  • Librerie per la manipolazione dei file audio. In particolare mplayer, libmp3lame, ffmpeg, faac e id3v2
  • Un editor di testo. Lo so è una banalità, scegliete voi quale usare (emacs, kate, gedit...)

Prepariamo il file mp3

Una volta finito di installare tutto possiamo cominciare e il nostro primo passo sarà estrarre dal file mp3 che vogliamo trasformare in suoneria un segmento lungo al più 30 secondi. Per fare questo utilizziamo Audacity.

Nonostante la sua grafica non sia esattamente all'ultima moda, il suo utilizzo è estremamente intuitivo. Come prima cosa apriamo il file mp3, se volete potete usare questo come esempio, che ci apparirà come una traccia stereo, come nell'immagine qui sotto.

Selezionate al più 30 secondi della traccia originale
Non sto a spiegarvi nel dettaglio cosa dovete fare, anche perché ognuno ha il suo stile e il suo approccio, fate un po' di prove per vedere quali sono i 30 secondi migliori. Quando avete individuato la sezione che volete tenere, cliccate sul punto di inizio e trascinate fino alla fine; quindi premete ctrl+t per eliminare tutto il resto. Ora vi consiglio di selezionare il primo secondo circa di brano e quindi di applicarvi l'effetto "Fade in", che trovate ovviamente nel menu Effetti. Ripetete l'operazione sugli ultimi due o tre secondi di traccia applicando però l'effetto "Fade out", così facendo eviterete di avere o un inizio o una fine troppo brusca. Se la vostra selezione non è all'inizio del brano, dovrete trascinarla utilizzando il puntatore di traslazione temporale, quello che è fatto come una doppia freccia orizzontale.

Abbiamo quasi finito con Audacity, non ci resta che selezionare tutto il brano e andare a vedere la sua lunghezza totale. Per farlo utilizziamo il pannello in basso, selezioniamo l'opzione lunghezza (length in inglese) e ci assicuriamo che il display sia settato in "hh:mm:ss + milliseconds". Dovremmo trovare un numero inferiore a 30000 (ovvero 30 secondi) che dovete appuntarvi da qualche parte perché ci servirà in seguito.

Prendiamo nota della durata complessiva dello
spezzone. Nel caso dell'immagine qui sopra è
di 29912 ms


Ora non ci resta che salvare, anzi esportare il nostro lavoro. Prima di farlo dobbiamo verificare che Audacity abbia trovato le librerie di codifica mp3; clicchiamo su Modifica -> Preferenze, dalla colonna di sinistra scegliamo librerie. Se ci dice che la libreria Lame 3 non è stata trovata, cliccate con fede su "trova" e vedrete che la troverà all'istante.

Assicuratevi che la libreria LAME sia stata
rilevata correttamente
Procediamo con l'esportazione cliccando su File -> Esporta e scegliamo come formato (MP3) Lame. Se vogliamo possiamo aggiungere dei tag per identificare titolo, autore eccetera. Non preoccupatevi se l'esportazione impiega un po' di tempo!

Convertiamo da mp3 a m4r

Adesso dobbiamo passare da mp3 a m4r. Per farlo potremmo utilizzare direttamente ffmpeg, ma purtroppo questo codec è ancora sperimentale, quindi facciamo un doppio salto: da mp3 a wave e quindi in aac. Sembra molto difficile, ma il seguente script lo eseguira in solo colpo.


#!/bin/bash
# Current version by Hilbert 2011
# Original version by Azakus 2007
# Modified to take input and output file names
# Requires mplayer, faac and id3v2
echo "Dumping mp3 to wav"

mp3file=$1
m4afile=$2

tmpwave="temp.wav"

mplayer -vo null -vc null -ao pcm:fast:file=$tmpwave $mp3file
echo "Converting id3v1 tags to id3v2 for easier transition to m4a tags" 
id3v2 -C $mp3file
#"Coverting id3 tag from mp3 to m4a tag" --requires id3v2 tags.
TITLE="`id3v2 -l $OUT | grep TIT2 | awk '{ORS=" "}  \
       {for (i = 4; i <= NF; i++) print $i}'`"
ARTIST="`id3v2 -l $OUT | grep TPE1 | awk '{ORS=" "} \
       {for (i = 4; i <= NF; i++) print $i}'`"
ALBUM="`id3v2 -l $OUT | grep TALB | awk '{ORS=" "} \
       {for (i = 4; i <= NF; i++) print $i}'`"
TRACK="`id3v2 -l $OUT | grep TRCK | awk '{ORS=" "} \
       {for (i = 6; i <= NF; i++) print $i}'`"
YEAR="`id3v2 -l $OUT | grep TYER | awk '{ORS=" "} \
       {for (i = 3; i <= NF; i++) print $i}'`"

#Converting from wave to aac and adding the tags
faac -b 128 -c 44100 -w --title "$TITLE" --artist "$ARTIST"  \
            --year "$YEAR" --album "$ALBUM" --track "$TRACK" \
            -o $m4afile $tmpwave 

#Remove temporary wave file
rm $tmpwave
echo "AAC transcode complete!"

Lo script potete scaricarlo direttamente da qui. Una volta scaricato aprite un terminale ed eseguite i comandi seguenti:


cd dir_dove_ho_scaricato_mp32aac
chmod +x mp32aac
sudo mv mp32aac /usr/local
mp32aac percorso/file.mp3 percorso/file.m4r

  1. Il primo comando serve per spostarsi nella directory dove avete salvato lo script che avete scaricato da qui
  2. Il secondo rende lo script eseguibile
  3. Il terzo copia lo script in una cartella di sistema contenuta nel path degli eseguibili. Vi verrà chiesta la vostra password.
  4. Il quarto finalmente esegue la conversione. Notate che dovete passare due parametri, ovvero il nome del file mp3 contente la vostra selezione e il nome che volete dare al file di uscita. Notate inoltre che abbiamo già impostato l'estensione a m4r esattamente come voluta dall'iPhone.

Trasferiamo sull'iPhone e modifichiamo il plist

Il prossimo passo è trasferire la nostra suoneria in m4r sull'amato iPhone. Colleghiamolo e sfogliamolo da Nautilus. Entriamo nella directory iTunes_Controls/Ringtones e copiamoci il file che chiameremo suoneria.m4r.

Siamo quasi alla fine, adesso andiamo nella directory iTunes_Controls/iTunes e apriamo in file Ringtones.plist. Questo contiene chiavi xml e se non avete altre suonerie ad hoc, dovrebbe essere più o meno così:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>Ringtones</key>
 <dict>
 </dict>
</dict>
</plist>

Quello che dovete fare è editarlo aggiungendo alcune righe di xml subito dopo la linea 6. Il file finale dovrebbe risultare come il seguente:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Ringtones</key>
    <dict>
        <key>suoneria.m4r</key>
        <dict>
            <key>GUID</key><string>148F52CB21CF093B</string>
            <key>Name</key><string>La mia prima suoneria</string>
            <key>Total Time</key><integer>29912</integer>
        </dict>
    </dict>
</dict>
</plist>


Ovviamente dovete personalizzare il contenuto di queste righe aggiuntive secondo lo schema seguente
  • suoneria.m4r E' il nome del file che avete caricato in iTunes_Controls/Ringtones
  • 148F52CB21CF093B. E' una stringa esadecimale (quindi può contenere i numeri dallo 0 al 9 e le lettere dalla A alla F). Rappresenta un codice di identificazione specifica di quella suoneria, quindi non ci possono essere due suonerie con lo stesso codice. Se quella che state mettendo è la prima suoneria, potete lasciare questo numero, altrimenti cambiatene uno a caso.
  • La mia prima suoneria. E' il nome con cui l'iPhone chiamerà la vostra suoneria ad hoc. Scegliete quello che vi sembra più opportuno.
  • 29912. E' la durata totale in millisecondi del brano. Vi ricordate che vi avevo detto di annotare questo numero prima di uscire da Audacity? Ecco ora è arrivato il momento di usarlo.
Se volete aggiungere un'altra suoneria, copiate queste righe che avete aggiunto sempre subito dopo la riga 6.

Riavviamo l'iPhone e selezioniamo la suoneria

Mi raccomando, questo è l'ultimo passaggio, non dimenticatevi di farlo, altrimenti la vostra non sarà utilizzabile. Dopo averlo riavviato, toccate Impostazioni, quindi Suoni, Suonerie. Vedrete con vostro grande giubilo, la vostra nuova e fiammante suoneria. Capisco che, specialmente quest'ultimo passaggio, potrebbe risultare piuttosto laborioso e macchinoso, ma come dice il proverbio: no pain, no gain!

Ps. Se volete, potete scaricare cliccando qui la suoneria che ho creato mentre stavo preparando questa guida, oppure potete ascoltare l'mp3 da cui l'ho generata.

Chiunque può lasciare commenti su questo blog, ammesso che vengano rispettate due regole fondamentali: la buona educazione e il rispetto per gli altri.

Per commentare potete utilizzare diversi modi di autenticazione, da Google a Facebook e Twitter se non volete farvi un account su Disqus che resta sempre la nostra scelta consigliata.

Potete utilizzare tag HTML <b>, <i> e <a> per mettere in grassetto, in corsivo il testo ed inserire link ipertestuali come spiegato in questo tutorial. Per aggiungere un'immagine potete trascinarla dal vostro pc sopra lo spazio commenti.

A questo indirizzo trovate indicazioni su come ricevere notifiche via email sui nuovi commenti pubblicati.

30 commenti:

  1. Ormai sei diventato molto esperto con queste fantastiche guide e continuare a dirti bravo e che saranno utilissime a tanta gente è davvero ripetitivo. :)

    Ciao Toto.

    :)))

    RispondiElimina
  2. in realtà è stata per colpa di una suoneria che mi è toccato fare tutto questo macello. Infatti mia moglie voleva a tutti i costi che le facessi una suoneria personalizzata e così è iniziata l'avventura.

    Grazie per i complimenti.

    ps. non riesci a vedere la partita? questa sera stanno proprio giocando bene.

    RispondiElimina
  3. Si, l'ho vista e mi è piaciuta, grande Eto'o; anche se nel finale c'è stato un rilassamento generale. :)))

    RispondiElimina
  4. Ciao, non mi funziona la conversione da mp3 a m4r.
    Ho installato tutto quanto previsto e seguito le istruzioni. Come da istruzioni avevo messo mp32aac in /usr/local  e mi dava comando non trovato. Ho fatto una variante mettendo mp32aac nella home e usando chmod 755; anche il file mp3 è nella home.
    Questo è il risultato:

    giovanni@giovanni-ubuntu:~$ ./mp32aac Cavalcata_delle_Valchirie.mp3 Cavalcata_delle_Valchirie.m4r
    Dumping mp3 to wav
    MPlayer 1.0rc4-4.5.2 (C) 2000-2010 MPlayer Team
    mplayer: could not connect to socket
    mplayer: No such file or directory
    Failed to open LIRC support. You will not be able to use your remote control.

    Playing Cavalcata_delle_Valchirie.mp3.
    Seek failed


    Exiting... (End of file)
    Converting id3v1 tags to id3v2 for easier transition to m4a tags
    Converting id3v1 tag to id3v2 in Cavalcata_delle_Valchirie.mp3...
    id3v2: Success
    Tags could not be converted
    Freeware Advanced Audio Coder
    FAAC 1.26.1 (Aug 16 2008) UNSTABLE

    temp.wav: No such file or directory
    Couldn't open input file temp.wav
    rm: impossibile rimuovere "temp.wav": File o directory non esistente
    AAC transcode complete!
    giovanni@giovanni-ubuntu:~$

    Mi puoi aiutare?
    Grazie

    RispondiElimina
  5. ciao Giovanni, la prima parte del messaggio di errore in realtà è solo un warning che ti dice che non poi potrai usare il telecomando a IR per controllare mplayer. Che non credo sia nei tuoi desideri.

    La seconda parte è l'errore vero e proprio:
    Playing Cavalcata_delle_Valchirie.mp3.
    Seek failed


    Hai provato a suonare l'mp3 direttamente da riga di comando? digitando mplayer Cavalcata_delle_Valchirie.mp3

    Hai provato con qualche altro mp3, magari prima di maneggiarlo per farlo stare nei 30 sec?

    Fai queste prove e poi fammi sapere.

    RispondiElimina
  6. Funziona!!!
    Errore mio, c'era uno spazio di troppo fra _ e Valchirie, poichè il nome file era scritto su due righe mi era sfuggito.
    Passo allo step successivo della tua guida.
    Ti ringrazio molto e ti chiedo scusa per averti disturbato inutilmente, purtroppo le disattenzioni capitano.
    Ciao

    RispondiElimina
  7. Tranquillo, contento di esserti stato utile! se hai altre domande non esitare a chiedere!

    RispondiElimina
  8. Mi spiace disturbarti nuovamente ma, sotto la Dir iTunes_Control non esiste la Dir Ringtones, vedi schermata allegata. Mi sono invece accertato che esiste il file Ringtones.plist, richiesto dallo step successivo.

    Volevo anche chiederti un'altra cosa: mentre sono riuscito a copiare la musica con rhythmbox, se copio le mie foto nella Dir DCIM continuo a non vedere alcuna foto.
    Grazie dell'aiuto.
    Ciao

    RispondiElimina
  9. se non esite la directory in questione è forse perché non hai mai caricato nessuna suoneria nemmeno con con itunes. prova a crearla a mano e poi modifica il plist come step successivo.

    per le foto non basta copiare, ma usa shotwell. dovrebbe comparire appena colleghi il tuo iphone.

    non ho a portata di mano l'iphone di mia moglie per fare prove in diretta... purtroppo.

    RispondiElimina
  10. Pieno successo. Ti confermo che creando la Dir Ringtones sono andato a fine ed ho ora le mie suonerie.

    Per quanto riguarda le foto nulla da fare, quando collego iphone parte fspot. Ho fatto partire shotwell ma con lo stesso risultato, se uso il drag&drop graficamente appare il + quando mi posiziono su iphone ma, alla fine non copia nulla.
    Se hai suggerimenti in proposito provo a seguirli.
    Ciao e grazie

    RispondiElimina
  11. ottimo, sono contento che tu ci sia riuscito. credo anche tu sia il primo a provarci seguendo questa guida oltre a me.

    per le foto, aspetta quando ho un iphone sotto mano provo e ti faccio sapere, ok? Ti faccio sapere da qui

    RispondiElimina
  12. Per le foto ho risolto con iFunBox che ti consente di fare praticamente tutto su iPhone.
    Ciao

    RispondiElimina
  13. ecco cosa mi sono dimenticato! Giovanni, scusa tanto. Ti avevo promesso, ma poi non ho più affrontato il problema. Ad ogni modo sono contento che tu abbia risolto.

    iFunBox è un'app per l'iphone o un programma che gira sul pc?

    RispondiElimina
  14. Sulla tua risposta non appare il tasto "Rispondi" per cui ti rispondo da qui.
    iFunBox è un programma opensource per PC, ti consente di gestire tutto, ad esempio se scarichi, con il PC, un .ipa o .deb, puoi importarlo in iFunBox (avendo collegato l'iPhone) quindi, senza bisogno di usare WiFi o 3G, puoi installare le applicazioni su iPhone. Vedi l'iPhone come se operassi in SSH.
    Un altro prodotto interessante per PC è Cyder, è praticamente il sostituto di Cydia su PC. Devi collegare l'iPhone ed usarlo, Nel mio caso non vede l'iPhone (ho letto di un pò di gente che ha lo stesso problema) per cui lo uso per scaricare i pacchetti che poi importo in iFunBox. Tutto questo casino perchè il mio iPhone ha il WiFi che non funziona e non voglio spendere quattrini scaricando con il 3G.
    Ciao

    RispondiElimina
  15. Risposta a Giovanni

    Grazie per le ottime segnalazioni. Proverò di sicuro a dargli un'occhiata, non appena mi moglie mi lascia usare il suo iPhone. Giusto un dubbio che ancora non mi sono chiarito: serve un iphone con jailbreak?

    ps. non dopo un certo numero di risposte innestate, visto che lo spazio disponibile andrebbe sempre più riducendosi, non è più possibile rispondere direttamente.

    RispondiElimina
  16. molto interessante questo iFunBox, per me ha un unico problema: è per windows! e io ho solo linux...

    RispondiElimina
  17. il jailbreak è il presupposto per avere Cydia. Non è un prerequisito per iFunBox, ovviamente se hai un iPhone bloccato non potrai accedere alle Applicazioni in quanto queste provengono da Cydia. Anch'io sono un utilizzatore di Linux (Ubuntu) ma uso anche VirtualBox per cui ho una macchina virtuale windows da utilizzare quando trovo un prodotto interessante ma non disponibile in ambiente Linux. Nella fattispecie, sia iFunBox che Cyder non si installano per cui se li lanci dovrebbe partirti automaticamente Wine (non l'ho provato ma presumo sia così).
    Ciao

    RispondiElimina
  18. Wine non ce l'ho, ma ho una VB con windows anche se essendo il mio pc non propriamente un fulmine di guerra, mi risulta parecchio lenta. Magari ci faccio un giro. Grazie ancora per le info!

    RispondiElimina
  19. ho provato anche io a seguire i passi di questa guida.
    Non riesco a copiare il file .m4r creato nell'iphone.
    Come già segnalato da Giovanni non ho trovato la dir Ringtones sotto la dir iTunes_Control, per cui l'ho creata a mano ed ho seguito i passi fino alla fine.

    Riavviando il mio iphone però NON trovo la suoneria creata.

    Premetto che ho un iphone 2g, potrebbe essere un problema dovuto al modello?

    RispondiElimina
  20. @89ed496dfadaf4554197caaa1db85b39, con un iphone 2g non ho mai provato, ma onestamente dubito che possa essere questa la causa.  Ti chiederei di verificare che il file copiato nella cartella abbia nome esatto (anche maiuscole e spazi) come nel file plist.

    Fammi sapere

    RispondiElimina
  21. niente.
    inizio a pensare che forse sia il formato della suoneria che ho creato che magari non è supportato su iPhone 2.

    RispondiElimina
  22. Se fosse un problema di formato possiamo fare queste due prove. La prima è che metti disponibile da qualche parte una suoneria creata da te (se non vuoi mettere esattamente quella che stai testando, va bene anche una simile) e io provo a caricarla su un iphone 3GS. Così che sappiamo che la procedura di creazione è stata eseguita correttamente.

    La seconda prova richiede che tu abbia accesso ad iTunes (lo so che non vorresti, ma credo sia piuttosto inevitabile!) e provi a caricarti da lì la suoneria che hai appena creato. Magari il formato è giusto, ma l'iPhone 2G ha una diversa organizzazione delle plist.

    RispondiElimina
  23. Sulla tua risposta non appare il tasto "Rispondi" per cui ti rispondo da
    qui.
    direi magari di effettuare per prima, la prova 1, per cui ho inserito a questo link la suoneria che ho creato:
    http://sendshack.com/download/cmu3is3
    e a questo link il file Ringtones.plist:
    http://sendshack.com/download/aa10ons
    a questo punto proviamo a vedere se a te si carica correttamente nell'iphone.
    per ora ti ringrazio del supporto...e incrocio le dita!

    RispondiElimina
  24. @89ed496dfadaf4554197caaa1db85b39 apro un nuovo thread qui continuando la discussione di prima.

    Ho appena scaricato la suoneria che tra l'altro mi piace parecchio! Adesso provo a caricarla sullì'iphone di mia moglie. Ti faccio sapere al + presto

    RispondiElimina
  25. Fatto e funziona!

    Questo è il pezzo di file che ho aggiunto al plist

    suoneria.m4r

    GUID
    52C67712267D8C94
    Name
    SKA
    Total Time
    30000
    Purchased


    Ho ovviamente rinominato il file in suoneria.m4r e il file plist completo lo trovi qui: http://www.box.net/shared/3y7ncfxxy3n14zj6e1dc

    RispondiElimina
  26. Ti ho risposto qui http://unico-lab.blogspot.com/2011/01/guida-da-mp3-m4r-fare-suonerie-per.html#comment-334620721

    RispondiElimina
  27. oooh grande grazie.
    stasera come torno a casa, provo!

    ps la suoneria è presa dalla canzone dei The Skatalites (gruppo anni 60 giamaicano) che si chiama Beardsman Ska
    ;)

    RispondiElimina
  28. aspetta ad esultare! L'iphone di mia moglie è un 3GS e ancora non sappiamo come il tuo 2G risponderà.

    ps. mia moglie ha prontamente deselezionato la suoneria... i gusti!

    RispondiElimina
  29. ce l'ho fatta!!!
    ha funzionato...però attualmente ho inserito la suoneria sia nella cartella  .../iTunes_Control/Ringtones, che nella cartella .../Ringtones.
    devo fare due prove per capire se il problema era dovuto al mancato salvataggio della suoneria nella cartella corretta (che a questo punto per iphone 2g potrebbe essere .../Ringtones), oppure dovuto al naming che avevo scritto in minuscolo.
    comunque grazie mille del supporto!!!!

    RispondiElimina
  30. Figurati è solo un piacere. Piuttosto fammi sapere se il problema era la directory o il nome del file, perché se scopriamo che la prima, allora mettiamo una nota nel post per tutti gli utenti di iPhone 2G.

    A presto!

    RispondiElimina

Chiunque può lasciare commenti su questo blog, ammesso che vengano rispettate due regole fondamentali: la buona educazione e il rispetto per gli altri.

Per commentare potete utilizzare diversi modi di autenticazione, da Google a Facebook e Twitter se non volete farvi un account su Disqus che resta sempre la nostra scelta consigliata.

Potete utilizzare tag HTML <b>, <i> e <a> per mettere in grassetto, in corsivo il testo ed inserire link ipertestuali come spiegato in questo tutorial. Per aggiungere un'immagine potete trascinarla dal vostro pc sopra lo spazio commenti.

A questo indirizzo trovate indicazioni su come ricevere notifiche via email sui nuovi commenti pubblicati.