mirror of
https://github.com/beetbox/beets.git
synced 2025-12-15 21:14:19 +01:00
replaygain: targetlevel and peak_method depends on tag format
Allow to configure the target level for R128_* tags separately from REPLAYGAIN_* tags and skip peak calculation for R128_* tags if possible.
This commit is contained in:
parent
0c8eead459
commit
e7e2c424e7
1 changed files with 14 additions and 12 deletions
|
|
@ -1164,10 +1164,11 @@ class ReplayGainPlugin(BeetsPlugin):
|
|||
'overwrite': False,
|
||||
'auto': True,
|
||||
'backend': u'command',
|
||||
'per_disc': False,
|
||||
'peak': 'true',
|
||||
'targetlevel': 89,
|
||||
'r128': ['Opus'],
|
||||
'per_disc': False,
|
||||
"peak": "true",
|
||||
'r128_targetlevel': lufs_to_db(-23),
|
||||
})
|
||||
|
||||
self.overwrite = self.config['overwrite'].get(bool)
|
||||
|
|
@ -1262,16 +1263,21 @@ class ReplayGainPlugin(BeetsPlugin):
|
|||
def tag_specific_values(self, items):
|
||||
"""Return some tag specific values.
|
||||
|
||||
Returns a tuple (store_track_gain, store_album_gain).
|
||||
Returns a tuple (store_track_gain, store_album_gain, target_level,
|
||||
peak_method).
|
||||
"""
|
||||
if any([self.should_use_r128(item) for item in items]):
|
||||
store_track_gain = self.store_track_r128_gain
|
||||
store_album_gain = self.store_album_r128_gain
|
||||
target_level = self.config['r128_targetlevel'].as_number()
|
||||
peak = Peak.none # R128_* tags do not store the track/album peak
|
||||
else:
|
||||
store_track_gain = self.store_track_gain
|
||||
store_album_gain = self.store_album_gain
|
||||
target_level = self.config['targetlevel'].as_number()
|
||||
peak = self._peak_method
|
||||
|
||||
return store_track_gain, store_album_gain
|
||||
return store_track_gain, store_album_gain, target_level, peak
|
||||
|
||||
def handle_album(self, album, write, force=False):
|
||||
"""Compute album and track replay gain store it in all of the
|
||||
|
|
@ -1295,7 +1301,7 @@ class ReplayGainPlugin(BeetsPlugin):
|
|||
)
|
||||
|
||||
tag_vals = self.tag_specific_values(album.items())
|
||||
store_track_gain, store_album_gain = tag_vals
|
||||
store_track_gain, store_album_gain, target_level, peak = tag_vals
|
||||
|
||||
discs = dict()
|
||||
if self.per_disc:
|
||||
|
|
@ -1309,9 +1315,7 @@ class ReplayGainPlugin(BeetsPlugin):
|
|||
for discnumber, items in discs.items():
|
||||
try:
|
||||
album_gain = self.backend_instance.compute_album_gain(
|
||||
items,
|
||||
self.config['targetlevel'].as_number(),
|
||||
self._peak_method,
|
||||
items, target_level, peak
|
||||
)
|
||||
if len(album_gain.track_gains) != len(items):
|
||||
raise ReplayGainError(
|
||||
|
|
@ -1344,13 +1348,11 @@ class ReplayGainPlugin(BeetsPlugin):
|
|||
self._log.info(u'analyzing {0}', item)
|
||||
|
||||
tag_vals = self.tag_specific_values([item])
|
||||
store_track_gain, store_album_gain = tag_vals
|
||||
store_track_gain, store_album_gain, target_level, peak = tag_vals
|
||||
|
||||
try:
|
||||
track_gains = self.backend_instance.compute_track_gain(
|
||||
[item],
|
||||
self.config['targetlevel'].as_number(),
|
||||
self._peak_method,
|
||||
[item], target_level, peak
|
||||
)
|
||||
if len(track_gains) != 1:
|
||||
raise ReplayGainError(
|
||||
|
|
|
|||
Loading…
Reference in a new issue