Home > Artikel > Ausgabe 2/2015 > Access als MP3-Player

Access als MP3-Player

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Nein, Access kennt keine eingebaute Möglichkeit, um MP3-Dateien abzuspielen. Dennoch lässt sich das über den Windows Media Player und dessen Fernsteuerung mit wenig Aufwand einrichten. Da es zudem bei der Verwaltung von MP3-Dateien um Aufgaben geht, für die sich eine Datenbank gut macht, kam die Idee auf, eine Player-Anwendung unter Access zu realisieren. Schauen Sie selbst ...

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1502_MP3.mdb.

Access [basics]-MP3-PLAYER

Damit Sie gleich einen Eindruck davon bekommen, was Sie erwartet, sehen Sie in Bild 1 die stylische Oberfläche des Players – das muss in diesem Genre nun mal sein. Und schon vorneweg: Im Rahmen dieses Beitrags können nicht alle Finessen der Gestaltung und Programmierung der Datenbank besprochen werden. Dafür ist sie zu aufwändig, wenn auch nicht kompliziert. Wir beschränken uns an dieser Stelle auf die Darstellung der wesentlichen Kernfunktionen.

Die Access-MP3-Player-Anwendung

Bild 1: Die Access-MP3-Player-Anwendung

Auf der linken Seite befindet sich die Liste aller in die Datenbank aufgenommenen MP3-Dateien. Über das Suchfeld darunter lassen sich die Titel filtern. Bei Eingabe von Buchstaben in das Suchfeld filtert sich die Liste sofort und reduziert sich auf diejenigen Dateien, welche den eingegebenen Begriff enthalten. Da der Dateiname unter Umständen nicht so aussagekräftig ist, besteht zusätzlich über die Schaltfläche Filter... die Möglichkeit, die Titel nach weiteren Kriterien, wie etwa dem Artist zu filtern. Der Filter wird einfach zurückgesetzt, wenn auf das Suchfeld doppelgeklickt wird.

Markieren Sie einen Eintrag der Titelliste, so zeigt das rechte Unterformular verschiedene Eigenschaften des Titels an, die im Wesentlichen aus den MP3-Tags der Datei bezogen wurden. Ein Doppelklick auf einen Eintrag der Liste spielt die Datei ab. Ebenso kann hierfür der Start-Button des Media Players verwendet werden.

Oben rechts können Sie den Titel bewerten, indem Sie bis zu fünf Sternchen vergeben. Das wird in der Datenbank gespeichert und kann später über die Filterfunktion zum Heraussuchen der Favoriten benutzt werden.

Im Auslieferungszustand ist die Datenbank noch leer, und Sie müssen zunächst die Verzeichnisse definieren, die in die Suche nach MP3-Dateien einbezogen werden sollen. Dazu klicken Sie auf die Schaltfläche Verzeichnisse..., die das Formular in Bild 2 aufruft. Hier haben Sie die Möglichkeit, über die Pünktchen-Buttons neue Verzeichnisse in die Liste aufzunehmen, wobei jeweils angegeben werden kann, ob auch deren Unterverzeichnisse zu berücksichtigen sind.

Das Popup-Formular zur Auswahl der zu scannenden Verzeichnisse

Bild 2: Das Popup-Formular zur Auswahl der zu scannenden Verzeichnisse

Nach dem Aufnehmen der Verzeichnisse geht es an das Durchsuchen dieser nach MP3-Dateien. Klicken Sie dazu auf den Button Erneut scannen des Hauptformulars. Der Vorgang kann eine Weile dauern und zeigt den Vollzug dadurch an, dass die Titelliste sich mit Einträgen gefüllt hat. Dabei werden Sie außerdem über eine Messagebox gefragt, ob nun auch die MP3-Eigenschaften der Dateien ausgelesen werden sollen. Wenn Sie das bestätigen, was zu empfehlen ist, damit später die Filtermöglichkeiten größer sind, so liest die Datenbank jede einzelne Datei und deren MP3-Tags aus. Dass das noch länger braucht, als das bloße Scannen der Verzeichnisse, ist sicher selbstverständlich, und darum zeigt ein Fortschrittsbalken am unteren Ende des Formulars auch an, wie weit die Code-Ausführung gediehen ist.

Soweit die Beschreibung der Anwendung. Sie können nun loslegen und sie einfach benutzen, oder sich in die Entwicklungshintergründe begeben...

Windows Media Player

Natürlich handelt sich bei der Player-Einrichtung der Datenbank nicht um eine Eigenentwicklung. Das wäre wirklich des Guten zuviel gewesen. Warum auch? Windows bringt mit dem Media Player nicht nur ein geeignetes Instrument mit, das sich per OLE-Automation und damit per VBA steuern lässt, sondern auch noch ein Steuerelement, das den Player beherbergt. Sie fügen das Control in ein Formular ein, indem Sie die Liste der ActiveX-Steuerelemente (Ribbon) im Entwurf nach dem Windows Media Player durchforsten. Das Steuerelement zeigt nun nicht nur die Leiste mit den Bedienelementen an, sondern auch den Bereich, der eigentlich zu Anzeige von Videos gedacht ist. Dort zeigt sich beim Abspielen von Sound-Dateien dann eine nette Animation, die wir aber nicht in der Anwendung haben möchten. Leider lässt sich dieser Bereich nicht ausblenden. Verkleinern Sie im Entwurf die Höhe des Steuerelements, so dass nur noch die Bedienleiste übrig bleibt, scheint dies das gewünschte Ergebnis zu zeitigen, doch in der Formularansicht verschwindet stattdessen die Leiste und der Animationsbereich ist sichtbar. Das Control lässt sich unter Access nicht dazu überreden, diesen Bereich auszublenden. Darum wird er, wie in Bild 3, als Workaround einfach mit einem Unterformular überdeckt, was in der Anwendung jenes für die Anzeige der MP3-Eigenschaften ist (sfrmEigenschaften).

Bedecken des Player-Videobereichs mit einem Unterformular (im Entwurf)

Bild 3: Bedecken des Player-Videobereichs mit einem Unterformular (im Entwurf)

Markieren Sie nun im Entwurf das Steuerelement und bewegen sich im Eigenschaftenblatt auf den Reiter Andere. Markieren Sie hier den Eintrag Benutzerdefiniert und dort die Schaltfläche mit den Pünktchen. Es öffnet sich der Eigenschaftendialog des Players. Dort können Sie diverse Optionen wählen, die aber zumeist für die Darstellung von Videos von Belang sind. Wichtiger ist die Registerseite Erweitert: Dort sollte Steuerelemente aktivieren gesetzt sein, und besser Kontextmenü aktivieren nicht. Das bezieht sich auf die Bedienleiste des Players. Sind die Steuerelemente deaktiviert, so können Sie beim Abspielen etwa weder die Positionen einstellen, noch die Lautstärke ändern. Schließen Sie den Dialog mit OK.

Wie bringt man dem Player-Control nun bei eine Datei abzuspielen? Im Eigenschaftenblatt ist keine passende Eigenschaft, wie File oder ähnlich, sichtbar. Dafür ist nun doch etwas VBA-Programmierung nötig...

Und die lässt sich zwar mit nur wenigen Zeilen erledigen, ist aber auf den ersten Blick nicht sehr einleuchtend. Es gibt im Objektkatalog zur Bibliothek WMPLib – das ist die dem Media Player zugeordnete und automatisch von Access eingefügte Bibliothek – tatsächlich keine Eigenschaft File oder eine Open-Anweisung für das Control-Objekt WindowsMediaPlayer. Dieser spielt nämlich nur Playlisten ab. Eine Datei ohne Playlist gibt es in diesem System nicht. Folglich muss erst eine Playlist angesprochen werden, der man eine oder mehrere Dateien hinzufügt. Der verantwortliche Code dazu steht im Formular frmMP3Player in der Prozedur SetMedia, die in Listing 1 abgebildet ist. oPlayer ist die Objektvariable für das Player-Steuerelement. sMP3 enthält den Pfad zur MP3-Datei. Zuerst werden die Bedienelemente des Players (Controls) angewiesen, eine eventuell gerade laufende Aktion zu stoppen. Dann wird der Player geschlossen (Close), was ihn quasi resettet. Die aktuelle Playlist – man muss sie nicht neu erzeugen, da es immer eine gibt – wird ebenfalls mit currentPlaylist.Clear geleert. Und nun kommen die zwei entscheidenden Zeilen: Mit der Methode newMedia, der als Parameter der Dateipfad mitzugeben ist, wird ein neues Medien-Objekt erzeugt. Und dieses Objekt oMedia wird über currentPlaylist.appendMedia der Playlist hinzugefügt. Damit ist das Player-Control bereit zur Wiedergabe der Datei. Die Wiedergabe wiederum wird grundsätzlich über die Eigenschaft Controls des Players gesteuert. Das Abspielen geschieht mit

oPlayer.Controls.play

Mehr braucht es dazu nicht. Wollen Sie die Wiedergabe per VBA anhalten, so genügt ein

oPlayer.Controls.pause

Für mehr Anweisungen schauen Sie sich die Funktionen der Klasse IWMPControls im Objektkatalog des VBA-Editors an.

MP3-Tags

Das Player-Control ist auch verantwortlich für das Auslesen der MP3-Eigenschaften. Bedenken Sie, dass hinter diesem Steuerelement der gesamte Windows Player und dessen System stehen, weshalb auch die Bibliothek recht umfangreich ist. Im Formular finden Sie in der Routine GetMP3Properties den Code für das Auslesen der MP3-Tags. In ihr sind zahlreiche Elemente enthalten, die sich mit dem Speichern der Eigenschaften in die Tabellen der Datenbank über Recordsets beschäftigen. Jene Zeilen, die das Player-Objekt betreffen, hier im Schnelldurchlauf:

Im Sprachgebrauch von Windows Media nennen sich die MP3-Tags Attribute. Zuerst ist über den Player, ähnlich, wie in Listing 1, ein Media-Objekt zu erzeugen. Statt es abzuspielen, wird nun die Anzahl der Tags dieses Objekts über die Eigenschaft attributeCount ermittelt und eine Schleife darüber gebaut:

Private Sub SetMedia()

     Dim oMedia As IWMPMedia

     

     sMP3 = LblPath.Caption

     oPlayer.Controls.Stop

     oPlayer.Close

     oPlayer.currentPlaylist.Clear

     Set oMedia = oPlayer.newMedia(sMP3)

     oPlayer.currentPlaylist.appendItem oMedia

End Sub

Listing 1: Diese Routine bereitet das MediaPlayer-Control zum Abspielen einer MP3-Datei vor

Set oMedia = oPlayer.newMedia(sDatei)

For i = 0 To oMedia.attributeCount

     ...

Next i

Innerhalb der Schleife wird nun jeweils der Name und der Wert eines Tags ausgelesen:

sTagName = oMedia. _ getAttributeName(i)

sValue = oMedia. _ getItemInfo(sTagName)

Tatsächlich ist das auch schon alles, was das Player-Objekt angeht. Es wird zum Schluss mit der Close-Anweisung lediglich noch geschlossen. Dass man mit so wenig Code an die kompletten MP3-Tags gelangt, ist schon erstaunlich. Der Rest der Routine ist, wie gesagt, dem Speichern der Eigenschaften in die Tabellen vorbehalten.

Tabellen der Datenbank

Deshalb möchten wir an dieser Stelle kurz auf das Datenmodell der Anwendung eingehen. In Bild 4 wird das Beziehungs-Layout verdeutlicht. Die Tabelle tblVerzeichnisse wird über das Formular frmVerzeichnisse (siehe oben) gefüllt. Es basiert direkt auf dieser Tabelle und ist in Endlosformularansicht gestaltet. Die Tabelle tblMP3Dateien wird über den Scan-Vorgang bestückt, der im Hauptformular in der Prozedur ScanMP3Files vonstatten geht. Diese durchläuft alle Verzeichniseinträge von tblVerzeichnisse und ruft für jedes die Hilfsfunktion FindFilesTree im Modul mdlFindFiles auf. Die Rückgabeergebnisse speichert Sie als Dateiname neben der ID des Verzeichnisses ab.

Das Datenmodell der Access-MP3-Player-Anwendung

Bild 4: Das Datenmodell der Access-MP3-Player-Anwendung

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!