A classic-skin music player for the Miyoo Mini Plus (OnionOS).
- Plays MP3, FLAC, Ogg Vorbis and WAV (any sample rate, mono or stereo)
- Loads classic
.wszskins; ships with an original skin, "Graphite" - Skin browser with live preview
- 10-band equalizer with presets (including one tuned for the built-in speaker)
- Spectrum / oscilloscope in the main window, five full-screen visualizers
- Music library browser, playlists (
.m3u), shuffle, repeat, sleep timer - Screen-off playback
- Music in games: quit while playing and the music keeps going in the OnionOS menu, in games and in apps (SELECT + L/R skip, SELECT + Up/Down volume, SELECT + START pause)
MiniAmp is an independent project, written from scratch. It is not affiliated with Winamp, Nullsoft or Llama Group and contains no Winamp code or artwork.
Built by Claude. This player was written by Claude (Anthropic's AI) working with Keith Snyder.
Skins from the classic era load as-is (shown here: the skin browser previewing a downloaded skin):
Copy App/MiniAmp from the release zip to the SD card, or install it with
Mixtape. See pkgsrc/README.txt
for controls.
OnionOS's audioserver takes a single stream of audio, so two programs playing at once
chop each other up. Instead, MiniAmp's background service decodes into shared memory and a
small wrapper around OnionOS's libpadsp.so (which the menu and every game load) mixes
that music into the program's own sound before it reaches the audioserver. The original
library is kept as libpadsp_orig.so and restored when the option is turned off. Games play at
different sample rates (Mario 64 at 32000 Hz, Balatro at 44100, the menu at 48000), so the
music is resampled to each game's rate as it's mixed in (src/bgm_mix.h).
Some ports stop the audioserver (KillAudioserver=1 in their launcher) and send their
sound straight to the audio chip through the vendor's libmi_ao.so, as steward-fu's Miyoo
SDL2 does. The same
wrapper also stands in for that library's MI_AO_SetPubAttr/MI_AO_SendFrame and mixes
the music in there. (A port that stops the audioserver but makes no sound at all, like
SkiFree, leaves nothing to mix into, so the music stops; setting KillAudioserver=0 in its
.port file keeps it going.) To turn just that part off, create an empty file
App/MiniAmp/data/no_chip_hook. Both paths are tested on a PC with tools/test_mix.c and
tools/chiptest/run.sh. See
src/padsp_wrap.c and src/gamemusic.c.
Uninstalling. Erasing MiniAmp in Mixtape
(0.1.5 or later) runs mixtape-uninstall.sh first, which stops the background music and
puts the original library back. If you delete the folder by hand, turn Music in games off
first, or run App/MiniAmp/mixtape-uninstall.sh yourself.
See docs/BUILDING.md.
MIT (see LICENSE). Third-party components: THIRD_PARTY_NOTICES.md.

