Hallo Leute!
Ich habe mich mal an die Auswertung der Sound-Dateien der CNDV-40MT gemacht (leider habe ich keine neuere Version). Diese stehen im Verzeichnis SNDDATA und heißen:
EW040SDF.BEL
EW040SND.BEL
EW040SDF.DEU
EW040SND.DEU etc.
für die verschiedenen Sprachen (Belgisch, Deutsch etc.). Die Daten (z.B. der "Bing"-Ton, "Scharf rechts abbiegen!" etc.) sind sequentiell in diesen Dateien hintereinander gespeichert, und zwar als WAV-Dateien im ungewöhnlichen Format:
Bitrate 76kBit/s
Abtastgröße 4 Bit
Kanäle 1 (Mono)
Abtastrate 18900 Hz
Audioformat IMA ADPCM
Mit einem kleinen Tool kann ich die Daten inzwischen extrahieren und erhalte für die Datei EW040SDF.DEU insgesamt 312 einzelne Sounddateien (die Zahl schwankt für die einzelnen Sprachen).
Leider kenne ich kein Programm, mit dem man Sound-Dateien in diesem Format erstellen kann. Wenn das ginge, könnte man die Sprachausgabe anpassen, indem man eine neue DVD erstellt und einfach über das Menü die Sprache wechselt.
Für andere Navis (Becker z.B.) gibt es ja coole Sprach-CDs zum Nachkaufen. Vielleicht könnte man sowas auch für das Avic hinbekommen? Vielleicht fühlt sich ja jemand berufen, auch ein wenig mitzuexperimentieren? Als erstes müßte man mal das Avic-Format genauer untersuchen, insbesondere den Datei-Header, damit man nicht in Schwierigkeiten mit Datei-Offsets oder Prüfsummen kommt.
Ich habe im Anhang mal zwei der extrahierten Sounddateien angehängt. Das VB-Coding zum Extrahieren der Daten sieht so aus (ganz primitiv, z.B. werden die Daten ins selbe Verzeichnis geschrieben, müssen also auf der Fesplatte liegen):
Zitat
Private Sub Command1_Click()
Dim i, j, k, l, m As Long
Dim TheFile As Integer
Dim SameFile As Integer
Dim NewFile As Integer
Dim TempL As Long
Dim TempS As String * 16
Dim ContentS As String * 1024
SelectFile
If FileName = "" Then Exit Sub
If Dir$(FileName) = "" Then Exit Sub
i = 1
j = 1
TheFile = FreeFile
Open FileName For Binary Access Read As TheFile Len = 16
If Err.Number <> 0 Then
Debug.Print "Couldn't read from file!"
Else
TempL = LOF(TheFile)
If TempL > 0 Then
While Not EOF(TheFile)
Again:
Get TheFile, j, TempS
If EOF(TheFile) Then GoTo out
If Left(TempS, 4) <> "RIFF" And Mid(TempS, 9, 7) <> "WAVWfmt" Then
j = j + 16
GoTo Again
End If
l = CLng( 8 ) + CLng(Asc(Mid(TempS, 5, 1))) _
+ CLng(Asc(Mid(TempS, 6, 1))) * CLng(256) _
+ CLng(Asc(Mid(TempS, 7, 1))) * 65536 _
+ CLng(Asc(Mid(TempS, 8, 1))) * 16777216
k = j
j = j + l
SameFile = FreeFile
Open FileName For Binary Access Read As SameFile Len = 1024
NewFile = FreeFile
Open FileName & i & ".wav" For Binary Access Write As NewFile
While k < j And Not EOF(SameFile)
Get TheFile, k, ContentS
k = k + 1024
If k > j Then
For m = k - j To 1024
Mid(ContentS, m, 1) = Chr$(0)
Next
End If
Put NewFile, , ContentS
Wend
Close #SameFile
Close #NewFile
i = i + 1
Wend
out:
Close #TheFile
End If
End If
End Sub
Alles anzeigen