diff options
| author | skal <pascal.massimino@gmail.com> | 2026-03-05 22:14:25 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-03-05 22:14:25 +0100 |
| commit | 98def09292f62ae0de17c1f60a2599c6e0b4fbce (patch) | |
| tree | 0ccc8f8bb0bb995cad3484ddcc568ff6b1674233 /tools/specplay_README.md | |
| parent | 2f8926f433248af28081497e8371e02abe61d6ff (diff) | |
chore: remove dead specplay tool and all references
specplay was removed from the build but source/docs remained.
Delete tools/specplay.cc, tools/specplay_README.md, and remove
specplay sections from TOOLS_REFERENCE.md and BACKLOG.md.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'tools/specplay_README.md')
| -rw-r--r-- | tools/specplay_README.md | 164 |
1 files changed, 0 insertions, 164 deletions
diff --git a/tools/specplay_README.md b/tools/specplay_README.md deleted file mode 100644 index 72d9ec1..0000000 --- a/tools/specplay_README.md +++ /dev/null @@ -1,164 +0,0 @@ -# specplay - Audio Analysis & Playback Tool - -Standalone diagnostic tool for analyzing and playing .spec spectrogram files and .wav audio files. - -## Usage - -```bash -./build/specplay <file.spec|file.wav> -``` - -## Features - -### Current (v1.0) -- ✅ Plays .spec files via IDCT synthesis (matches demo playback exactly) -- ✅ Plays .wav files for comparison -- ✅ Reports PCM statistics: - - **Peak level**: Maximum absolute sample value (detects clipping if > 1.0) - - **RMS level**: Root-mean-square energy (loudness measure) -- ✅ Real-time clipping detection during playback with sample position -- ✅ Validates .spec file format (magic bytes, version, DCT size) - -### Example Output -``` -Loading .spec: version=1, dct_size=512, frames=68 -PCM stats: Peak=0.403, RMS=0.058 -Playing 1.09 seconds... Press Ctrl+C to stop. -Playback complete. -``` - -## Use Cases - -1. **Debugging Audio Issues** - - Quickly identify which samples have clipping (Peak > 1.0) - - Compare .wav source vs .spec output to detect analysis artifacts - - Verify spectrogram regeneration after DCT changes - -2. **Quality Assurance** - - Batch test all .spec files for clipping before committing - - Measure loudness consistency across samples (RMS levels) - - Validate spectrograms match expected characteristics - -3. **Development Workflow** - - Test individual samples without running full demo - - A/B compare different spectrogram generation parameters - - Verify procedural note generation output - -## Technical Details - -- **Sample Rate**: 32kHz (matches demo audio engine) -- **Format**: Mono (duplicated to stereo for playback) -- **IDCT**: Uses same `idct_512()` function as demo (bit-exact) -- **Clamping**: Clipping detected but samples clamped to [-1, 1] for playback - -## Future Enhancement Ideas - -### Priority 1: Analysis Features -- [ ] **Spectral visualization**: ASCII art frequency plot -- [ ] **Waveform display**: Time-domain amplitude graph -- [ ] **Frequency analysis**: Dominant frequency, spectral centroid -- [ ] **Dynamic range**: Measure headroom, suggest normalization -- [ ] **Duration info**: Show seconds, samples, frames - -### Priority 2: Comparison Tools -- [ ] **Diff mode**: `specplay --compare file.wav file.spec` - - Side-by-side PCM stats - - RMS error, peak difference - - Correlation coefficient -- [ ] **Batch mode**: `specplay --batch assets/final/*.spec` - - Generate CSV report of all stats - - Sort by peak level (find clipping candidates) - - Find outliers (unusually loud/quiet samples) - -### Priority 3: Export Features -- [ ] **WAV export**: `specplay file.spec --export output.wav` - - Convert .spec → .wav for external analysis - - Useful for importing into audio editors -- [ ] **Normalization**: `specplay file.spec --normalize --export normalized.wav` - - Auto-scale to target peak/RMS - - Preserve transients - -### Priority 4: Advanced Analysis -- [ ] **Spectral envelope**: Extract formants, resonances -- [ ] **Harmonic analysis**: Detect fundamental frequency, harmonics -- [ ] **Onset detection**: Find transient attacks (kick/snare hits) -- [ ] **Spectral flux**: Measure frequency content change over time - -### Priority 5: Interactive Mode -- [ ] **Seek controls**: Play from specific time offset -- [ ] **Loop mode**: Repeat playback indefinitely -- [ ] **Volume control**: Adjust playback gain -- [ ] **Real-time waveform**: Live visualization during playback - -## Integration with Build System - -Built automatically when `DEMO_BUILD_TOOLS=ON`: -```bash -cmake -S . -B build -DDEMO_BUILD_TOOLS=ON -cmake --build build --target specplay -``` - -Or with all options: -```bash -cmake -S . -B build -DDEMO_ALL_OPTIONS=ON -cmake --build build -``` - -## Code Architecture - -- **Minimal dependencies**: Only uses audio subsystem + miniaudio -- **Self-contained**: No GPU, no platform layer (pure audio) -- **Size**: ~250 lines (easy to extend) -- **Format support**: - - `.spec` via SpecHeader parser - - `.wav` via miniaudio decoder (also handles .aif, .mp3) - -## Related Tools - -- **spectool**: Analyzes .wav → generates .spec (batch processing) -- **specview**: ASCII visualization of .spec frequency content -- **specplay**: This tool (playback + analysis) - -## Troubleshooting - -**"Failed to read SpecHeader"** -- File is not a valid .spec file -- Try with spectool to regenerate: `./build/spectool analyze input.wav output.spec` - -**"Peak exceeds 1.0! Will clip during playback."** -- Spectrogram has too much energy -- Likely needs regeneration after DCT changes -- Or source .wav is already clipping - -**No audio output** -- Check system audio device -- Ensure 32kHz sample rate is supported -- Try with a different .spec file (may be empty/silent) - -## Examples - -### Find all clipping samples -```bash -for f in assets/final/*.spec; do - ./build/specplay "$f" | grep "WARNING" && echo "$f" -done -``` - -### Compare wav source to spec output -```bash -./build/specplay assets/originals/kick.wav -./build/specplay assets/final/KICK.spec -# Compare Peak/RMS values -``` - -### Quick loudness check -```bash -./build/specplay assets/final/KICK_606.spec | grep "RMS" -# RMS > 0.3: loud, RMS < 0.1: quiet -``` - ---- - -**Last Updated**: February 6, 2026 -**Author**: Claude (AI assistant) -**Status**: Production-ready, actively used for debugging |
