7bdf465799
Introduce a Metric ABC (compute on worker thread, render on GUI thread) with a METRICS registry, and refactor the analysis pipeline around it. RMS power (ported), raw waveform, and BS.1770 LUFS (via pyloudnorm) ship as the initial three; new metrics drop in by appending to METRICS. - metrics.py: Metric ABC + RMSPowerMetric, WaveformMetric (locked to +/-1.1 y-range for float headroom), LUFSMetric (short-term 3 s window + integrated value, with streaming-target reference line). - plot_control_widget.py: metric selector dropdown + Refresh Plot button (moved out of FontControlWidget). - analysis_results_manager.py: AnalysisResult caches the AudioFile and a per-metric data dict; new MetricComputeWorker runs metric switches off the GUI thread via metricComputeStarted/metricReady/metricComputeError signals, so LUFS on a 12-minute track no longer stalls the UI. - main.py: all redraw paths funnel through one _render_or_request helper; stale-result guards keep slow computes from overwriting fresh selections. - plotting_engine.py removed (metadata text moved onto AnalysisResult; figure construction lives in each Metric). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
37 lines
747 B
TOML
37 lines
747 B
TOML
[build-system]
|
|
requires = ["setuptools>=68"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "uj-mastering-master"
|
|
version = "0.1.0"
|
|
requires-python = ">=3.10"
|
|
dependencies = [
|
|
"librosa",
|
|
"numpy",
|
|
"matplotlib",
|
|
"mutagen",
|
|
"pyloudnorm",
|
|
"PyQt5>=5.15.10",
|
|
# 5.15.2 is the only pyqt5-qt5 release with a Windows wheel; later
|
|
# versions are Linux/macOS only.
|
|
"PyQt5-Qt5==5.15.2 ; sys_platform == 'win32'",
|
|
]
|
|
|
|
[project.scripts]
|
|
ujm = "main:main"
|
|
|
|
[tool.setuptools]
|
|
py-modules = [
|
|
"main",
|
|
"analysis_results_manager",
|
|
"audio_visualization_widget",
|
|
"master_core",
|
|
"metrics",
|
|
"font_manager",
|
|
"font_control_widget",
|
|
"plot_control_widget",
|
|
"logger_setup",
|
|
"setup_fonts",
|
|
]
|