Come personalizzare i file di allarme per i POI di TomTom 5, se non volete usare il più semplice e utile sistema dei files .ogg.
1. Create una cartella in C, chiamandola Tomtom (C:\Tomtom)
2. Create in questa cartella altre 2 cartelle: Conversione Wav e UKVoices quindi avrete C:\Tomtom\Conversione Wav e C:\Tomtom\UKVoices
3. Occorre procurarsi i 15 files (o meno a seconda di quanti ne volete personalizzare).
Generalmente questi files sono reperibili in formato Wav o creati dall’utente in formato Wav.
Nel caso siano creati dall’utente, una soluzione possibile è quella di registrarli 16000 Hz Mono PCM.
Ad ogni modo, ho trovato anche queste indicazioni, a seconda del dispositivo usato:
Pocket PC’s and Palms don’t care and use bank 1 the GO needs bank 1 at 22050 Hz mobile phones need the second bank, and need 16000Hz
Quindi per Pocket e Palm 22050 Hz mentre per la versione mobile servono a 16000Hz.
Per Bank 1, penso si riferisca alla tabella Excel che si andrà a creare in seguito.
Al momento io ho utilizzato i file sonori che si trovano all’indirizzo: http://www.poigps.com/poi/addon/wav_checkpoint.zip
Salvateli (scompattate il files scaricato) nella cartella Conversione Wav
4. Trovati i file .wav (o altro formato sonoro, come mp3), bisogna però convertirli in formato .ogg.
Procuratevi un programma che possa convertire i file audio (WAV, MP3 etc.) in file con estensione .OGG Vorbis.
Qualsiasi programma di editing audio va bene, ecco solo qualche esempio (in rete ne troverete a centinaia):
Audacity (freeware)
Switch
GoldWave
Alive MP3-WaV converter
Non create files di qualità inutilmente eccelsa o in stereofonia. Dato che questa guida riguarda la modifica del data.chk che è utile solo nei cellulari con sistema Symbian con Tomtom Mobile 5, ricordatevi di controllare che la frequenza di campionamento del file. ogg sia a 16000 Hz, monofonico.
5. Aprite un nuovo documento Excel e salvatelo per es. nella cartella Tomtom col nome TomTom Poi converter
Oppure scaricatelo già pronto PoiConverter.xls
6. Andate in Strumenti → Macro → Visual Basic Editor. Sarà aperta una nuova finestra.
7. A sinistra, dovreste visualizzare VBAProject e sotto la cartella Microsoft Excel Oggetti aperta.
Qui visualizzerete Foglio 1, Foglio 2, Foglio 3, ThisWorkbook. Fate doppio clic su Foglio 1.
Sarà aperto un foglio bianco.
8. Incollate quanto riportato di seguito:
Sub data_chk_reload() Dim g As Long Dim b As Byte Dim bt As Byte Dim Maxfiles Maxfiles = 30 'this folder holds the original data.chk file N.B. Following line modified by TomTomTim folder = "C:\TomTom\" 'identifier of the data.chk version. complete file name is identifier.data.chk fname = "4890" 'the OGG files need to be in the subfolder specified by cell C1 fnum = FreeFile Open folder & fname & ".data.chk" For Binary Access Read As #fnum flen = FileLen(folder & fname & ".data.chk") g = get_long Debug.Print fname; " Number of modules: "; g; " File size: "; flen ’If (g <> 102) And (g <> 120) And (g <> 123) And (g <> 136) Then ’a = MsgBox("Not a good DATA.CHK file. Please report your build version of the TomTom program to lutz@pocketgpsworld.com", vbOKCancel, "Error - wrong file version") ’Close ’Exit Sub ’End If 'get offsets If g = 102 Then Maxfiles = 12 ReDim entry(g + 1) For i = 1 To g + 1 entry(i).offset = get_long entry(i).sourceoffset = entry(i).offset If i > 1 Then entry(i - 1).length = entry(i).offset - entry(i - 1).offset Next 'confirm file size If entry(g + 1).offset = flen Then Debug.Print "File size confirmed" Else Debug.Print "File size mismatch! Reported:" & Hex(entry(g + 1).offset) & " Actual:" & flen End If 'calculating new offsets etc Debug.Print "Calculating new parameters" i = 2 For f = g - Maxfiles To g If (Cells(i, 3) > vbNullString) And (f < g) Then 'new file Debug.Print "Verifying "; Cells(i, 3) flen = FileLen(folder & Cells(1, 3) & "\" & Cells(i, 3)) entry(f).ogglength = flen pad = 0 While flen Mod 4 <> 0 flen = flen + 1 pad = pad + 1 Wend entry(f).blocks = (flen + 12) / 4 entry(f).length = flen + 16 End If i = i + 1 Next 'recalculate header Debug.Print "Recalculating header "; For i = g - Maxfiles To g + 1 entry(i).offset = entry(i - 1).offset + entry(i - 1).length Next Debug.Print "- new File Size is "; entry(g + 1).offset 'write output file Debug.Print "Writing CHK file " On Error Resume Next Kill folder & Cells(1, 3) & "\" & fname & "_new.data.chk" On Error GoTo 0 fnum2 = FreeFile Open folder & Cells(1, 3) & "\" & fname & "_new.data.chk" For Binary Access Write As #fnum2 'write header 'number of segments put_long (g) 'offsets For i = 1 To g + 1 put_long (entry(i).offset) Next 'non-voice files 'position pointer Get #fnum, entry(1).offset, b h = entry(g - Maxfiles).offset - entry(1).offset For i = 1 To h Get #fnum, , b Put #fnum2, , b DoEvents Next 'write sound files, either from source or from new OGG Debug.Print "Writing CHK file - Sounds" i = 2 For f = g - Maxfiles To g If (Cells(i, 3) > vbNullString) And (f < g) Then 'read new file Debug.Print "Including "; Cells(i, 3); " for "; Cells(i, 1) 'recreate header b = 1 Put #fnum2, , b b = 0 Put #fnum2, , b b = entry(f).blocks \ 256 Put #fnum2, , b b = entry(f).blocks And 255 Put #fnum2, , b put_long (1) put_long (8) put_long (entry(f).ogglength) fout = FreeFile Open folder & Cells(1, 3) & "\" & Cells(i, 3) For Binary Access Read As #fout For h = 1 To entry(f).ogglength Get #fout, , b Put #fnum2, , b DoEvents Next 'padding b = 0 flen = entry(f).ogglength While flen Mod 4 <> 0 Put #fnum2, , b flen = flen + 1 Wend Close (fout) Else 'read from source 'position pointer Get #fnum, entry(f).sourceoffset, b For h = 1 To entry(f).length Get #fnum, , b Put #fnum2, , b DoEvents Next End If i = i + 1 Next Close Beep MsgBox ("OK – La dimensione del nuovo file creato è: " & FileLen(folder & Cells(1, 3) & "\" & fname & _new.data.chk")) End Sub 'required because of the little endian storage of long values Function get_long() As Long Dim b As Byte l = 0 For h = 1 To 4 Get #fnum, , b l = l * 256 + b Next get_long = l End Function Sub put_long(ByVal l As Long) Dim b(4) As Byte For h = 1 To 4 b(h) = l And 255 l = l \ 256 Next For h = 4 To 1 Step -1 Put #fnum2, , b(h) Next End Sub</code>
9. A sinistra, dove avevate trovato il Foglio 1, cliccate con il pulsante destro su Microsoft Excel Oggetti, scegliete Inserisci →Modulo.
Sarà aperto un foglio bianco. Incollate quanto riportato di seguito (per sser certi che state incollando nel posto giusto, questo foglio deve avere due menu a tendina nella parte altra: (generale) e (dichiarazioni):
Public fnum Public fnum2 Type CHKentry offset As Long sourceoffset As Long length As Long tag As Byte packtype As Byte blocks As Integer ogglength As Long End Type Public entry() As CHKentry</code>
10. Salvate il codice e tornate sul foglio excel.
11. A questo punto occorre costruire la tabella di riferimento per i files vocali. La tabella ha 3 colonne.
A partire dalla cella A1, l’intestazione delle 3 colonne deve essere la seguente: Nome, Sampling, UKVoices.
La tabella che creerete sarà simile alla seguente:
A | B | C | |
---|---|---|---|
1 | Nome | Sampling | UKVoices |
2 | Beep 1 | 11025 | Autovelox.ogg |
3 | Beep 2 | 11025 | probabileautovelox.ogg |
4 | Beep 3 | 11025 | rilevatoredisorpasso.ogg |
5 | Beep 4 | 11025 | telecameraconrilevatore.ogg |
6 | Beep 5 | 11025 | telecamerasuincrocio.ogg |
7 | Bell 1 | 11025 | max50.ogg |
8 | Bell 2 | 11025 | max90.ogg |
9 | Bell 3 | 11025 | max130.ogg |
10 | Boing | 11025 | rallentare.ogg |
11 | Bugle | 11025 | rallentarevelocitaelevata.ogg |
12 | Cow | 11025 | velocitelevata.ogg |
13 | Chuckoo | 11025 | transitovietato.ogg |
14 | Polite 1 | 11025 | |
15 | Polite 2 | 11025 | |
16 | Polite 3 | 11025 | |
17 | Beep 1 | 16000 | Autovelox.ogg |
18 | Beep 2 | 16000 | probabileautovelox.ogg |
19 | Beep 3 | 16000 | rilevatoredisorpasso.ogg |
20 | Beep 4 | 16000 | telecameraconrilevatore.ogg |
21 | Beep 5 | 16000 | telecamerasuincrocio.ogg |
22 | Bell 1 | 16000 | max50.ogg |
23 | Bell 2 | 16000 | max90.ogg |
24 | Bell 3 | 16000 | max130.ogg |
25 | Boing | 16000 | rallentare.ogg |
26 | Bugle | 16000 | rallentarevelocitaelevata.ogg |
27 | Cow | 16000 | velocitelevata.ogg |
28 | Chuckoo | 16000 | transitovietato.ogg |
29 | Polite 1 | 16000 | |
30 | Polite 2 | 16000 | |
31 | Polite 3 | 16000 | |
32 | Shutter | 11025 |
Come potete notare, nella prima colonna viene inserito il nome originale del file di TT5, mentre nella terza colonna
dovete inserire il nome dei vostri files .ogg. I valori della seconda colonna impostateli così come sono.
Se non indicate nulla nella terza colonna, il file creato, manterrà il file audio originale (nel mio caso ho mantenuto i polite).
Il nome dei vostri files NON deve contenere spazi ed il programma si aspetta che siano tutti nella cartella C:\Tomtom\UKVoices (RISPETTATE LE MAIUSCOLE NEL NOMINARE LE CARTELLE)
12. Stando sempre sul Foglio Excel, dal menu Visualizza →Barre degli Strumenti→Strumenti di controllo (se non è già abilitata, abilitatela). Sarà visualizzata una nuova barra di pulsanti di excel.
13. Cliccate sul pulsante che raffigura una squadra blu.
14. Cliccate sul pulsante che rappresenta un pulsante di comando (il quarto nella prima colonna di pulsanti presenti).
15. Spostatevi in una zona del foglio excel e disegnate il vostro pulsante.
16. Se volete cambiare l’etichetta del pulsante che avete creato, cliccate sul pulsante con il pulsante destro del mouse, scegliendo Proprietà. Sarà aperta una nuova finestra. Cambiate la descrizione in corrispondenza della voce Caption e avrete un nuovo nome sul vostro pulsante.
17. Cliccate ora con il pulsante destro, sempre sul vostro pulsante e scegliete Visualizza codice.
18. Individuate le linee di comando (dovreste avere già il cursore pronto là):
Private Sub CommandButton1_Click()
e
End Sub,</code>
Ed aggiungete in mezzo la seguente riga di codice:
data_chk_reload</code>
19. Salvate e chiudete il Visual Basic Editor e tornate sul foglio Excel.
20. Copiate il file data.chk dal vostro palmare. Dovreste trovarlo in \programmi\navigator. Gia che ci siete fatevi una copia sul palmare, o rinominatelo in data.chk.original (in questo modo, potrete sempre ripristinarlo quando volete).
21. Incollate il file data.hk che avete appena copiato dal vostro palmare, nella cartella C:\Tomtom
22. Rinominate il file in 4890.data.chk.
A questo proposito, verificate la versione del vostro tom tom prima di rinominare il file sul palmare.
Se la verione è 5.000 (4890) allora procedete come ho fatto io, altrimenti, il file che rinominate, dovrebbe riportare il numero della vostra versione, cioè quello tra parentesi, inoltre, dovrete tornare nel codice Visual Basic (tramite l’editor) e cambiare il numero di versione da 4890 al vostro, ogni volta che viene riportato. Se non fate così, probabilmente non funzionerà la reazione del vostro file audio.
23. Ora siete pronti per creare il vostro file audio per TT5. Tornate sul foglio Excel e cliccate sul pulsante che avete creato. Attendete qualche minuto, finchè non comparirà il messaggio: Ok – La dimensione del nuovo file creato è:
24. Controllate nella cartella C:\Tomtom\UKVoices e troverete il file 4890_new.data.chk
25. Rinominate questo file in data.chk e incollatelo nella cartella del vostro palmare programmi/navigator.
Vi consiglio di rinominare il data.chk originale per non perderlo definitivamente.
26. Avviate TT5 sul palmare e divertitevi con i nuovi suoni.
//Eventuale problema://
Ho provato a seguire le tue indicazioni ma al momento della compilazione del file mi da un errore.
Il debug mi segnala ERRORE DI RUNTIME 9</quote>
Risolto copiando il file “data.chk” originale nella directory c:\TomTom e rinominandolo a “4890.data.chk”
dopodichè lanciando il file di Excel non ho avuto più problemi ed ho fatto quello che volevo.
Si ringrazia Jackie Estacado
red. by Ross