You have 3 solutions. Put the proper values instead of 0, remove the R128 tags by script, use ID3.
Here’s chatGPT solution (PS: This is 100% outside of Symfonium support …)
Excellent question — this is a known issue with how Beets handles ReplayGain tagging for FLACs (and other lossless formats) when using the replaygain plugin.
Let’s go through what’s happening and how to fix it.
The Problem
When you run:
beet replaygain
on FLAC files, Beets:
- Computes ReplayGain values and writes ID3-style tags like
REPLAYGAIN_ALBUM_GAIN, REPLAYGAIN_TRACK_GAIN, etc. 
- Also writes EBU R128 tags (
R128_TRACK_GAIN, R128_ALBUM_GAIN) but incorrectly sets them to 0. 
Those zeroed R128 tags can override or confuse players that prioritize R128 values (like foobar2000, mpv, etc.), resulting in no volume adjustment.
Solution 1: Disable R128 Tagging in Beets
In your Beets config file (~/.config/beets/config.yaml), add or adjust the replaygain section as follows:
replaygain:
backend: ffmpeg # or bs1770gain / audiotools / gstreamer
targetlevel: 89 # or whatever you prefer
auto: yes
overwrite: yes
r128: no # ⬅️ This disables writing R128 tags
Then re-run:
beet replaygain -f
(-f forces re-calculation and re-tagging.)
This tells Beets not to write R128_* tags at all, sticking only to the classic ReplayGain tags.
Solution 2: Keep R128 but Fix Values (Advanced)
If you want to keep R128 tags (some players prefer them) but ensure they match ReplayGain correctly, you can patch Beets or use a post-processing script.
Beets calculates ReplayGain in LU (R128-style units) internally, so in principle it could write proper values. Unfortunately, as of Beets 2.x/3.x, this is not implemented correctly for FLAC.
You can fix it via plugin patching:
-
Locate your Beets installation (pip show beets → Location).
-
Edit beetsplug/replaygain.py.
-
Find the _store method (near the end of the file) and comment out the R128 write block:
if self.config['r128'].get(bool):
...
or replace it with a proper conversion (LUFS to dB if desired).
Then re-run beet replaygain -f.
Quick Cleanup for Existing Files
To remove broken R128 tags from your existing FLACs:
metaflac --remove-tag=R128_ALBUM_GAIN --remove-tag=R128_TRACK_GAIN *.flac
or recursively:
find . -type f -name '*.flac' -exec metaflac --remove-tag=R128_ALBUM_GAIN --remove-tag=R128_TRACK_GAIN {} +
find . -type f -name '*.flac' -exec metaflac --remove-tag=R128_TRACK_GAIN {} +
Then reapply ReplayGain with Beets after r128: no fix.
TL;DR
| Action |
Command / Config |
Effect |
| Disable R128 |
r128: no in config.yaml |
Stops adding broken R128 tags |
| Remove bad tags |
metaflac --remove-tag=R128_* |
Cleans old zeroed R128 tags |
| Reapply ReplayGain |
beet replaygain -f |
Rewrites correct ReplayGain tags |
Would you like me to show the exact patch lines to modify inside Beets’ replaygain.py if you want to keep R128 tags but make them correct instead of removing them?