dosbox-staging / dosbox-staging

DOSBox Staging is a modern continuation of DOSBox with advanced features and current development practices.
https://www.dosbox-staging.org/
Other
1.23k stars 150 forks source link

AdMOS QDSP QS1000 + QS1001A sample ROM wavetable MIDI emulation #2189

Open johnnovak opened 1 year ago

johnnovak commented 1 year ago

I'm a big fan of the Serdaco QWave MIDI daughterboard card which uses the same AdMOS QDSP QS1000 chipset and QS1001A 512 KB sample ROM that powered many classic 90s MIDI cards, such as the Diamond Monster Sound.

Check out some recordings here: https://www.youtube.com/watch?v=uU_F4nd2db4&t=5205s

It turns out this exact chipset and ROM combination was used in many arcade machines for MIDI playback, for example this is a recording of Super Street Fighter 2 using the QWave: https://www.youtube.com/watch?v=ohevl4_dSmA

The good news is that MAME has some level of support for the QS1000, and they even have a dump of the QS1001A sample ROM. They haven't implemented all features yet, but nevertheless what they have is a very good start. I do own the Serdaco QWave, so I'm planning to attempt some reverse engineering of my own to figure out the missing bits.

As it can be heard in this MAME recording of some arcade game that uses the QS1000 + QS1001A for the sound, the current implementation works, although it's hard to say how accurate it is (doesn't sound that great, but maybe the original music sounded the same): https://www.youtube.com/watch?v=eZQAYWF9Dxs

Here's another one: https://www.youtube.com/watch?v=Ff_UWwnQ5xE

The ideal outcome is that similarly to the MT-32 emulation, we would make an integrated AdMOS QS1000 MIDI synth available in DOSBox.

Alternatively, if this proves to be difficult, a SoundFont recreation could be done using the ROM samples, then tuning the instruments by ear and by looking at the spectrum/waveforms (I can do this as I have a QWave and I'm a hobby musician 😎).

Some links to get started:

https://github.com/mamedev/mame/blob/master/src/devices/sound/qs1000.cpp https://github.com/mamedev/mame/blob/master/src/devices/sound/qs1000.h https://github.com/mamedev/mame/blob/master/src/mame/eolith/eolith.cpp https://github.com/mamedev/mame/blob/master/src/mame/eolith/eolith.h

Diamond Monster Sound Wavetable Card https://www.wavetable.nl/daughterboards/

Jkapp76 commented 1 year ago

I like it!

(I'm also a hobby musician... Was in three local rock bands. Guitar and backing vocals. I like multi-track recording, and I do my own drums and keyboard, but I hate most keyboard rock.)