cleanup
This commit is contained in:
@@ -1,78 +1,58 @@
|
||||
# uj-mastering-master
|
||||
Custom mastering toolkit providing comprehensive metrics to evaluate audio masterings through visual analysis.
|
||||
|
||||
Custom mastering toolkit providing visual metrics for evaluating audio masterings.
|
||||
Developed with Claude Code assistance.
|
||||
|
||||
## Features
|
||||
|
||||
### ✅ Current Implementation
|
||||
- **Complete GUI Application**: Modular PyQt5 interface with drag-and-drop and file dialog support
|
||||
- **Real-time Analysis**: Background threading with embedded matplotlib visualization
|
||||
- **Font Management**: CJK-compatible font system with custom font support from `fonts/` directory
|
||||
- **Audio Support**: MP3, WAV, and FLAC file analysis
|
||||
- **RMS Power Analysis**: Rolling window analysis with adaptive color mapping
|
||||
- **Metadata Display**: Automatic extraction and display of audio tags and BPM
|
||||
### Current
|
||||
- **PyQt5 GUI**: drag-and-drop or file-dialog ingest of `.mp3`, `.wav`, `.flac`
|
||||
- **RMS power analysis** on a 10 s rolling window with adaptive colour scale
|
||||
- **BPM detection** via librosa
|
||||
- **CJK-safe font system** with custom fonts loaded from `fonts/` (gitignored), system fallbacks, and a live font selector
|
||||
- **Background analysis thread** so the UI stays responsive
|
||||
- **Embedded matplotlib canvas** with auto-regenerated plots on font change
|
||||
|
||||
### 🚧 In Development
|
||||
- **Plot Control Widgets**: Dedicated cluster for plot manipulation and style controls
|
||||
- **LUFS Metrics**: Professional loudness measurement implementation
|
||||
- **Interactive Plotting**: Real-time axis control and style customization
|
||||
### Roadmap
|
||||
See [CLAUDE.md](CLAUDE.md) for the full development roadmap. Near-term:
|
||||
plot-control widget cluster, LUFS, dynamic range, interactive axis controls.
|
||||
|
||||
### 🔮 Planned Features
|
||||
- **Audio Comparison**: Reference vs. comparee analysis for mastering evaluation
|
||||
- **Advanced Metrics**: Dynamic range, spectral analysis, and professional standards compliance
|
||||
- **Standalone Releases**: Self-contained executable distribution
|
||||
## Quick start
|
||||
|
||||
This project uses [uv](https://docs.astral.sh/uv/). With uv installed:
|
||||
|
||||
```bash
|
||||
uv sync
|
||||
uv run ujm
|
||||
```
|
||||
|
||||
`uv run ujm` is the only supported entry point — it boots the GUI.
|
||||
|
||||
### Logging flags
|
||||
```bash
|
||||
uv run ujm --log-level DEBUG # ERROR | WARN | INFO | DEBUG | TRACE
|
||||
uv run ujm --log-file # also write audio_analysis.log
|
||||
```
|
||||
|
||||
### Fonts
|
||||
Drop `.ttf` / `.otf` / `.ttc` files into `fonts/` to get them in the font
|
||||
selector. The directory is gitignored to avoid bundling licensed font data.
|
||||
See [CJK_FONTS.md](CJK_FONTS.md) for details.
|
||||
|
||||
## Dependencies
|
||||
- **Core**: `librosa`, `numpy`, `matplotlib`, `mutagen`
|
||||
- **GUI**: `PyQt5`
|
||||
- **Audio Processing**: Advanced librosa-based analysis pipeline
|
||||
|
||||
## Usage
|
||||
|
||||
### GUI Application (Recommended)
|
||||
```bash
|
||||
python main.py
|
||||
```
|
||||
- **Load Files**: Use "Open Audio File..." button or drag-and-drop
|
||||
- **Font Control**: Adjust interface fonts and regenerate plots automatically
|
||||
- **Analysis Display**: View real-time RMS power analysis with metadata
|
||||
- **File Management**: Switch between analyzed files using the file list
|
||||
|
||||
### Command Line Analysis (Legacy)
|
||||
```bash
|
||||
# 1. Edit files.txt with your audio file paths
|
||||
# 2. Run batch analysis
|
||||
python master_core.py
|
||||
```
|
||||
`librosa`, `numpy`, `matplotlib`, `mutagen`, `PyQt5` — all pinned through
|
||||
`uv.lock`. Python 3.10+.
|
||||
|
||||
## Architecture
|
||||
|
||||
### Modular Design
|
||||
- **Self-contained Widgets**: Easy layout management and customization
|
||||
- **Background Processing**: Non-blocking analysis with progress feedback
|
||||
- **Signal-based Communication**: Clean separation between GUI and analysis logic
|
||||
|
||||
### Key Components
|
||||
- `main.py`: Complete GUI application with modular architecture
|
||||
- `font_control_widget.py`: Unified font management with plot regeneration
|
||||
- `analysis_results_manager.py`: Threaded analysis with caching
|
||||
- `audio_visualization_widget.py`: Embedded matplotlib with Qt integration
|
||||
|
||||
## Development Roadmap
|
||||
|
||||
### 🎯 Next Priority: Plot Control System
|
||||
Moving from font-focused interface to comprehensive plot manipulation:
|
||||
- Cluster plot controls (refresh, style, metric selection)
|
||||
- Interactive axis range selection
|
||||
- Real-time plot style customization
|
||||
- Foundation for comparison features
|
||||
|
||||
### 🎵 Short-term Goals
|
||||
- **LUFS Implementation**: Professional loudness standards
|
||||
- **Plot Interactivity**: GUI-controlled visualization styles
|
||||
- **Metric Selection**: Choose which analysis to display
|
||||
|
||||
### 🎼 Long-term Vision
|
||||
- **Mastering Comparison**: Side-by-side analysis tools
|
||||
- **Professional Standards**: EBU R128 compliance checking
|
||||
- **Standalone Distribution**: Self-contained executable releases
|
||||
| Module | Responsibility |
|
||||
| --- | --- |
|
||||
| `main.py` | `MainWindow` + the `ujm` entry point |
|
||||
| `analysis_results_manager.py` | Background `QThread` worker, result cache |
|
||||
| `master_core.py` | `AudioFile`: librosa loading, RMS rolling window, BPM |
|
||||
| `plotting_engine.py` | Matplotlib `Figure` builder for the power graph |
|
||||
| `audio_visualization_widget.py` | Embedded `FigureCanvasQTAgg` host |
|
||||
| `font_manager.py` | Custom + system CJK font discovery, matplotlib/Qt config |
|
||||
| `font_control_widget.py` | Font picker, size slider, refresh-plot button |
|
||||
| `logger_setup.py` | CLI log-level parsing + custom TRACE level |
|
||||
| `setup_fonts.py` | Diagnostic utility (run standalone) |
|
||||
|
||||
Reference in New Issue
Block a user