Zunächst wäre zu überprüfen, ob der im File-Tag vorhandene ReplayGain-Wert korrekt als “Amplification” übernommen wird. Das kannst du ja leicht nachrechnen, indem du in die Tags schaust und vergleichst, was mAirList daraus gemacht hat (Amplification-Regler im PFL-Dialog). Dabei ggf. auch die Clipping-Option beachten!
Wenn ich das oben richtig sehe, scheint dies ja korrekt zu funktionieren.
Wenn bis dorthin alles ok ist, wäre als nächstes zu überprüfen, ob mAirList die Amplification-Vorgabe beim Abspielen auch korrekt umsetzt. Dazu am besten den Titel im PFL-Modus starten, mit dem Amplification-Regler herumspielen, und schauen, was das Peakmeter am Mischpult dazu sagt.
Da ich immer noch dabei bin, meine Archivstruktur neu einzulesen bin ich auch noch nicht dazu gekommen, den Snapshot einzufügen.
Wenn ich jetzt also ggf. einen Track aus der Datenbank oder aus dem Browser oder per Datei-Einfügen in die Playlist hole, liest sich mairlist die Werte dann trotzdem aus, obwohl die Dateien im Archiv noch ohne ReplayGain eingelesen wurden?
Zum Gainen habe ich MediaMonkey genutzt, allerdings bin ich mir da nicht sicher, welcher der Algorithmen (Radio oder Audiophile) verwendet wird und was ich da korrekt einstellen müsste, denn es wird beim MM nur die Möglichkeit für den db-Wert gegeben.
Der ReplayGain-Wert wird im Rahmen des Tag-Imports ausgewertet. Und wie du weißt, liest mAirList die Tags nur einmalig aus, wenn der Titel erstmals in die Datenbank übernommen wird.
Zum Gainen habe ich MediaMonkey genutzt, allerdings bin ich mir da nicht sicher, welcher der Algorithmen (Radio oder Audiophile) verwendet wird und was ich da korrekt einstellen müsste, denn es wird beim MM nur die Möglichkeit für den db-Wert gegeben.
Das sind keine unterschiedlichen Algorithmen. Der Unterschied ist lediglich: Wenn man ein ganzes Album durchhört, will man ggf. mit einer anderen Verstärkung arbeiten, damit die Lautheit aller Tracks zueinander passt. Hört man den Titel aber isoliert, dann kann die Verstärkung ganz anders nur auf diesen Titel bezogen berechnet werden. Deswegen bietet der ReplayGain-“Standard” die Möglichkeit, zwei verschiedene Gains abzulegen - Audiophile/Album und Radio -, und im Player wählt man dann, welcher benutzt werden soll.
Wenn du im MediaMonkey den Track nur einzeln bearbeitest (und nicht das ganze Album), dann wird vermutlich nur der Radio-Wert bestimmt. Nimm einfach mal mp3tag und schau dir die Datei an.
Ich befürchte irgendwie, ich muss den ganzen Müll neu einlesen schwitz. Obwohl: MediaMonkey warnt mich jedesmal, wenn ich die Lautstärke anpassen will: “Die Lautstärkeanpassung ändert die Datei unwiderruflich…”. Bezieht sich das auf nur auf die Tags oder wird da die Datei tatsächlich destruktiv bearbeitet? Ok, ist vll. ein bissl OT und hat auch nur bedingt mit mAirList zu tun, aber ich würd’s gern wissen…
Ich habe mal auf die Schnelle ein Script zusammengehackt, mit dem man nachträglich den ReplayGain-Wert für alle Elemente neu aus dem Tag auslesen und in die Datenbank übernehmen kann:
// Fetch all File item IDs - we need to lock the database in order to
// protect the connection
Database(0).BeginRead;
try
stmt := ImAirListDB(Database(0)).GetConnection.PrepareStatement(
'SELECT idx FROM items WHERE xmltype=''File'''
);
rs := stmt.ExecuteQueryPrepared;
while rs.Next do
ts.Add(rs.GetString(1));
finally
Database(0).EndRead;
end;
SystemLog('Found ' + IntToStr(ts.Count) + ' files.');
for i := 0 to ts.Count - 1 do begin
// load first item from database
pi1 := IFilePlaylistItem(Database(0).CreatePlaylistItem(ts[i]));
SystemLog(pi1.GetFilename);
try
// create second item directly from the file, read tags
pi2 := IFilePlaylistItem(Factory.CreatePlaylistItemFromFile(pi1.GetFilename, [fitTags]));
// Is the amplification different from the one stored in the database?
if IAmplifyable(pi1).GetAmplification <> IAmplifyable(pi2).GetAmplification then begin
SystemLog('Amplification has changed');
// Copy amplification over to the database item
IAmplifyable(pi1).SetAmplification(IAmplifyable(pi2).GetAmplification);
// write changes back to the database
Database(0).SavePlaylistItem(pi1);
end;
except
SystemLog('Error');
end;
end;
In .mls-Datei kopieren, dann in mAirList ausführen.
In die Config eingetragen werden müssen nur Notification Scripts (die dann geladen und automatisch im Hintergrund ausgeführt werden, wenn irgendwas Bestimmtes passiert).
hat etwas gedauert weil mein PFL nicht funktionieren wollte.
Ich hab daher schnell eine Neuinstallation von ver 3.1.2 mit Build 803 durchgeführt.
Versuch Files 2.1 und 2.2 im Auto Modus hintereinander abgespielt => am PPM werden jeweils ca. -14dB angezeigt, d.h. obwohl die Dateien 10dB Unterschiede im Pegel haben, werden sie durch ReplayGain mit identischem Pegel ausgespielt.
Kontlolle manuell mit PFL:
File 2.1 mit 0dBFS hat Amplification=-14.2 (Attributes - replaygain_track_gain = -14.18)
File 2.2 mit -10dBFS hat Amplification= -4.2 (Attributes - replaygain_track_gain = -4.18)
Das bedeutet dass alles so funktioniert wie es soll: die einzelnen Files werden in ihrer Lautheit aneinander angepasst.
Jetzt müssen weitere Versuche folgen, mit echter Musik und akustischer Beurteilung.
Desweiteren müssen auch noch Versuche mit den Funktionen “Album ReplayGain” und “Prevent Clipping” gemacht werden.
Jean, was hast Du denn bei foobar eingestellt als Richtwert? 89db? Oder gar 100? Worauf ich hinaus möchte:
Ich habe kein RTW, aber halt das Levelmeter vom Pult. Ich halte es immer so, das die Anzeige die 0 db-Grenze nicht überschreitet beim manuellen Gainen. Was muss ich also foobar sagen, was als Richtwert gelten soll?
so wie ich es verstehe ist der Referenzwert 89dB (an sich dBSPL).
Das ist der Lautheitsreferenzwert mit dem ReplayGain sein psychoakustisches Kunstwerk durchzieht; ich würde daran nichts ändern.
Es ist wirklich sehr selten, dass ReplayGain eine Verstärkung verlangt.
Es ist der Fall z.B. bei: Andreas Vollenweider - Book of Roses - Track 04 - Chapter One: The Five Curtains --> hier errechnet ReplayGain eine Verstärkung von +2.41dB, so stehts dann auch in den Attributes replaygain_track_gain = 2.41 dB.
mAirList errechnet dann eine Amplification von 1.0: hier kommt das “Prevent Clipping” zum Zug -> mehr als 1dB darf man ja meine auf -1.0dB normalisierten FLACs nicht anheben.
Sehr schön !!!
@Torben: sollte man bei Amplification nicht der Genauigkeit halber [dB] schreiben um darauf hinzuweisen, dass der Wert kein Multiplikationsfaktor ist?
Ich habe mit foobar bei einer einzelnen Datei testweise einmal mit 89db und einmal mit 98db gescannt. Aus unerfindlichen Gründen wird jedesmal ein Wert von -9 db ermittelt (Track-Gain, Prevent clipping). Bin ich nun zu doof?
Der Hintergrund ist für mich, das die Dateien viel zu leise sind, ich muss da bei voll ausgesteuerter Soundkarte am Pult (Behringer DX1000) den Gain-Poti auf ca. +10 db stellen, damit ich auf einen anständigen Arbeitspegel komme.
Die gleiche Datei habe ich dann mal als Kopie mit mp3trim (http://www.mptrim.com) auf 0db trimmen lassen und siehe da: Der Pegel ist normal bzw. für mich gut zu verwenden (Gain-Poti auf 0, Kanalfader auf 0 und das Levelmeter geht auch bis maximal 0).
Unterliege ich jetzt nun einem sehr fatalen Verständnisfehler, was ReplayGain angeht?
Das Script findet bei mir keinen Unterschied, obwohl ich für alle Dateien nun einen Gain Wert im Tag habe.
Beim Import in eine leere Datenbank wird dieser auch korrekt vom File übernommen.
Anhand des Logs kann ich erkennen, dass das Script sowohl die komplette bestehende Datenbank als auch die Files einliest aber nicht mehr in die if Verzweigung kommt. (‘Amplification has changed’)
Hat wer eine Idee warum IAmplifyable(pi2).GetAmplification immer 0 liefert ???
Habe mein Problem zwischenzeitlich selbst lösen können.
Falls noch jemand die Lautstärke nachträglich vom “neuen” File Tag in die Datenbank übernehmen möchte, soll beim Skript nicht [fitTags] sondern [fitNativeTags] verwednen.
So hat es bei mir zumindest jetzt reibungslos funktioniert.