Page 1 of 1

[solved] hybrid cdrom emulation

Posted: Sun Jan 05, 2020 4:08 pm
by bach
Hi,

For an exhibition about cdrom from 90s, i'm trying to play "Beethoven Symphoniy No.9" cdrom from Voyager Company
https://en.wikipedia.org/wiki/Beethoven ... ony_CD-ROM
http://www.futureofthebook.org/next/text/precursors/

The app is launching well with hypercard, and i can hear the sound produced by midi tracks by the mac
but
the specificity of this cdrom is that it is hybride, it contains data and audio tracks. The hypercard app is controling the cdrom drive to play HD tracks of the symphony.
requirement contains
earphones or speakers connected to the CD-ROM drive
and
Note: When using an external CD-ROM drive, some audio will play from the cd-rom drive's audio output port(s), and some will play from your Macintosh's internal speacker. ...
of course i can't hear the audio part of the cd-rom.

do you think that there may be a way to get this works with sheepshaver (or an other emulator) or i should give up the emulation option and directly find and buy an old real macintosh ?

thanks

Re: hybrid cdrom emulation

Posted: Mon Jan 06, 2020 7:28 am
by Elyus
This is relevant to the discussion about bin/cue support in Sheepshaver. I've only had success with audio CDs in Sheepshaver using this option since CD passthrough doesn't really work anymore and most image formats don't save audio partitions.

In your other topic you mentioned working in Linux, so here's what might work for you:

- First, create a bin/cue image of your Beethoven CD. The open source cdrdao utility can do this, as described in these instructions.

- Next, rebuild Sheepshaver including the "--with-bincue" flag in your compile options. This will include the sources for handling the cue sheet you created.

- Add the .cue file as a cdrom to your list of volumes in Sheepshaver preferences.

When you launch Mac OS 9, the data partition should be mounted on the Desktop like usual, but when you open Apple CD player, the audio tracks should be recognized and able to play.

If the audio tracks do not play, you may be encountering the same issue I had with SDL 1.2. This led me to make an experimental build based on SDL 2.0's AudioStream feature. The source files can be downloaded as a .zip from the test release or directly from the cdaudio branch. I have not tested under Linux, but if you end up trying it, I'd love to know if it works for you!

Re: hybrid cdrom emulation

Posted: Mon Jan 06, 2020 9:39 am
by bach
hi, thanks for the answer !

i was planning to use combination of bin/cue export and cdemu to load the cdrom as described here https://forums.linuxmint.com/viewtopic. ... 5#p1346678
so i already had the bin/cue files of the cdrom

i recompiled sheepshaver from sposley repository

Code: Select all

git clone https://github.com/spolsley/macemu.git
cd macemu/SheepShaver
make links
cd src/Unix
NO_CONFIGURE=1 ./autogen.sh
./configure --enable-sdl-video --enable-sdl-audio --with-bincue
make
and it works !!!

Note that with the original cue file from cdrdao the cdrom was mounting but was recognized as an audio cd, and not able to play the audio tracks
I had to convert the cue file with toc2cue from cuetools https://www.archlinux.org/packages/?name=cuetools

Code: Select all

toc2cue beethoven.toc beethoven.cue
thanks again for your great work guys !!

Re: [solved] hybrid cdrom emulation

Posted: Mon Jan 06, 2020 12:12 pm
by bach
hi again,
i have a new question

actually i have 5 different cd-roms to play, beethoven, mozart, stravinsky, etc from the same collection
each one of them work great with bin/cue export if i load them one by one as cdrom with sheepshaver
unfortunaltly if i try to load all 5 of them in once, only the first one appear as a cdrom and works, the others appear as Audio CD and can't be played.

any idea ?

Re: [solved] hybrid cdrom emulation

Posted: Mon Jan 06, 2020 10:05 pm
by Elyus
Thanks for testing with your setup. I'm glad to hear it's working!

I've extended support for mounting any number of bin/cue images, so try pulling and rebuilding from cdaudio_test to check that. The main limitation is with Apple's own software. For instance, the built-in CD player seems unable to recognize multiple audio discs and will just play the first one to get mounted. You'll have to see if the software on the discs themselves work correctly. It worked in my quick tests but will probably depend on the program.

Re: [solved] hybrid cdrom emulation

Posted: Wed Jan 08, 2020 9:30 am
by Elyus
Upon further inspection, I found that multiple bin/cue files can handle status and data-related calls, but audio calls are always invalid and fallback to the first mounted disc. I suspect this is actually a Mac OS issue, although it could be a bug introduced lower in the emulation pipeline. On the flip side, the emulated environment gives some flexibility in choosing how to handle such cases if it is a Mac OS limitation.

I pushed a small change to the cdaudio branch that makes Sheepshaver remember the last drive accessed so it can guess the correct CD from the context of status calls. It may not be perfect, but I prefer it over always defaulting to the first disc; plus, multiple audio CDs seem to work now. You can also make Apple CD player switch discs by triggering a status change: anything like opening a CD in the Finder or loading one of its files will make the player update to that CD's audio.

I hope this works for your use case of 5 CDs! :)

Re: [solved] hybrid cdrom emulation

Posted: Wed Jan 08, 2020 4:36 pm
by adespoton
Elyus wrote:Upon further inspection, I found that multiple bin/cue files can handle status and data-related calls, but audio calls are always invalid and fallback to the first mounted disc. I suspect this is actually a Mac OS issue, although it could be a bug introduced lower in the emulation pipeline. On the flip side, the emulated environment gives some flexibility in choosing how to handle such cases if it is a Mac OS limitation.

I pushed a small change to the cdaudio branch that makes Sheepshaver remember the last drive accessed so it can guess the correct CD from the context of status calls. It may not be perfect, but I prefer it over always defaulting to the first disc; plus, multiple audio CDs seem to work now. You can also make Apple CD player switch discs by triggering a status change: anything like opening a CD in the Finder or loading one of its files will make the player update to that CD's audio.

I hope this works for your use case of 5 CDs! :)
This is indeed a Mac OS issue; physical CD-ROM drives had the same issue if you had more than one attached. Your solution seems to be an elegant way around that :)