VOGONS


Lowest CPU to play MP3s?

Topic actions

Reply 20 of 49, by RiP

User metadata
Rank Member
Rank
Member
xjas wrote:

Even a 286 or 386 should have no issue playing 44kHz WAVs if it can read them from disk & DMA them to the sound card fast enough. Playing a WAV file is not CPU intensive if you have DMA.

It's when you get into mixing or resampling that it starts bogging down the CPU, and if you're using something like Media Player in Windows 9x, it's doing that. Try from the DOS command line - it should be no sweat.

Tiido wrote:

I had hard time playing WAVs on a PC104 module based on AMD Elan520 (133MHz 5x86), and simply because it only had PIO HDD access. Playing over built in PCI 100Mbit network was fine though. MP3s weren't a problem on that board though sometimes there was stutter here or there when doing other things.

Well, I used an IDE VIA VT6421A busmaster card but it made no difference.

The main problem was my Asus PCI-USB2 (NEC controller) 😵
After removing it, I could play MP3 128K @ 44KHz stereo on my AMD 5x86 133@160MHz with Winamp (CPU:100%)
But playing WAV still takes 50-60% of the CPU. Anyway to stop Windows from mixing or resampling? 😕

Also possible to tweak the system to work faster?

Attachments

  • bios.jpg
    Filename
    bios.jpg
    File size
    315.72 KiB
    Views
    1471 views
    File license
    Fair use/fair dealing exception

Reply 21 of 49, by feipoa

User metadata
Rank l33t++
Rank
l33t++

I also noticed when I was doing benchmarking years ago that having USB card installed reduced the benchmark results. It is noted in a thread somewhere.

Enabling slow refresh is the optimal setting, but probably won't help your situation much. You need to disable the spectrum analyser and scrolling song name in Winamp. That helps A LOT!

Plan your life wisely, you'll be dead before you know it.

Reply 22 of 49, by torindkflt

User metadata
Rank Member
Rank
Member

I've been able to use a version of MPXPlay optimized specifically for the 486 to play MP3s on my 486DX4-100. I do have to disable "HQ mode" for it to work (I presume this limits it to 22kHz mono) but beyond that it seems to work fairly well, even with high-bitrate 320kbps MP3 files. The CPU is pretty much pegged at 100% nearly the entire time though. I posted a video of it on YouTube a couple years ago: https://www.youtube.com/watch?v=0c6OKiR2cXs

Barring downsampling to extremely low bitrates, I've heard a small consensus that a DX2-66 is about the lowest you could go for reliable MP3 playback, and even then it's right on the edge. For me and my unoptimized setup, the DX4-100 is just barely enough if I stay in DOS mode (I do have an MP3 player that works on it under Win95, but I literally cannot even move the mouse while it is playing or it'll skip). For reliable multitasking MP3 playback under Windows, I gotta step up to at least my Cyrix MediaGX-180 Compaq.

Reply 23 of 49, by RiP

User metadata
Rank Member
Rank
Member
feipoa wrote:

I also noticed when I was doing benchmarking years ago that having USB card installed reduced the benchmark results. It is noted in a thread somewhere.

Enabling slow refresh is the optimal setting, but probably won't help your situation much. You need to disable the spectrum analyser and scrolling song name in Winamp. That helps A LOT!

Oh, I didn't know about it until I found it by myself. What's wrong with USB card? and what thread?
Yes, those features are disabled and hopefully, I can play it without any downsampling/mono but only at 160MHz 😁
I'm sure Cyrix 5x86 can play it much better if I could find one some day.

Reply 24 of 49, by Jo22

User metadata
Rank l33t++
Rank
l33t++
Grzyb wrote:
matze79 wrote:

you can also hookup a mp3 decoding module on the lpt port,
so you can play with any cpu that can stream the data to lpt.

There were also some internal sound cards with hardware MP3 decoding, but they never got popular, at least not in the PC,
though I reckon they were somewhat more successful in the Amiga world.

That makes me wonder - is MP3 still a thing ?
- I thought it was delcared dead since a year or two (if it's supported by Amiga, it really has to be obsolete, hasn't it ? 😉 ).
https://www.telegraph.co.uk/technology/2017/0 … 3-declare-dead/

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 25 of 49, by Tiido

User metadata
Rank l33t
Rank
l33t

There's jsut way too much material out there in the format so it will never die even though I would much prefer to see FLAC and OGG to be the only things you can find 🤣. It doesn't help that many tools default to MP3 or outright won't support anything but non compressed and MP3 format. Popular playback devices often don't support any other formats either, unless you can RockBox them...

T-04YBSC, a new YMF71x based sound card & Official VOGONS thread about it
Newly made 4MB 60ns 30pin SIMMs ~
mida sa loed ? nagunii aru ei saa 😜

Reply 26 of 49, by zyga64

User metadata
Rank Oldbie
Rank
Oldbie
RiP wrote:

I'm sure Cyrix 5x86 can play it much better if I could find one some day.

Yes, with Cyrix 5x86/100 with optimization features enabled (as in feipoa thread) I was able to play MP3s in full quality via MPXPlay. CPU usage was near 100%, though.

1) VLSI SCAMP /286@20 /4M /CL-GD5422 /CMI8330
2) i420EX /486DX33 /16M /TGUI9440 /GUS+ALS100+MT32PI
3) i430FX /K6-2@400 /64M /Rage Pro PCI /ES1370+YMF718
4) i440BX /P!!!750 /256M /MX440 /SBLive!
5) iB75 /3470s /4G /HD7750 /HDA

Reply 27 of 49, by matze79

User metadata
Rank l33t
Rank
l33t
RiP wrote:
xjas wrote:

But playing WAV still takes 50-60% of the CPU. Anyway to stop Windows from mixing or resampling? 😕

Also possible to tweak the system to work faster?

What Soundcard do you use ?

https://www.retrokits.de - blog, retro projects, hdd clicker, diy soundcards etc
https://www.retroianer.de - german retro computer board

Reply 28 of 49, by eisapc

User metadata
Rank Member
Rank
Member

486DX4@100 Mhz is sufficient for playing MP3 under Windoze. Used a Pentium 66 for some time. But you had to prevent the screensaer to start to prevent stutter. Probably a DOS player needs less resources and works even with DX2/66.

Reply 29 of 49, by Scali

User metadata
Rank l33t
Rank
l33t

WinAMP probably has one of the best integer-optimized MP3 decoders available for x86.
I suppose as with most things, it depends on what you want to focus on: performance or quality?
Back in the day I switched from WinAMP to Sonique on my Pentium 133. It took way more CPU (probably because it used floating point and generally better accuracy/signal reconstruction), but the sound quality was significantly better.

I guess the real question is: how far could you optimize an MP3 integer decoder for x86? WinAMP is fast, but probably did not go 'all out' in terms of performance, but just a decent balance between quality and performance. I wonder if you could squeeze more performance out of it by using some clever approximations/tables etc, and hand-optimzing the code in assembly for a specific CPU architecture.
I think it is an interesting subject to research at some point.

At any rate, the floating point MP3 decoders will work quite well on a Pentium, but will be very poor on 486, because the Pentium FPU is just way faster. With integer decoders, the difference is much smaller.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 30 of 49, by Grzyb

User metadata
Rank Oldbie
Rank
Oldbie

Wait a min...
Do you mean that integer decoders can be faster than floating-point ones?

Originally, all the decoders were floating-point, and the required hardware was:

                Pentium 486DX2-66  486DX-50  486DX-33
MPEG-1 stereo ok - - -
MPEG-1 downmix* ok ok - -
MPEG-1 mono ok ok ok -
MPEG-2 stereo ok ok ok -
MPEG-2 downmix* ok ok ok ok
MPEG-2 mono ok ok ok ok
*downmix: the original stereo signal will be played back as a mono signal
"MPEG-1" = "MPEG-1 Layer-3", i.e. sample rates 32, 44.1 or 48 kHz
"MPEG-2" = "MPEG-2 Layer-3", i.e. sample rates 16, 22.05 or 24 kHz

(taken from l3enc272 package)

Integer decoders came much later, for more modern hardware, probably much faster than 486, only lacking FPU.
Or not?
Is there a chance to play MP3 on FPU-less processors like 386DX, 486SX, or NexGen?

Żywotwór planetarny, jego gnijące błoto, jest świtem egzystencji, fazą wstępną, i wyłoni się z krwawych ciastomózgowych miedź miłująca...

Reply 32 of 49, by Scali

User metadata
Rank l33t
Rank
l33t
Grzyb wrote:

Do you mean that integer decoders can be faster than floating-point ones?

Sure they can. Especially on early x86 machines. The FPU has a rather cumbersome stack-based programming model, not a general purpose register model.
Aside from that, FPU instructions have higher latency than integer ones. Especially on 486 and earlier. The Pentium FPU was much faster, but still you had about 3 cycles for simple instructions like FADD/FSUB, where the integer ADD/SUB are 1 cycle, and you had two pipelines, so you could do two integer adds/subs per cycle. So theoretically up to 6 times as fast.

Grzyb wrote:

Originally, all the decoders were floating-point

I'm pretty sure they weren't, because that wouldn't make sense.
The reference implementation of MPEG/JPEG is floating point, but I've had integer-based JPG decoders for 16-bit x86 machines, so I wouldn't see why there wouldn't be any integer-based MP3 decoders.
Even in the era of the Pentium MMX/Pentium II, there were MMX-based decoders for best performance, and MMX is integer-only.

Grzyb wrote:

Is there a chance to play MP3 on FPU-less processors like 386DX, 486SX, or NexGen?

Pretty sure there is, although probably not at 128 kbit.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 33 of 49, by Scali

User metadata
Rank l33t
Rank
l33t
jmarsh wrote:

Integer decoding isn't really faster, it just enabled decoding on CPUs without FPU.

Sure it is.
For example, on my Pentium 133, a 128 kbit MP3 took about 25-30% CPU with WinAMP (integer), but about 60-70% with Sonique (floating point).
You can't really compare that with ARM, which has a much more modern and advanced FPU (not to mention SIMD extensions like NEON).

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 34 of 49, by Grzyb

User metadata
Rank Oldbie
Rank
Oldbie

Hard to believe it, I was under the impression that all the MP3 players heavily used FPU...
Heh, I recall playing MP3 on some Pentium 1 machine (133 MHz or so), and it was OK...
then I tried it on a WinChip C6 200 MHz (known for poor FPU), and it was much worse, hard to do anything else while playing music!

Anyway, what's the lowest FPU-less CPU to play MP3s?
Any success stories? Anybody?

Żywotwór planetarny, jego gnijące błoto, jest świtem egzystencji, fazą wstępną, i wyłoni się z krwawych ciastomózgowych miedź miłująca...

Reply 35 of 49, by Scali

User metadata
Rank l33t
Rank
l33t
Grzyb wrote:

Hard to believe it, I was under the impression that all the MP3 players heavily used FPU...

I believe with Winamp you want to look at early versions, where they used the so-called 'Nitrane' decoder.
That's the super-fast decoder which can use integer code and even MMX in later versions.
At some point they switched to the reference Fraunhofer decoder, which uses FPU.

There are also some players that use the MAD decoder (there is/was a Winamp plugin available), which is integer: https://www.underbit.com/products/mad/

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 38 of 49, by bakemono

User metadata
Rank Oldbie
Rank
Oldbie

This player can handle 160kbps 44KHz stereo on a 486-100 (maybe even a DX2-80) http://www.vgmpf.com/Wiki/index.php/Digital_Sound_System

The Amiga OS "amplifier" can play 64kbps 22KHz downmixed to 11KHz on a 50MHz 68030 with 68882 FPU 😉

again another retro game on itch: https://90soft90.itch.io/shmup-salad

Reply 39 of 49, by Grzyb

User metadata
Rank Oldbie
Rank
Oldbie

Well, I'm waiting for somebody to do this - https://www.youtube.com/watch?v=6Jj97NXgHw4
...but without an FPU.

Żywotwór planetarny, jego gnijące błoto, jest świtem egzystencji, fazą wstępną, i wyłoni się z krwawych ciastomózgowych miedź miłująca...