First post, by javispedro1
Hello!
I am making a extension pack for VirtualBox that adds emulation for some "popular" music devices.
Specifically, OPL3/Adlib (using Nuked's), EMU8K/AWE (using the emu from PCem) , and MPU-401 "dumb" (host MIDI input/output).
As you can guess from the choice of devices, the goal is to emulate a quasi- Sound Blaster AWE32.
I say "quasi" because in truth the devices are completely separate.
E.g. AWE effects are not applied to OPL3 output, and I still use the SB16 emu from VirtualBox so it will report an old DSP version and the mixer controls will not change OPL3/EMU8K volumes.
This confuses some software, but mostly works.
Sadly this is Linux hosts only for now.
Not only I do not have much experience with MIDI IO on Windows, but on Windows VirtualBox requires kernel code signatures for all extpacks, even if they don't run in the kernel. That's way too much effort to obtain...
Extpack download: https://depot.javispedro.com/vbox/VMusic-0.3. … 32.vbox-extpack
Instructions & sources : https://git.javispedro.com/cgit/vmusic.git/about/
(You at least need to read the https://git.javispedro.com/cgit/vmusic.git/about/#using Using part).
Obviously, this is not going to make VirtualBox that much better for retro-gaming, it's still a VM with the myriad of compatibility and timing problems that come with it (oh god).
However, VirtualBox has a nice GUI, easy snapshots, is reasonably fast, and is not only gaming-focused.
Besides, it's fun to try these things.
Things I've tried:
Games:
- Monkey Island 1/2. You can connect MPU-401 to Munt to have something nice. Monkey1's Adlib driver has well-known "Overflow" error, but after slowing down virtual CPU works OK. Monkey2's Adlib/Soundblaster driver works nicely with full CPU speed.
- Duke Nukem 3D. Adlib/SB16 works. Setup fails to detect AWE32, however it can be manually set and then game works with it.
- Warcraft II: Adlib & AWE32 work. Some noise at start/end of sampled audio (SB16-emu DMA issue?).
- Theme Hospital: Miles sound system. While SB16 FM driver fails, "Generic OPL3 device" works. SBAWE32 also works flawlessly. PCM output also works with SB16 driver, albeit voice volume is low.
Operating systems:
- Windows 3.x: Stock Adlib driver works. Stock MPU-401 driver works (for output). Creative driver from AWE32 CD works.
- Windows 9x: Stock SoundBlaster AWE32 driver works. All 3 MIDI outputs work (OPL, MPU, AWE).
Creative driver from AWE32 CD seems to hang when trying to play wave/PCM data, however after installing it I can boot to safe mode and replace PCM driver with stock Windows driver. All Creative tools can still be used including AWE32 setings/ SF2 loading.
EMU8K timing issues can also result in Windows freezing during boot (hopefully fixed in latest version). - Windows XP: for fun I tried XP's builtin MPU-401 driver and it works. Even MIDI input works. However in UART mode there's no timestamping MIDI input -- results may vary.
Random DOS programs:
- Impulse Tracker. Autodetect sees a SB16 only. SB16/PCM output sounds really bad, lots of glitches. "IT S6" (force AWE32) works much better, but I didn't try anything other than playing demos. No idea how to get MPU-401 MIDI input to work.
- Adlib Composer. Works. MIDI input does not work (expects intelligent mode).
- AWEUTIL/DIAGNOSE don't work, aweutil TSR emulation mode complains about "Feedback path error", and diagnose complains about the low DMA channel. They are not required, and no point to using aweutil TSR anyway since you can connect emulated MPU-401 to a synthesizer on the host.
- DOSMid works (/mpu, /awe and /opl)