english version -> Home

CDDB Unterstützung für OS/2 CD-Player

Vorwort Anleitung Download Versionen ToDo Funktionsweise weitere Infos Kontakt

Vorwort

Dieses Programm ist ein schneller Hack einer lauen Winternacht. Es bietet derzeit werder sonderlichen Komfort noch reichhaltige Features. Allerdings läßt es sich relativ Problemlos erweitern.


Anleitung

Voraussetzungen
Man benötigt neben diesem Programm derzeit eine lokale Kopie einer CDDB-Datenbank. Solche Kopieen gibt es beispielsweise bei www.freedb.org. Ein lokaler CDDB-Server wird nicht benötigt.
Leider sind diese Datenbanken ziemlich unhandlich. Will heißen: sie bestehen aus einigen -zigtausend Dateien mit einem Gesamtvolumen von über 150MB (komprimiert 60MB). Das macht über eine Modemverbindung nicht wirklich Spaß und bringt auch die PC-Dateisysteme an ihre Grenzen. FAT ist definitiv außer stande diese Dateienflut zu handhaben, HPFS kann es, zeigt aber spätestens beim nächsten (hoffentlich seltenen) CHKDSK, daß es sich dabei um eine Herausforderung handelt.
Eine direkte CDDB-Server Anbindung wäre die geplante Alternative. (siehe ToDo)
Anwendung
Einfach das CMD-Skript in das Verzeichnis der CDDB-Datenbank (wo die Unterverzeichnisse misc, rock etc. stehen) kopieren, und bei bedarf bei eingelegter CD aufrufen. Es empfiehlt sich ein entsprechendes Programm-Objekt auf dem Desktop oder wo auch immer zu erstellen.
Falls der OS/2 CD-Player schon läuft, wird dessen Titelanzeige erst beim nächsten Seek aktualisiert; der CD-Tiltel wird sogar erst beim nächsten CD-Wechsel korrekt angezeigt. In jedem Fall sind die Daten aber permanent gespeichert und werden dadurch nicht wieder überschrieben.
Leider sind die Informationen, die der PM-CD-Player sichert nicht hinreichend, um automatisch alle schon einmal eingelegten CDs aus der CDDB-Datenbank zu holen. Es ist daher unerläßlich, das Programm bei jeder noch unbekannten CD einmal auszuführen.


Download

Dieses Programm steht unter der
GNU GENERAL PUBLIC LICENSE.

Version 0.2.1
ZIP-Datei mit dem Programm-Source und dieser Anleitung
Nur Programm-Source, ungepackt


Versionen

Version 0.1 (erste Release)

Version 0.2 Version 0.2.1


ToDo

 · CDDB-Server Abfrage
Um das Overhead der unhandlichen, lokalen CDDB-Datenbank zu vermeiden, wäre eine CDDB-Server Abfrage angeraten. Das ist prinzipiell nicht so schwierig und auch in REXX realisierbar, es hatte nur nicht meine Priorität, da ich die CDDB-Datenbank schon vorher hatte.
In diesem Zusammenhang sollte man auch gleich die verzögerte Ausführung bei inaktiver Internetverbindung implementieren.
 · Mehrdeutige CDDB-IDs
Die CDDB-IDs sind ein Hash und nicht notwendigerweise Eindeutig. Wenn mir jemand sagt, wie eine CDDB-Datei mit verschiedenen CDs aussieht, implementiere ich die Sache auch. Solche Nameclashes wären natürlich auch auf MMPM-CD Seite denkbar, dagegen ist jedoch kein Kraut gewachsen. Trotz der einfacheren Hash-Struktur ist letzterer Fall allerdings erheblich unwahrscheinlicher; wenngleich auch dieser Hash weit von der Perfektion entfernt ist.
 · automatische Programmausführung bei neuer CD
Die Sache wäre natürlich erheblich komfortabler, wenn beim Einlegen einer noch unbekannten CD das Skript automatisch ausgeführt würde. Es ist nicht abwegig, daß SOM dafür durch Subclassing der MMCD-Klasse eine Möglichkeit bietet. Man müßte die Notifikation beim Einlegen einer neuen CD abfangen und prüfen, ob es sich um einen Neuling handelt. Wenn ja, wäre das Skript an der Reihe. Das Skript könnte das natürlich auch selbst prüfen. Wenn man Glück hat, wird dann auch der CD-Titel gleich beim ersten Mal richtig angezeigt. Meine SOM-Kenntnisse enden allerdings bereits nach dessen Namen, weshalb es zumindest auf meinem Mist nicht wachsen wird. Aber wenn sich jemand fit fühlt...
 · Upload Möglichkeit
Wenn in der CDP.INI Daten Vorhanden sind, aber in der CDDB nicht, könnte man ein Upload-Paket schnüren. Dadurch kann man den Editor des PM CD-Players nutzen. Heiße Kandidaten für so etwas wären schon früher fehlgeschlagene CDDB-Abfragen.

Funktionsweise

Dieses Programm ist vollständig in REXX geschrieben und kann dadurch bei bedarf relativ problemlos angepaßt werden.

  1. Es öffnet per MCI das CDAUDIO-Device und liest die TOC-Informationen der gerade eingelegten CD aus. Eine eventuell laufende CD-Wiedergabe wird dabei leider vorübergehend unterbrochen.
  2. Es berechnet daraus die CDDB Disk-ID.
  3. Jetzt wird in allen direkten Unterverzeichnissen des aktuellen Verzeichnisses nach einer pasenden CDDB-Datei gesucht.
    Nur in diesem Zusammenhang ist es relevant, das Programm in das Verzeichnis der CDDB-Datenbank zu kopieren. Wenn das Arbeitsverzeichnis dort liegt, ist das hinreichend.
  4. Falls keine passende Datei gefunden wird, startet ein zweiter Suchalgorithmus: Fuzzy-Search. Dabei werden alle Dateien mit logisch ähnlichen CD-IDs gesucht (Hash ±10, Länge ±1). Der TOC wird mit den Angaben jeder gefundenen Datei mit einer Unschärfe von 40 Frames verglichen. Unterschiedlich lange Lead-Ins werden ignoriert.
    Dieses Verfahren Funktioniert nur bei CDs mit mehr als einem Titel.
  5. War die Suche erfolgreich, so wird der MMPM CD-Key berechnet und die Titelinformationen in die Datei CDP.INI übertragen. Die Datei wird automatisch im (gerade aktiven) MMOS/2 Verzeichnis lokalisiert.


weitere Informationen

Format der MMPM CD-Datenbank

Der MMPM CD-Player speichert seine Informationen in der Datei CDP.INI im MMOS2 Verzeichnis.
Diese Datei ist im binären OS/2 Profile-Format, das sinnvollerweise nur über die entsprechenden API-Calls verändert werden sollte. Diese kümmern sich dann auch um den gleichzeitigen Zugriff mehrerer Applikationen.

Die Applikation-Keys entsprechen dabei einem CD-Key, der folgendermaßen aufgebaut ist:

MMSSmmss.ff     Beispiel: 46043612.40
MM
Gesamtlänge der CD, Minuten [00..99]
SS
Gesamtlänge der CD, Sekunden, nicht gerundet [00..59]
mm
Differenz vom Anfang des ersten zum letzten Track, Minuten [00..99]
ss
Differenz vom Anfang des ersten zum letzten Track, Sekunden [00..59]
ff
Differenz vom Anfang des ersten zum letzten Track, Frames (1/75 s) [00..74]
Bei CDs, die nur einen Track haben ist mmss.ff = 0000.00.
Innerhalb dieses Applikations-Keys gibt es folgende Schlüssel:
IMMCDDiscTitle  CD-Titel, ASCII
1 Titel Track 1, ASCII
2 Titel Track 2, ASCII
...


Kontakt

Anregungen, Hilfen, Beschwerden (aber nicht zu viele:-) unter: mueller@fulda.net

Homepage dieses Programms: http://www.fulda.net/~mueller/source/cddbmmcd.html