fix: REAPER playback — D_VOL removed, Ozone filenames corrected, ReaEQ removed, MIDI quantized

- D_VOL: removed from _build_clip() — not valid at REAPER item level
- Ozone 12: fixed 21 PLUGIN_REGISTRY entries with correct .vst3 filenames
- ReaEQ: removed _calibrate_eq() — built-in plugin format incompatible
- MIDI: quantized all notes to 16th grid (120 ticks at 960 PPQ)

298/298 tests. 0 D_VOL, 0 ReaEQ, all notes on grid, Ozone filenames correct.
This commit is contained in:
renato97
2026-05-04 00:55:08 -03:00
parent e99fa231dd
commit 623af69483
10 changed files with 10698 additions and 158 deletions

View File

@@ -457,11 +457,11 @@ class TestVST3PresetData:
Path(tmp_path).unlink(missing_ok=True)
class TestDVolEmission:
"""Test D_VOL emission for audio clips with vol_mult."""
class TestDVolRemoval:
"""Verify D_VOL is not emitted for any audio clip (removed as REAPER-incompatible)."""
def test_audio_clip_vol_mult_not_one_emits_dvol(self):
"""Audio clip with vol_mult=0.7 emits D_VOL in ITEM."""
def test_audio_clip_with_vol_mult_no_dvol(self):
"""Audio clip with vol_mult=0.7 must NOT emit D_VOL in ITEM."""
meta = SongMeta(bpm=95, key="Am")
clip = ClipDef(
position=0.0, length=16.0, name="Test",
@@ -479,11 +479,11 @@ class TestDVolEmission:
try:
builder.write(tmp_path)
content = Path(tmp_path).read_text(encoding="utf-8")
assert "D_VOL 0.7" in content, "D_VOL line expected for vol_mult=0.7"
assert "D_VOL" not in content, "D_VOL must not be emitted (removed for REAPER compat)"
finally:
Path(tmp_path).unlink(missing_ok=True)
def test_audio_clip_default_vol_mult_emits_no_dvol(self):
def test_audio_clip_default_vol_mult_no_dvol(self):
"""Audio clip with default vol_mult=1.0 emits NO D_VOL."""
meta = SongMeta(bpm=95, key="Am")
clip = ClipDef(
@@ -502,7 +502,7 @@ class TestDVolEmission:
try:
builder.write(tmp_path)
content = Path(tmp_path).read_text(encoding="utf-8")
assert "D_VOL" not in content, "No D_VOL expected for default vol_mult"
assert "D_VOL" not in content, "No D_VOL expected"
finally:
Path(tmp_path).unlink(missing_ok=True)