Releases: neoge/pocket-mp3
Releases · neoge/pocket-mp3
Release list
Pocket MP3 Player 0.3.2
First public release of the Pocket MP3 Player core.
The decoder is pure hardware. There is no soft CPU and no firmware. The core
reads the bit stream, decodes the Huffman data, requantizes it, does the stereo
processing, the IMDCT and the polyphase synthesis, and resamples the result —
all of it in SystemVerilog on the Cyclone V.
Install
Extract neoge.MP3Player_0.3.2_2026-07-19.zip to the root of the SD card. It
makes this tree:
/Cores/neoge.MP3Player/
/Platforms/pocketmp3.json
/Platforms/_images/pocketmp3.bin
/Assets/pocketmp3/common/ put your .mp3 files here
Then open openFPGA > Media > MP3 Player on the Pocket and select a file.
Playback starts automatically.
If the core does not appear in the menu, delete the files System/*cache*.bin
from the SD card. Then do a full power cycle. Sleep mode is not sufficient.
Features
- MPEG-1 Layer III decoder, 32–320 kbps
- 48 kHz plays natively; 44.1 kHz is resampled to 48 kHz
- Mono, stereo, joint stereo (MS) and dual channel
- Play, pause, stop, seek with acceleration, and repeat
- ID3v2.3, ID3v2.4 and ID3v1 tags on screen
- On-screen display with time, progress bar and codec data
- File size up to 64 MB
Controls
| Button | Action |
|---|---|
| A | Play / pause |
| B | Stop |
| D-pad Left / Right | Seek −10 s / +10 s |
| D-pad Up / Down | Seek +20 s / −20 s |
| Select + D-pad | Seek ±1 s |
| Start | Repeat on / off |
| Seek key pressed again quickly | The step becomes two times larger, up to ×32 |
Limits
- MPEG-1 Layer III only. Layer I, Layer II, MPEG-2 and MPEG-2.5 do not play.
- A 32 kHz file decodes, but it plays at the incorrect speed.
- The track length and the seek position use a constant-bit-rate calculation. A
VBR file thus shows an incorrect length, and the seek position is not accurate. - The core does not decode intensity stereo. It passes those bands through.
- The core decodes a mixed block as a long block.
- Sleep mode is not supported.
Resource use
9793 ALMs (53 %), 79 M10K blocks (26 %), 22 DSP blocks (33 %) and 1 PLL.
Checksum
SHA-256 b0c52fc7de497b092cbf603e242ce563e383cb282744cef42167dd0471ee8275