muOS BGM Normalizer (for handhelds & PCs)

:musical_note: SPDW BGM Normalizer v8.6 β€” Release Notes

Package: SPDW-BGM-Normalizer.muxapp
Release Date: 2026-07-21
Author: Kentani Kenji (Sir Pips du Wilson) β€” SPDW Factory Lab
Project: Chou Henka Project


What’s New in v8.6

:artist_palette: Anime-Style Header Redesign

  • Massive β€œBGM” title rendered with dedicated fontbgm.ttf (48px) β€” inspired by anime title cards
  • Pixel β€œNormalizer” badge in a boxed frame with cyan border β€” rendered with fontnorm.ttf
  • Chromatic ghosting effect on the BGM title for CRT-style depth
  • Header height expanded from 52px to 70px for bolder visual presence

:high_voltage: Dual-Method FFmpeg Engine

  • Method 1: Real-time progress tracking via -progress pipe:1 with live percentage updates
  • Method 2: Fallback subprocess.run for muOS devices where progress pipes fail β€” ensures conversion always completes
  • Anti-deadlock protection: stderr=subprocess.DEVNULL prevents buffer overflow freezes
  • Safety timeout: Auto-kill after 180 seconds of inactivity

:speaker_high_volume: Enhanced Audio Pipeline

  • LUFS analysis timeout increased to 300 seconds β€” handles large files on slow SD cards
  • Silence trim fix β€” removed invalid -c:a copy flag; now properly re-encodes with libvorbis
  • 3-tier fallback system: 2-pass β†’ 1-pass β†’ simple OGG conversion β€” never leaves a file behind
  • Per-file error isolation β€” if one track fails, the batch continues with the rest

:video_game: Input Fixes

  • Y button mapping β€” now toggles file info panel on muOS (BTN_Y_CODES)
  • Y key mapping β€” now toggles file info on PC (SDLK_y)
  • Full controller support: D-Pad, A/B/X/Y, L1/R1, START

:shield: Startup Hardening

  • Critical font check β€” validates font.ttf before SDL2 init; exits gracefully with logged error
  • Library load safety β€” SDL2, SDL2_ttf, SDL2_image wrapped in try/except
  • Step-by-step boot logging β€” every init phase logged: SDL, TTF, fonts, window, renderer
  • Multi-font support β€” font.ttf (required), fontbgm.ttf & fontnorm.ttf (optional with fallback)

:artist_palette: Visual Polish

  • 3 themes: SPDW Megastructure (default), Tailscale Classic, SPDW Hybrid
  • Analog glitch FX β€” subtle vertical edge interference with fluid motion
  • HUD corner accents on SPDW themes
  • Persistent in-app logging β€” console engine view during conversion

Installation

muOS (Handheld) β€” Archive Manager

  1. Download SPDW-BGM-Normalizer.muxapp

  2. Copy to your SD card:

    /mnt/mmc/MUOS/ARCHIVE/
    
  3. Boot muOS β†’ Applications β†’ Archive Manager

  4. Select SPDW-BGM-Normalizer.muxapp β†’ press A to extract

  5. Restart your handheld

  6. Launch BGM Normalizer from the Applications menu

PC (Windows / Linux / macOS)

  1. Download the source release

  2. Install FFmpeg:

    • Windows: choco install ffmpeg
    • Linux: sudo apt install ffmpeg
    • macOS: brew install ffmpeg
  3. Place fonts in the app folder:

    • font.ttf (required)
    • fontbgm.ttf (optional)
    • fontnorm.ttf (optional)
  4. Run:

    python3 bgm_normalizer.py
    

Requirements

Component Requirement
Device Anbernic RG35XX H/Plus, RG40XXV/H, RG CubeXX, or PC
Firmware muOS (MustardOS) latest stable β€” or any PC OS
FFmpeg Required β€” ffmpeg and ffprobe in PATH
Python 3.11+ (PC only; muOS uses system Python)
Libraries libSDL2-2.0.so.0, libSDL2_ttf-2.0.so.0, libSDL2_image-2.0.so.0 (muOS)
Fonts font.ttf in app directory

File Structure (Installed)

/mnt/mmc/MUOS/application/BGM Normalizer/
β”œβ”€β”€ bgm_normalizer.py           # Main application (Python 3 + SDL2/ctypes)
β”œβ”€β”€ mux_launch.sh               # muOS launcher wrapper
β”œβ”€β”€ config.ini                  # User settings (theme, LUFS, paths)
β”œβ”€β”€ lang.json                   # Translation strings (EN / IT)
β”œβ”€β”€ font.ttf                    # UI font (REQUIRED)
β”œβ”€β”€ fontbgm.ttf                 # Title font (optional)
β”œβ”€β”€ fontnorm.ttf                # Badge font (optional)
β”œβ”€β”€ spdw_bgm_normalizer.log     # Runtime diagnostics log
β”œβ”€β”€ README.md                   # Documentation
└── glyph/
    └── icon.png                # muOS menu icon

Controls

muOS (Controller)

Button Action
D-Pad ↑↓ Navigate menus / file list
A Confirm / Select / Toggle checkbox
B Back / Cancel
X Toggle file selection
Y Toggle file info panel
L1 Filter: select all non-OGG files
R1 Page Down
START Preview selected track

PC (Keyboard)

Key Action
↑ ↓ Navigate
Enter / Space / A Confirm
Esc / B Back
X Toggle selection
Y Toggle info
P Preview
F Filter non-OGG
R Rescan folder
PgUp / PgDn Scroll list

Troubleshooting

Issue Solution
App won’t start Check spdw_bgm_normalizer.log. Ensure font.ttf exists in app folder
β€œffmpeg not found” Install FFmpeg and verify it’s in your system PATH
Conversion very slow Normalization is CPU-intensive. Large files take 2-5 min on handheld
LUFS analysis timeout App auto-falls back to 1-pass direct normalization
Files not appearing Verify scan_source (SD1/SD2/both) or pc_input_dir
Output not found Check /mnt/mmc/MUOS/music/ (muOS) or ~/Music/BGM_Normalized/ (PC)
OGG not playing in muOS Ensure muOS BGM settings scan the correct output folder
Y button not working Fixed in v8.6 β€” update to this release

Screenshots

Boot Animation

Main Menu

Conversion Complete


Credits & Philosophy

Part of the Chou Henka Project ecosystem.

β€œThe waveform is the message. The Rintrompo guides the amplitude. Sbrobs.”

Architected and maintained by Kentani Kenji (Sir Pips du Wilson) β€” SPDW Factory Lab.

This release represents the definitive BGM normalization experience for handheld enthusiasts. From scattered, inconsistent music libraries to perfectly normalized, console-ready OGG files β€” one button press away.


Previous Versions

  • v8.3 β€” Initial definitive release with LUFS normalization, file browser, preview player, 3 themes
  • v8.6 β€” Anime header, dual-method ffmpeg engine, Y button fix, startup hardening, per-file error isolation

Normalize your world. One track at a time.