I was dreaming about this for more than 10 years and now it's finally possible:
https://www.youtube.com/watch?v=3xEyNQA6WegThe CPC is now able to stream MP3 files of any size from a mass storage device in SymbOS, and it still has a lot of CPU time left.
After testing the
AMSDAP (Amstrad MSx aDAPter) prototype two days ago I was able to connect it to the Mother4X board today. SymAmp for SymbOS, which got its MP3 plugin for the MSX in 2007, has been modified for the 16bit CPC port addresses and was directly working fine with the SE-ONE/MP3MSX hardware.
The video also shows the CPU time consumption, which as about 17% for a 96kbps MP3 file - not much more than exactly 1 IRQ. This includes loading the data from the SD-Card (M4Board) or CF-card/harddisc (SYMBiFACE II, X-MASS, CPC-IDE) and sending it to the MP3 decoder hardware, which all still has to be done by the Z80.
The MP3 decoder hardware itself contains an 8KB FIFO-buffer, which makes it possible to use 4KB for the actual playback and the other 4KB for receiving new data from the Z80 in the meantime. In contrast to playing digi samples via the AY/Amdrum/Digiblaster/etc. the Z80 doesn't need to do this job uninterrupted but has some time left (depending on the bitrate), until the MP3 buffer runs out of data and has to be refilled again.
In the video I am using both the MP3MSX hardware (made by Sunrise but not produced anymore) as well as the compatible SE-ONE cartridge (currently produced by TMT Logic and still available). The actual SE-ONE firmware is not providing the data for the VU meter, so I used both to show that in SymAmp as well.