Einerseits kannst du Interpret und Titel natürlich händisch setzen. Wobei beim Interpreten zu beachten ist, dass es sich um eine Liste von Strings (IStrings) handelt (weil ja mehrere Interpreten erlaubt sind) - man muss also entweder mit Add() einen hinzufügen, oder mit SetText den aktuellen Inhalt überschreiben:
newItem.GetArtists.Add('Neuer Interpret'); // falls schon einer gesetzt war, wird dieser angehängt
newItem.GetArtists.SetText('Neuer Interpret'); // aktueller Inhalt wird komplett überschrieben
newItem.SetTitle('Werbung');
Dass der ID3-Tag nicht augelesen wird, liegt übrigens an dieser Zeile hier:
Factory.CreateFilePlaylistItem('M:\Werbung\' + filename[f], []);
Der letzte Parameter von CreateFilePlaylistItem gibt nämlich an, welche “Datenquellen” alle herangezogen werden sollen, um Metadaten zu ermitteln. Zur Auswahl stehen:
fitMMD: MMD-Datei auslesen
fitTags: mAirList-Tag auslesen
fitNativeTags: native Tags (ID3, Vorbis Comments) auslesen
fitDuration: Länge ermitteln (mit BASS.DLL)
fitTilde: ~ im Dateinamen auslesen
fitAutoCue: Auto Cue durchführen
fitDatabaseLookup: Datenbanken abfragen
“fit” steht hier für “file import task”, also beim Datei-Import durchzuführende Aufgaben. Man kann mehrere Werte durch Komma getrennt angeben, wobei die Reihenfolge keine Rolle spielt. Du hast [] angegeben, also gar keine Datenquellen - deswegen wird auch kein Tag ausgelesen. Du könntest die Zeile zum Beispiel folgendermaßen ändern:
Factory.CreateFilePlaylistItem('M:\Werbung\' + filename[f], [fitNativeTags]);
Dann werden die (nativen) ID3-Tags ausgelesen.
Zum Schluss noch ein weiterer Tipp: Du verwendest ja “activeItem”, um das gerade spielende Element zu ermitteln. Wenn es dir nur darum geht herauszufinden, an welche Stelle das neue Element einzufügen ist, kannst du auch die Methode “GetNextIndex” verwenden, denn die macht genau das:
CurrentPlaylist.Insert(CurrentPlaylist.GetNextIndex, newItem);