VOGONS


First post, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

In Sierra's SCI0 games, in all the sound install options, there is an option to use an IBM Music Feature Card. DOSBox does not support that particular device of course. However, if the user has a Yamaha FB-01 Module, he can hear the same sound by selecting that option. Even the games that do not include the driver can still support it by using a driver from another game (except in two known instances that do not apply in my case.) The Yamaha FB-01 option requires the module to be connected through a Roland MPU-401 midi interface.

Now I don't have a Yamaha FB-01, but I do have an IBM Music Feature Card and its external midi box. I also have a Roland MPU-401AT connected in the same computer (the Win98 box.) If I play a Sierra SCI0 game like King's Quest IV or Quest for Glory I, I can get the right sound with the Yamaha FB-01 driver or the IBM Music Feature Driver. With the Yamaha FB-01 option, the game finds my MPU-401 interface and sends the data through that device. I have the midi output of the MPU-401AT connected to the midi in of the IBM Music Feature's midi box.

In DOSBox, which must emulate intelligent midi for Sierra's games to work (and not just Sierra's), I connect my USB Midi interface to my Music Feature's Midi box. However, the resulting sound is noticeably off and frequently unpleasant. I had thought my USB Midi interface to be the culprit, so I tested it in my Win 98 box, which was my Sound Blaster 16's midi interface in Windows. Same result, so I can only conclude that it is a bug in DOSBox's midi emulation.

Reply 1 of 4, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

moved to development.
could the cpu cycles be an issue ? DOSBox mpu is always ready to recieve. Although it is a wild guess.

Water flows down the stream
How to ask questions the smart way!

Reply 2 of 4, by Srecko

User metadata
Rank Member
Rank
Member

Can you please test it with te build which I uploaded in this thread?
does dosbox support MIDI IN yet?

Could also be related to buffer overflow problem when games quickly sends lots of sysex data. Try to reduce CPU clocks (to a very low value, like 100,200 or 500) for game startup and ingame loading. AFAIK(R), unfortunately win32 or alsa seq API's don't provide hooks which could help with throttling in this case, or at least I couldn't find it. From the Dosbox point of view, to throttle we'd need just to set one status bit which is returned in a port 0x331 read.

Reply 3 of 4, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

I have tested both at extremely low cycles and with the compiled build, but the results are the same. I didn't think that speed would be the issue as my Win 9x box runs with a Pentium II 450MHz and it worked there without any sound flaws in the method I describe above.

Reply 4 of 4, by Srecko

User metadata
Rank Member
Rank
Member

Throttling issue is not related to CPU speed of a real machine, but is related to dosbox cycles (because real MPU401 will set a status bit if it is not ready to receive more data so the problem doesn't exist).

Did you also try with mpu401=uart? (if this setting works at all with Sierra games...) as it should not filter any data in the MPU401 emulation part.
If that works, but produces same problems, cause could be with dosbox midi-out buffer if sent data isn't valid MIDI (or even if device distinguishes e.g. midi running status-a shortened form of message- from the full one, as it is expanded). In that case real mpu401 device could be more resilient to errors than dosbox (here I don't believe that such data could even pass through win32 midi interfaces, but is probably doable with ALSA rawmidi).