VOGONS


MIDI gameport in pure DOS mode

Topic actions

First post, by bimole

User metadata
Rank Newbie
Rank
Newbie

Hi,

I would like to use the gameport of my SB Audigy (SB0360) to send MIDI data to an MT32pi.

In Windows 98SE, by selecting the right MIDI device in "Control Panel", "Multimedia", it works perfectly when playing MIDI files : onboard synth with soundfonts works as well as external MIDI signal to drive the MT32pi.
It also works with windows games : TIM3 MIDI music can be played on an external sound module.
In pure DOS mode, it's not the same story...

My system :
PIII 1GHz, 396MB RAM, i815E, Radeon 9600 ans SB Audigy SB0360
The sound card driver installation process is the one described by Joseph_Joestar in this topic (Guide: Installing Windows 9x and DOS drivers on Audigy cards (version 3.1)), works like a charm.

I made some sound tests with Duke3D setup:
From Win98 (DOS prompt window) the MIDI sound always comes from the Audigy audio out whatever MIDI device I select in the control panel. No way to output some MIDI signals from the game port.
Same thing in pure DOS mode (restarting in DOS mode). Onboard MIDI sound is working (I can even enable the MT32 mode in SBEMIXER) but no MIDI out signal through the gameport

I must miss something...
How can I "redirect", in pure DOS mode, the MIDI signal to the game port to drive my external MIDI sound module ?

Final goal is to make Monkey Island 1 work with the MT32pi...

Thanks in advance for your help 😉

Reply 2 of 23, by kmeaw

User metadata
Rank Member
Rank
Member

On emu10k1, the MPU401 port is available at the offset of 0x18. If your card's base address is 0xDC00, then you can write serial data to the port 0xDC18.

Reply 3 of 23, by bimole

User metadata
Rank Newbie
Rank
Newbie

Thank you for your answers!
I followed the process frop Joseph_joestarr for DOS driver installation. Actually, audio is working in DOS mode. Only the MPU401 function is missing.
My DOS knowledge is very limited. How can I deal with offsets and port tweaking ?

Reply 4 of 23, by kmeaw

User metadata
Rank Member
Rank
Member

You would need SoftMPU as the game has the MPU401 address hardcoded at 330h and it expects an intelligent mode MPU401 (which the UART of SB isn't), so you would need to emulate that.

I'm not sure if SoftMPU is compatible with your sound card - wiki lists Audigy 2 ZS and there is an open issue: https://github.com/bjt42/softmpu/issues/29.

Probably an easier alternative would be running SoftMPU in serial output mode and using a USB serial adapter and a null-modem cable to hook your MT32pi to your retro machine: https://www.jamesfmackenzie.com/2021/07/25/mt … serial-support/

Reply 5 of 23, by darry

User metadata
Rank l33t++
Rank
l33t++

I don't recall ever reading about the external MIDI port on an SB Live! or Audigy variant working in pure DOS.

Again AFAICR, the MPU-401 port on the emulated SB16 card is mapped to the ECW based softsynth that the DOS driver emulates and there is no option to change this.

I would be happy to be proven wrong.

Reply 6 of 23, by bimole

User metadata
Rank Newbie
Rank
Newbie

Ok that means that even in Windows 98, when using the command prompt (not pure DOS mode) to launch DOS games (Duke3D, Doom, etc...) it is not possible to have external MIDI signal without a real MPU-401 or using SoftMPU ?

In fact the external MIDI port feature on all these ''modern'' PCI cards like SB Live! and others, is only available through Windows, correct?

Reply 7 of 23, by darry

User metadata
Rank l33t++
Rank
l33t++
bimole wrote on 2024-09-14, 19:01:

Ok that means that even in Windows 98, when using the command prompt (not pure DOS mode) to launch DOS games (Duke3D, Doom, etc...) it is not possible to have external MIDI signal without a real MPU-401 or using SoftMPU ?

In fact the external MIDI port feature on all these ''modern'' PCI cards like SB Live! and others, is only available through Windows, correct?

I don't remember for sure if the Live! and Audigy Windows drivers allow routing MIDI data received on the emulated MPU-401 to the external MIDI port. I think that it is hard-coded to the EMU hardware synth in Windows, but I could be wrong. This is not a functionality I that I recall ever trying to use on Live! or Audigy cards.

As for other devices PCI sound cards, Aureal Vortex based ones, did at least allow routing MIDI sent to the MPU-401 by DOS applications running under Windows 9x to the external port MIDI. Not sure if all Vortex models did. I suspect at least some other PCI cards do too.

Reply 8 of 23, by kmeaw

User metadata
Rank Member
Rank
Member
darry wrote on 2024-09-14, 12:50:

I would be happy to be proven wrong.

https://i.kmeaw.com/8c577dac-8ec5-43ba-b246-c … ERTLYPy83MQ.mp4 [34MB]

Sorry for the poor video/audio quality but probably it still proves the point.
Roland RA-50 is connected directly to the SBLive gameport. This is a real mode FreeDOS, no himem/emm386 and SB emulation layers loaded.

Reply 9 of 23, by bimole

User metadata
Rank Newbie
Rank
Newbie

Exactly what I'd like to do!
How did you manage to make it work?
I see you are using dosmid as a midi file payer...

Reply 10 of 23, by kmeaw

User metadata
Rank Member
Rank
Member

I just ran dosmid /mpu401=dc18 as can be seen in the video. I don't know how Monkey Island plays the music but if you can make it write to the port I specified above it should work.
If you can't then tell me how can I get the exact same executable file as you have and if it doesn't have any kind of integrity checking then I could make a patch for you.

P.S. I got the I/O port base value of 0xDC00 by running an OS with a sound card driver and just looked at the device configuration - it says "DC00-DC1F". On my machine it stays the same across reboots if major hardware configuration details don't change. That value might be different on your machine so verify it in Windows or Linux.

Reply 11 of 23, by darry

User metadata
Rank l33t++
Rank
l33t++
kmeaw wrote on 2024-09-15, 10:15:
https://i.kmeaw.com/8c577dac-8ec5-43ba-b246-c … ERTLYPy83MQ.mp4 [34MB] […]
Show full quote
darry wrote on 2024-09-14, 12:50:

I would be happy to be proven wrong.

https://i.kmeaw.com/8c577dac-8ec5-43ba-b246-c … ERTLYPy83MQ.mp4 [34MB]

Sorry for the poor video/audio quality but probably it still proves the point.
Roland RA-50 is connected directly to the SBLive gameport. This is a real mode FreeDOS, no himem/emm386 and SB emulation layers loaded.

Nice. I will have to try that someday. TY.

AFAIU, if the SB Live has an MPU-401 compatible MIDI port (UART) exposed at a non standard address I/O, it might be possible to add SoftMPU support for it to handle I/O port remapping and Intelligent mod emulation. I suspect this would not work work for protected mode games, however. Adding support for this to SBEMU might be possible. Of course all that depends on it actually being possible and the available time and priorities of the DEVs and contributors.

Reply 12 of 23, by kmeaw

User metadata
Rank Member
Rank
Member

I think you are right - it should be possible by investing some development efforts. However I'm not sure that SB Live has a MPU-401 (UART-mode) compatible MIDI port - the only thing I can confirm right now is that writing bytes to a specific I/O port will result in those bytes to go out of the card over MIDI. Control registers would probably be different - so if software would try to detect if MPU-401 is present on a specific base port or wait for the port to become ready, it would fail - that's where the efforts would go into.

If software doesn't care about anything (no autodetection, no waiting for the device to become ready) and their MIDI output subroutine just shovels bytes into an I/O port (like dosmid does) then it's as simple as changing the port number.

Reply 13 of 23, by bimole

User metadata
Rank Newbie
Rank
Newbie

OK... I'm now struggling with SoftMPU.
The soundcard I'm using (HP Riptide PCI) seems to work in Win98 DOS (not sure in pure DOS, even with riputil manager).
The sound is working properly in Duke3D in Win98 DOS. But still not possible to redirect MIDI to the gameport even if this option is selected in the Device manager/Multimedia (yet it works on MIDI files on Win98)

I'd like to lauch softMPU from the windows 98 command prompt, but I'm facing the "ERROR EMM386 4.46+ or QEMM 7.03+ not detected"
Something to fiddle with HIMEM.SYS and EMM386.EXE... But I can't find.
How to activate these options to make SoftMPU work under Windows 98 command prompt (not pure DOS) ?

Any ideas ?

Reply 14 of 23, by kmeaw

User metadata
Rank Member
Rank
Member

I don't think it is possible to use SoftMPU under Windows.

A real Roland MPU-401 consists of an ISA card connected to an external box. This external box provides DIN5 MIDI interface for audio gear.
When this product was introduced, PCs were much less powerful. So the intelligent mode was introduced to offload some of the MIDI processing to MPU-401 - the computer uploads instructions in bulk and MPU-401 outputs processed instructions at the correct pace to your synth, leaving more CPU cycles on the PC to spare while the music is still playing. UART mode is much simplier - as a byte arrives from the PC, it gets forwarded immediately to the MIDI synth, requiring the driver running on the PC's CPU to produce note on/off sequences with low time margins (otherwise the music will be skewed in time - notes will be played too early or too late).
The game port present on most PC soundcards is much simplier than MPU-401 and it implements only the UART mode.

SoftMPU uses emm386 driver API to hook I/O port writes to emulate an MPU-401 (intelligent mode) interface so you won't need to have a real Roland MPU-401 intelligent mode card. Instead, it emulates the "intelligent" part in software by outputting software-processed bytes to the soundcard's UART at the right time.

Duke Nukem does not need intelligent mode, it is able to drive the UART itself. But some games would need intelligent mode - for them you would need either a real Roland MPU-401, or a SoftMPU with a compatible MIDI interface (such as UART-mode MPU-401 or a serial port hooked to a synth with a special cable).

The I/O port bases of the Riptide PCI card are controlled using PCI configuration space registers (0x48 is SB base, 0x4a is FM ("OPL3") base, 0x4C is MPU base, 16-bit word at 0x50 controls the "legacy" feature set - bit 30 is SB, bit 29 is FM, bit 28 is MPU IRQ, bit 27 is MPU, bit 26 is joystick).
The default values are 0x330 for the MPU base (uart-mode) port and 0x388 for the FM base.
Please try to configure Duke Nukem 3D to output MIDI to a general midi mpu-401 compatible device at port 0x330.

Reply 15 of 23, by bimole

User metadata
Rank Newbie
Rank
Newbie

Thank you so much kmeaw for your patience and clear explanations 😉
OK here I am with the RipTide...

When "Riptide MPU401 connector" is selected in Device Manager / Multimedia / MIDI, the MIDI signal goes out the game port so I can, for instance, play canyon.mid on my MT-32pi.
So this works in a pure Win98SE environment.

Now for Duke3D :
With the same above settings on MIDI for the RipTide, I launch duke3d setup from a win98SE command prompt.
Here are my settings :
FX sound card : Sound Blaster
Address : 0x220
Sound card Type : Sound Blaster Pro 2.0
IRQ 5
8-bit DMA channel 1
16-bit DMA channel 5
8 voices
Stereo
11kHz
Music card : General Midi
Address : 0x330

With these settings, both FX and MIDI sounds come from the sound card audio OUT. It can be noticed that when I select "Sound Canvas" or "Wave Blaster" for the music card type, I get exactly the same result : MIDI music always comes from the sound card audio OUT.
When I choose "Adlib", "Sound Man 16" "or "Sound Blaster" I have the cheezy FM sounds, but still no MIDI activity on the gameport.
If I change the MPU address by 0x300, I have the message "Could not detect MPU-401" (which is normal).

If I restart the computer in MS-DOS mode, the sound card seems to have simply dissapeared!
In the Duke3D setup, when I try to select an FX sound card, Sound Blaster for instance, I got "Sound Blaster not responding on selected port". Same thing with the MIDI sound card, "Could not detect MPU401".
I've tried to fiddle with riputil.exe which seems to be a kind of DOS driver for the RipTide, without success. The issue has been discussed in this topic Rockwell / Conexant Riptide Sound Card and Modem.

I will end up to think that the RipTide can't be used in pure DOS mode. I have to try another sound card.

I have an SB PCI128 that collects dusts...
But I've read from joseph_joestar in his topic about the SB PCI128 Review: Sound Blaster PCI 128 (CT4810) that :

The driver panel also allows you to use an external MIDI device instead of the softsynth, but unfortunately, this only works for native Windows applications (e.g. Windows Media Player). DOS games will always use the softsynth, regardless of what you select in the driver options.

Wrong candidate isn't it ?

Do you think this has been solved on a SB Live! ? I have the SB0100. Should I give a try ?

Do you think also that I would have better chance to carry out these tests on a pure DOS system (6.22 for instance) instead of using the "restart in DOS mode" from Windows98 ? Or is it the same ?

As far as I begin to understand, SoftMPU is not made to redirect the MIDI signal to the gameport, it is designed to implement the "intelligent mode" of the original MPU-401, correct ?
A sound card on its own should be able to output MIDI signals to the gameport in DOS mode with the "UART mode" MPU-401 ? But PCI ones may be quite rare no ?

Thank you again, your help is very appreciated!

Reply 16 of 23, by kmeaw

User metadata
Rank Member
Rank
Member

I don't have a Riptide card so everything I know comes from the source code of a Linux driver for that card: https://github.com/torvalds/linux/blob/master … ptide/riptide.c

To make the card appear, the driver loads firmware to the card. Then the driver is able to ask the card to enable some combination of "legacy" processing units (sb/mpu/joystick/opl3) - if enabled, the card will start decoding the bus if a specific I/O range is matched. If my understanding is correct and legacy emulation implemented by this card is accurate enough, then it makes this card a good candidate for a DOS gaming machine - you don't need to rely on any software processing tools that may create compatibility issues with games. The only thing needed for a pure DOS environment is some kind of "enabler" software, which riputil.exe probably is - you need something to load the firmware and poke specific bits in the PCI configuration space to make this card act as if it was SB16, which most games expect you to have.

I have an SBLive card model "SB0228" that is based on the emu10k1 chip - that's the card I have demonstrated in my video with a Roland RA-50. This card is not that good in terms of game compatibility - the I/O space layout is quite different from what SB16 has. I heard that there is some TSR from Creative (that have licensed that emulation technology from Ensoniq) that emulates SB16 in software using I/O virtualization (using EMM386 API). So using the trick demonstrated in my video you can output MPU401 UART data to the synth and the TSR emulation would give you PCM audio output from a 3.5" jack.

SB PCI128 design is probably based on Ensoniq ENS1371 chip (as they share a common Linux driver: https://github.com/torvalds/linux/blob/master … d/pci/ens1370.c which means they share the same I/O space layout). The situation is the same as with emu10k1 cards - the I/O layout is different from SB16 but MPU401 UART is available as an I/O port with the offset of 8 from the base port. Unlike SBLive, it needs three I/O writes to enable the UART - https://github.com/torvalds/linux/blob/master … 0.c#L2152-L2154

When you run a DOS session under Windows 9x, it uses it's own virtual machine monitor to virtualize I/O access for your DOS application - it is not compatible with EMM386 hooks that SoftMPU and Creative's TSR use. Sound ports accesses usually get trapped and go through your Windows driver, so it is implementation defined how exactly would be the virtual MPU-401 routed - the driver controls it. If the driver has a way of configuring the routing, you could redirect it to the joystick port but the driver doesn't have to follow your Windows multimedia configuration as normal Windows applications do.

SoftMPU's primary objective is to emulate MPU-401 intelligent mode. But as it hooks I/O ports using EMM386, so as a side effect you get a redirection feature for the UART mode also. The virtual MPU-401 provided by SoftMPU is initialized in the intelligent mode but SoftMPU implements the 0x3F command (as a real MPU-401 would) that switches it to the UART mode - https://github.com/bjt42/softmpu/blob/master/ … 401.C#L376-L379
As for Duke3D, it uses the Apogee Sound System library, which attempts to switch the MPU-401 to the UART mode - https://github.com/jimdose/Apogee_Sound_Syste … 401.C#L378-L387 https://github.com/jimdose/Apogee_Sound_Syste … CE/MPU401.H#L38

Following the path of least resistance, I would recommend you to try out the serial port output feature of SoftMPU - that way you won't even need a sound card in your retro PC to play music (vut you will still need it for the PCM audio). Get a USB serial cable that MT32-Pi supports - read this wiki article for more details: https://github.com/dwhinham/mt32-pi/wiki/MIDI … ntage-computers

My personal setup is somewhat similar. I have a PicoGUS soundcard in my retro machine - before that I had a Yamaha YMF719E-S based card and it worked exactly the same way (so the PicoGUS part isn't that important). The soundcard's MIDI output (that is presented to the system as a MPU401-compatible device running in UART mode) is connected to a retro companion machine that is running Linux using some cheap USB MIDI interface. That way the companion machine gets all MIDI data from a game running on the retro machine and routes it to various MIDI synths around - some of them are connected over serial, some over MIDI, giving me a lot of control over routing the MIDI stream. And I use the same companion machine over the network when I run DOSBox on my laptop - a virtual MIDI card driver on my laptop transfers MIDI commands from a game over a wireless network to the companion machine which is then routed to a synth.

If it doesn't work for you, I could try to modify either SoftMPU or maybe even the game you want to play to write to port 0xDC18 instead of normal 0x330 - then it would be able to use the joystick port output on your SBLive.

A much harder task would be debugging the DOS driver for Riptide as I don't have the hardware - the only thing I can do is to make a rough translation of the Linux driver for the DOS environment.

Reply 17 of 23, by bimole

User metadata
Rank Newbie
Rank
Newbie

Last news from the front...

To make the card appear, the driver loads firmware to the card. Then the driver is able to ask the card to enable some combination of "legacy" processing units (sb/mpu/joystick/opl3) - if enabled, the card will start decoding the bus if a specific I/O range is matched. If my understanding is correct and legacy emulation implemented by this card is accurate enough, then it makes this card a good candidate for a DOS gaming machine - you don't need to rely on any software processing tools that may create compatibility issues with games. The only thing needed for a pure DOS environment is some kind of "enabler" software, which riputil.exe probably is - you need something to load the firmware and poke specific bits in the PCI configuration space to make this card act as if it was SB16, which most games expect you to have.

I finally succeded in using riputil.exe to initialize the sound card in pure DOS.
Before initialization, using the riputil /find command, it gives me:
Riptide IRQ : 10
SB I/O : 240
SB IRQ : 4
SB DMA : 1
MPU IRQ : 10

When prompting riputil riptide.hex, it returns "Legacy devices fo Riptide enabled", so the sound card seems to be initalized in DOS
I can change the settings with /A220 or /I5 to adjust address and SB IRQ accordingly.
There is also the /unmute command to enable the output amplifier. It works since I can here a small "hisss" when typing this command

Now under Duke3D...
Even if I specify the right address and IRQ for the FX card, I'm still unable to hear sound. When I want to test FX sound card, I got the "Initializing FX" box for several seconds and finally a red box saying that the Sound Blaster can't be found at the specified address...
The same with music sound card : tried 330 and 300 addresses, "Could not find MPU-401".
Very annoying!

In the meantime, I tried on my old P233 430VX Packard Bell machine. It has a cheap AZTECH AZT2320 based ISA sound card. I love this sound card because it has the Wavestream MIDI soft synth in Win95 and a "true" OPL3. From Windows DOS prompt I can have both synthesizers for Duke3D depending on the chosen type in the setup. Nice.
In pure DOS mode, the soft synth is disabled and, miracle, MIDI signals go out from the gameport. It plays well on my MT32-pi!

I have an SBLive card model "SB0228" that is based on the emu10k1 chip - that's the card I have demonstrated in my video with a Roland RA-50. This card is not that good in terms of game compatibility - the I/O space layout is quite different from what SB16 has. I heard that there is some TSR from Creative (that have licensed that emulation technology from Ensoniq) that emulates SB16 in software using I/O virtualization (using EMM386 API). So using the trick demonstrated in my video you can output MPU401 UART data to the synth and the TSR emulation would give you PCM audio output from a 3.5" jack.

Mine is SB Live! 5.1 SB0100. It has the EMU10K1-SFF chip. What kind of drivers are you using for DOS ? Are the ones recommended by Joseph_Joestarr in Guide: Installing Windows 9x and DOS drivers on Sound Blaster Live! cards (version 3.1) OK for that purpose ? I will look again your video...

SB PCI128 design is probably based on Ensoniq ENS1371 chip (as they share a common Linux driver: https://github.com/torvalds/linux/blob/master … d/pci/ens1370.c which means they share the same I/O space layout). The situation is the same as with emu10k1 cards - the I/O layout is different from SB16 but MPU401 UART is available as an I/O port with the offset of 8 from the base port. Unlike SBLive, it needs three I/O writes to enable the UART - https://github.com/torvalds/linux/blob/master … 0.c#L2152-L2154

OK so let's forget it for the moment...

Following the path of least resistance, I would recommend you to try out the serial port output feature of SoftMPU - that way you won't even need a sound card in your retro PC to play music (vut you will still need it for the PCM audio). Get a USB serial cable that MT32-Pi supports - read this wiki article for more details: https://github.com/dwhinham/mt32-pi/wiki/MIDI … ntage-computers

I thought about that... but I would be stuck with the MT32-pi.
MIDI signals are important for me since I would like to drive other hard synthesizers.
Actually, I'm building a HardMPU ISA card to cover a lot of use case in DOS games.
But I really would like to find a PCI sound card which allows me to send MIDI signals with the gameport, in pure DOS mode.

My personal setup is somewhat similar. I have a PicoGUS soundcard in my retro machine - before that I had a Yamaha YMF719E-S based card and it worked exactly the same way (so the PicoGUS part isn't that important). The soundcard's MIDI output (that is presented to the system as a MPU401-compatible device running in UART mode) is connected to a retro companion machine that is running Linux using some cheap USB MIDI interface. That way the companion machine gets all MIDI data from a game running on the retro machine and routes it to various MIDI synths around - some of them are connected over serial, some over MIDI, giving me a lot of control over routing the MIDI stream. And I use the same companion machine over the network when I run DOSBox on my laptop - a virtual MIDI card driver on my laptop transfers MIDI commands from a game over a wireless network to the companion machine which is then routed to a synth.

VERY VERY interresting setup! Could you please share some pictures?
In a bit similar way, I run my old Packard Bell in a virtual machine with 86Box.
As I wrote above, I love the GM set of the Wavestream MIDI soft synth. Hopefully, the is an emulated Crystal CS423x based sound card in 86Box, which is compatible with this soft synth.
I would like to send MIDI data from my host PC to this virtual machine to play the Wavestream soft synth. Do you think it's possible ? with low latency ?!

If it doesn't work for you, I could try to modify either SoftMPU or maybe even the game you want to play to write to port 0xDC18 instead of normal 0x330 - then it would be able to use the joystick port output on your SBLive.

A much harder task would be debugging the DOS driver for Riptide as I don't have the hardware - the only thing I can do is to make a rough translation of the Linux driver for the DOS environment.

Wow... this kind of stuff exceeds my skills. I will try to replicate what you have done in your video but... not sure to succeed!
Although switched mode power supplies have no secrets for me, C code is clearly not my cup of tea...

Reply 18 of 23, by kmeaw

User metadata
Rank Member
Rank
Member
bimole wrote on 2024-09-22, 19:12:
Last news from the front... […]
Show full quote

Last news from the front...

I finally succeded in using riputil.exe to initialize the sound card in pure DOS.
When prompting riputil riptide.hex, it returns "Legacy devices fo Riptide enabled", so the sound card seems to be initalized in DOS
There is also the /unmute command to enable the output amplifier. It works since I can here a small "hisss" when typing this command

Now under Duke3D...
Even if I specify the right address and IRQ for the FX card, I'm still unable to hear sound. When I want to test FX sound card, I got the "Initializing FX" box for several seconds and finally a red box saying that the Sound Blaster can't be found at the specified address...
The same with music sound card : tried 330 and 300 addresses, "Could not find MPU-401".
Very annoying!

What is the size of the riptide.hex file you are using? Please also try specifying the "/V" switch to have more output that could help with debugging.

I did a quick look on Riputil.exe and I don't see any code which sets up MPU-401.
Could you get https://github.com/TimmermanV/TweakPCI and try the following commands?

tweakpci 127a 4320 4c
tweakpci 127a 4320 50

(I'm not sure if the number "4320" is correct, please check your actual PCI device ID which can be seen in the PCI device listing at the end of the BIOS POST or in Windows Device Manager).

The first command should print the MPU-401 port, the last one - legacy device mask and ASIC revision to verify if legacy devices are actually enabled by Riputil.

bimole wrote on 2024-09-22, 19:12:

Mine is SB Live! 5.1 SB0100. It has the EMU10K1-SFF chip. What kind of drivers are you using for DOS ? Are the ones recommended by Joseph_Joestarr in Guide: Installing Windows 9x and DOS drivers on Sound Blaster Live! cards (version 3.1) OK for that purpose ? I will look again your video...

I don't load any drivers - the MIDI output port just works if you set the port number correctly.

bimole wrote on 2024-09-22, 19:12:

Following the path of least resistance, I would recommend you to try out the serial port output feature of SoftMPU - that way you won't even need a sound card in your retro PC to play music (vut you will still need it for the PCM audio). Get a USB serial cable that MT32-Pi supports - read this wiki article for more details: https://github.com/dwhinham/mt32-pi/wiki/MIDI … ntage-computers

I thought about that... but I would be stuck with the MT32-pi.
MIDI signals are important for me since I would like to drive other hard synthesizers.

I understand, not every synth has a PC-compatible serial port for MIDI input. But maybe you would be interested in those that do - https://github.com/bjt42/softmpu/wiki/Serial- … I-Cable-Pinouts
Also portable Yamaha workstations like MU-15 have a serial input and you can use them with DOS games.

And with another Windows or Linux machine you can convert those serial signals into normal DIN5 MIDI.

bimole wrote on 2024-09-22, 19:12:

VERY VERY interresting setup! Could you please share some pictures?

I have attached a diagram of my current setup. The wiring is a mess so I don't think photos would be useful - it would be hard to trace the connections visually.

bimole wrote on 2024-09-22, 19:12:

In a bit similar way, I run my old Packard Bell in a virtual machine with 86Box.
As I wrote above, I love the GM set of the Wavestream MIDI soft synth. Hopefully, the is an emulated Crystal CS423x based sound card in 86Box, which is compatible with this soft synth.
I would like to send MIDI data from my host PC to this virtual machine to play the Wavestream soft synth. Do you think it's possible ? with low latency ?!

I am running 86Box (v4.1.1) and it has an option to choose a MIDI input device. You would need some kind of a loopback driver for that - Linux has a snd_seq_dummy driver for that, Windows would need a 3rd party application such as MIDI Yoke.

I can't tell about latencies on Windows but when I had a PCI SBLive card and a USB piano keyboard, I connected them with a Linux machine (it was a Pentium 3 back then) and the latency was good enough for me - I could play the keyboard without noticing that every MIDI event has to be processed in software by my PC.

bimole wrote on 2024-09-22, 19:12:

Wow... this kind of stuff exceeds my skills. I will try to replicate what you have done in your video but... not sure to succeed!
Although switched mode power supplies have no secrets for me, C code is clearly not my cup of tea...

I'm glad we have such a variety of people on Vogons. I never understood analog circuits, they feel like magic to me.

Reply 19 of 23, by Joseph_Joestar

User metadata
Rank l33t++
Rank
l33t++
bimole wrote on 2024-09-21, 12:06:

Do you think this has been solved on a SB Live! ? I have the SB0100. Should I give a try ?

Unfortunately, SBLive and Audigy cards behave the same way in pure DOS. Meaning, they will always use the built-in softsynth, and never redirect MIDI signals to an external device.

PC#1: Pentium MMX 166 / Soyo SY-5BT / S3 Trio64V+ / Voodoo1 / YMF719 / AWE64 Gold / SC-155
PC#2: AthlonXP 2100+ / ECS K7VTA3 / Voodoo3 / Audigy2 / Vortex2
PC#3: Core 2 Duo E8600 / Foxconn P35AX-S / X800 / Audigy2 ZS
PC#4: i5-3570K / MSI Z77A-G43 / GTX 980Ti / X-Fi Titanium