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