Ausgabepegel verwalten

Jean, zu deinen Tests:

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.

Hmm… grübel

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.

Kann mir da jemand unter die Arme greifen?

Nein.

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.

Zu Befehl! :slight_smile:

Das ist jammerschade…

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… :frowning:

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:

[code]
var
stmt: IZPreparedStatement;
rs: IZResultSet;
ts: TStringList;
i: integer;
pi1, pi2: IFilePlaylistItem;

begin
ts := TStringList.Create;
try

// 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;

finally
ts.Free;
end;

end.[/code]

Danke, das klingt gut.

Usage: Script als mls-Datei erstellen und dann über mairlist ausführen? Oder über die Config? hirnzerquetsch

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).

Ahaaa! Und wieder was gelernt! Ich hab’s bisher noch nicht so mit den Scripts gehabt, bis jetzt lief alles so. Danke für deine Mühen!!!

mL wühlt sich jetzt grad 'nen Wolf durch’s Archiv und “seemed to be frozen”, aber den Effekt kenne ich ja bei längeren Operationen.

Soooo,

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.

Beste Grüsse und vielen Dank an Torben.

Jean

Du hast schon wieder beide Schritte gleichzeitig getestet :slight_smile:

Aber wenn es funktioniert, ist das ok.

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?

Hallo Scrat,

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.

LG

Jean

Okay, besten Dank!

Weitere Ergebnisse:

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?

Der Dialog wird demnächst umgestaltet, dann werde ich den Vorschlag berücksichtigen.

Also, ich hol’ das mal wieder nach oben:

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?

Ich glaube, ReplayGain pegelt generell etwas leiser, damit genug Headroom nach oben ist.

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.

pi2 := IFilePlaylistItem(Factory.CreatePlaylistItemFromFile(pi1.GetFilename, [fitNativeTags]));