VOGONS


First post, by ltning

User metadata
Rank Member
Rank
Member

Hi!

Like others, I'm looking for a good CD player for DOS, but I have a special "request": It sould not be playing the CD audio using the drive's own playback functions, but rather read the digital audio data and pass it to the sound card as raw digital data.
Reason? All my CD-ROM/RW/whatever drives have *hideous* amounts of noise on their audio outputs, no matter which sound card I plug them into. And some sound cards make matters even worse by having noisy inputs of their own.

Is there such a thing?
I remember I had a CD player application for OS/2 back in the day which did this - but I'd love to have the same in plain DOS.

I thought Cubic Player did this, but my memory is - as always - rotten.

/Eirik

EDIT: I'm after a player that will forklift the digital data to the playback software - over the IDE cable, not via S/PDIF or other digital audio outputs..

Last edited by ltning on 2022-09-29, 16:09. Edited 1 time in total.

The Floppy Museum - on a floppy, on a 286: http://floppy.museum
286-24/4MB/ET4kW32/GUS+SBPro2
386DX-40/20MB/CL5434 ISA/GUSExtreme
486BL-100/32MB/ET4kW32p VLB/GUSPnP/AWELegacy

~ love over gold ~

Reply 1 of 12, by darry

User metadata
Rank l33t++
Rank
l33t++

Such software does exist and was often bundled with early CDROM drives. Usually it just needs the CDROM driver and MSCDEX to be loaded to work and is typically compatible with all drives .

You should be able to find some fancier ones on old shareware/freeware compilation CDs.

You will also need a drive with an S/PDIF output and a DAC that tolerates 5V S/PDIF ( or some kind of level shifter or converter or maybe).

EDIT: Some options listed here Music CD players for MS-DOS for software

Last edited by darry on 2022-09-29, 16:09. Edited 1 time in total.

Reply 2 of 12, by ltning

User metadata
Rank Member
Rank
Member

Ah but I wasn't thinking about using S/PDIF - I am talking about transferring the digital data over the IDE cable.

Although finding a drive with digital-out is also an option, but won't work with sound cards missing an input.

The Floppy Museum - on a floppy, on a 286: http://floppy.museum
286-24/4MB/ET4kW32/GUS+SBPro2
386DX-40/20MB/CL5434 ISA/GUSExtreme
486BL-100/32MB/ET4kW32p VLB/GUSPnP/AWELegacy

~ love over gold ~

Reply 3 of 12, by darry

User metadata
Rank l33t++
Rank
l33t++
ltning wrote on 2022-09-29, 16:08:

Ah but I wasn't thinking about using S/PDIF - I am talking about transferring the digital data over the IDE cable.

Although finding a drive with digital-out is also an option, but won't work with sound cards missing an input.

Doing this over IDE in DOS is certainly possible, but no idea if it's been done before as it would require special software that might not exist (or I don't know or remember any). You would need to "rip" the CD in real-time and feed it to a sound card without glitches under DOS. DOS CD rippers do exist, but I don't recall anything that rips and plays simultaneously.

You don't need a sound card to use a drive's S/PDIF output and the output is always active, i.e. same audio data that gets sent to the drive's internal DAC gets sent through S/PDIF (on all drives I've used) when an audio CD is played, so you could just hook that up to an external standalone DAC or AV receiver with proper digital input (if you can deal with the 5V S/PDIF)

Reply 4 of 12, by Grzyb

User metadata
Rank Oldbie
Rank
Oldbie

Once upon a time, I did such a thing...
but it involved two programs: one to read the entire CD-DA track to a WAV file, and another to play the WAV.
It would be perfectly possible to combine them into one program, but I'm not sure if it would be possible to avoid buffering of the entire track...
reading CD-DA can be tricky, there's no guarantee the read occurs exactly where requested, some de-jittering may be necessary.

Ż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 5 of 12, by darry

User metadata
Rank l33t++
Rank
l33t++
Grzyb wrote on 2022-09-29, 16:24:
Once upon a time, I did such a thing... but it involved two programs: one to read the entire CD-DA track to a WAV file, and anot […]
Show full quote

Once upon a time, I did such a thing...
but it involved two programs: one to read the entire CD-DA track to a WAV file, and another to play the WAV.
It would be perfectly possible to combine them into one program, but I'm not sure if it would be possible to avoid buffering of the entire track...
reading CD-DA can be tricky, there's no guarantee the read occurs exactly where requested, some de-jittering may be necessary.

That's why I think using S/PDIF and an external DAC would be preferable in this case as it woukd let the drive do the heavy lifting. I haven't tried it, but I would not be surprised if cheap but relatively decent Fiio D3 could handle 5V S/PDIF without issue .

EDIT: There are motherboard slot brackets designed to convert 5V S/PDIF from a motherboard to Toslink optical. One could adapt one of those.

Reply 6 of 12, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Mpxplay for DOS uses digital audio extraction exclusively for playing CD audio.
https://mpxplay.sourceforge.net/

Press Alt + F1 to select your CD drive. Then you can play the tracks as 'cdw' files:

Attachments

  • mpxplay1.jpg
    Filename
    mpxplay1.jpg
    File size
    336.84 KiB
    Views
    645 views
    File license
    Public domain

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper

Reply 7 of 12, by darry

User metadata
Rank l33t++
Rank
l33t++
Falcosoft wrote on 2022-09-29, 17:07:

Mpxplay for DOS uses digital audio extraction exclusively for playing CD audio.
https://mpxplay.sourceforge.net/

Press Alt + F1 to select your CD drive. Then you can play the tracks as 'cdw' files:

Nice! TY, I did not know of that feature .

Reply 8 of 12, by ltning

User metadata
Rank Member
Rank
Member
Falcosoft wrote on 2022-09-29, 17:07:

Mpxplay for DOS uses digital audio extraction exclusively for playing CD audio.
https://mpxplay.sourceforge.net/

Press Alt + F1 to select your CD drive. Then you can play the tracks as 'cdw' files:

I've never been able to make mpxplay work - maybe it's my hardware. Should I expect it to run on, say, a 386DX40? Or do I need to break out a DLC or SXL-CPU for that machine?

The Floppy Museum - on a floppy, on a 286: http://floppy.museum
286-24/4MB/ET4kW32/GUS+SBPro2
386DX-40/20MB/CL5434 ISA/GUSExtreme
486BL-100/32MB/ET4kW32p VLB/GUSPnP/AWELegacy

~ love over gold ~

Reply 9 of 12, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie
ltning wrote on 2022-09-29, 17:54:
Falcosoft wrote on 2022-09-29, 17:07:

Mpxplay for DOS uses digital audio extraction exclusively for playing CD audio.
https://mpxplay.sourceforge.net/

Press Alt + F1 to select your CD drive. Then you can play the tracks as 'cdw' files:

I've never been able to make mpxplay work - maybe it's my hardware. Should I expect it to run on, say, a 386DX40? Or do I need to break out a DLC or SXL-CPU for that machine?

I'm not sure but for real-time extraction + playback I would suggest a 486DX2-66 with 8MB RAM as a minimum.
BTW the readme has recommendations for different compressed formats but not for real-time CD audio:

Mpxplay system requirements (mainly for DOS): […]
Show full quote

Mpxplay system requirements (mainly for DOS):

- Minimum CPU for playing 44.1khz, stereo, (128kbit/s) files (with '-f0 -sl 0 -bl -bn8' options):

AAC : Intel Pentium 66 (LC object type)
AC3 : Intel 80486 DX4-120 (48khz,2.0ch,192kbit)
APE : Intel Pentium 166 MMX (fast-mode encoded files work without MMX too)
DTS : Intel PII-300 (48kHz,5.1ch,768kbit)
FLAC: Intel Pentium 66 (depending on the compression ratio too)
MP2 : Intel 80486 DX2-66
MP3 : Intel 80486 DX4-100
MPC : Intel 80486 DX4-100
OGG : Intel 80486 DX4-133
WMA : Intel Pentium 90
WV : Intel Pentium 166

Also CD digital audio extraction was not a thing in the 386/486 era so using contemporary hardware is not the best choice. DAE at least requires a more 'modern' CD/DVD drive.

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper

Reply 10 of 12, by darry

User metadata
Rank l33t++
Rank
l33t++

Realtime audio streaming from a CD over IDE (including all the buffering and overlapping read logic and sync logic), presumably using CPU intensive PIO on a 386DX40 seems like a tall order.

Reply 11 of 12, by Grzyb

User metadata
Rank Oldbie
Rank
Oldbie

First, try the attached programs and see if your CD-ROM drive can properly read CDDA sectors.
Second, try to play the WAV file and see if your machine is fast enough for CD-quality playback.
If both succeed, you can modify the source code to send the data to the sound card, instead of writing it to the file...

Attachments

  • Filename
    readcda2.zip
    File size
    32.96 KiB
    Downloads
    34 downloads
    File license
    Fair use/fair dealing exception
  • Filename
    readcda1.zip
    File size
    19.06 KiB
    Downloads
    36 downloads
    File license
    Fair use/fair dealing exception

Ż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 12 of 12, by ltning

User metadata
Rank Member
Rank
Member

Whoa, that's cool stuff.
So I was able to read (at 3-4x speed, average) the CD audio from my drive, and subsequently play it back with the GUS Extreme-suppled 'playfile' tool.
Sounds great - basically no noise compared to running via CD-audio input.
This on a 386 DX-40.

Now I'm not a C coder, but at least this shows it is theoretically possible. I have no idea how much CPU and bus bandwidth reading into memory and pumping back out on the BUS to the sound card is going to require; at 16 bits 44.1KHz stereo that's a theoretical 176400B/s, twice over is about 350KB/s. Even with overhead it should not tax the bus with more than 400KB/s total. CPU time spent should not be terrible as long as unnecessary wrapping/unwrapping/recoding of data isn't happening - but I suppose the data from the drive isn't immediately ready for dumping onto the sound card. For the same reason, and the need for a de-jitter buffer, I presume DMA can't be used (straight from IDE controller to sound card).

The Floppy Museum - on a floppy, on a 286: http://floppy.museum
286-24/4MB/ET4kW32/GUS+SBPro2
386DX-40/20MB/CL5434 ISA/GUSExtreme
486BL-100/32MB/ET4kW32p VLB/GUSPnP/AWELegacy

~ love over gold ~