VOGONS


First post, by TgamesFR

User metadata
Rank Member
Rank
Member

After more than 26 years, we now finally have a way to make our own ECW files (Ensoniq Soundfont) for all Sound Blaster Soundcards ! 😀

Very easy to use, just takes any .SF2 file and you can convert it to ECW format using sf2ecw. 😉

Tested successfully with a Audigy 2 ZS card !

sf2ecw.py - converts a SoundFont 2 bank (.sf2) into an Ensoniq ECW waveset (.ecw)
for the Creative DOS driver "SB16 Emulation" (SBEINIT/SBECFG/SBELOAD/SBECORE).

Also: inspector mode (--dump) to analyse an existing .ecw.

The ECW format was never published. This implementation is based on the disassembly
of SBECFG.EXE v5.00, SBELOAD.EXE, SBEINIT.COM and SBECORE.BIN v1.00.

Limits imposed by the engine (not by this script):
* no low-pass filter and no resonance -> SF2 filter generators ignored
* no tremolo -> modLfoToVolume ignored
* only 5 panning positions
* infinite forward loop, or no loop -> sampleModes=3 treated as 1
* all PCM is downmixed to 16-bit mono 22050 Hz
* modulation rate of 86.13 Hz -> nothing finer is representable
* single drum kit per program number, 2 layers per preset

Usage:
python3 sf2ecw.py bank.sf2 output.ecw [--verbose]
python3 sf2ecw.py --dump file.ecw

Now enjoy Roland SC-55 with your Sound Blaster Audigy 2 ZS under DOS ! 😀

DOWNLOAD:
https://tgames.fr/tgames/PC/SF2ECW.zip

Last edited by TgamesFR on 2026-08-05, 13:09. Edited 3 times in total.

Reply 1 of 15, by Babasha

User metadata
Rank Oldbie
Rank
Oldbie

Great!

Need help? Begin with photo and model of your hardware 😉

Reply 2 of 15, by TgamesFR

User metadata
Rank Member
Rank
Member
Babasha wrote on 2026-08-04, 21:50:

Great!

Thanks, don't hesitate to try and post your feedbacks here.

All tests i've done were in MS-DOS within Windows 98.

--------------------

UPDATE: Version 1.0a !

Code cleanup
Fixed lot of instruments mismatch

We are even more close to each corresponding SF2. Except few things here and here who will sounds a bit off. I'm investigating.

Reply 3 of 15, by Babasha

User metadata
Rank Oldbie
Rank
Oldbie
TgamesFR wrote on 2026-08-04, 21:05:

This implementation is based on the disassembly
of SBECFG.EXE v5.00, SBELOAD.EXE, SBEINIT.COM and SBECORE.BIN v1.00.

One more question
Is there way to disable OPL3 emulation or translate it on other port then 388h?

I want to use my SB128 with sound fonts as Sandblaster 220/5/1 and MPU-401 on port 330h a use ISA ADLIB card on port 388h)))

Need help? Begin with photo and model of your hardware 😉

Reply 4 of 15, by TgamesFR

User metadata
Rank Member
Rank
Member
Babasha wrote on 2026-08-05, 12:17:
One more question Is there way to disable OPL3 emulation or translate it on other port then 388h? […]
Show full quote
TgamesFR wrote on 2026-08-04, 21:05:

This implementation is based on the disassembly
of SBECFG.EXE v5.00, SBELOAD.EXE, SBEINIT.COM and SBECORE.BIN v1.00.

One more question
Is there way to disable OPL3 emulation or translate it on other port then 388h?

I want to use my SB128 with sound fonts as Sandblaster 220/5/1 and MPU-401 on port 330h a use ISA ADLIB card on port 388h)))

As far i'm aware the MPU-401 gameport is not visible on the official driver under pure DOS (only MS-DOS Windows).
It's something i'm already checking outside of the official driver if i can communicate with it under pure DOS (but will require ton of work).

For the 388h port i can maybe look to not takes it, i need check into the Creative driver.

Reply 5 of 15, by Riikcakirds

User metadata
Rank Member
Rank
Member

I converted 8MBGMSFX.SF2 to test and it works. Good work.

As Babasha posted if it's possible and not much work it would be great if the OPL3 part of the emulation could be disabled entirely. I read on Usenet years ago (2001) it is the biggest resource hog of the sbeinit emulation, unlike the midi emulation part.
If it could be disabled these Sblive and Audigy cards could then be used as just General Midi cards and the emulation fast enough to work on 486 and < 133mhz Pentium computers.

Reply 6 of 15, by TgamesFR

User metadata
Rank Member
Rank
Member
Riikcakirds wrote on 2026-08-06, 17:21:

I converted 8MBGMSFX.SF2 to test and it works. Good work.

As Babasha posted if it's possible and not much work it would be great if the OPL3 part of the emulation could be disabled entirely. I read on Usenet years ago (2001) it is the biggest resource hog of the sbeinit emulation, unlike the midi emulation part.
If it could be disabled these Sblive and Audigy cards could then be used as just General Midi cards and the emulation fast enough to work on 486 and < 133mhz Pentium computers.

Thanks for your tests =)

Babasha wrote on 2026-08-05, 12:17:
One more question Is there way to disable OPL3 emulation or translate it on other port then 388h? […]
Show full quote
TgamesFR wrote on 2026-08-04, 21:05:

This implementation is based on the disassembly
of SBECFG.EXE v5.00, SBELOAD.EXE, SBEINIT.COM and SBECORE.BIN v1.00.

One more question
Is there way to disable OPL3 emulation or translate it on other port then 388h?

I want to use my SB128 with sound fonts as Sandblaster 220/5/1 and MPU-401 on port 330h a use ISA ADLIB card on port 388h)))

It's done, replace SBECORE.BIN with the one i'm providing.

The card no longer decodes addresses 388h–38Bh at all.
The FM status read handler returns 0FFh instead of the status byte, and the 6 FM write handlers point to the "ignore" stub.
The OPL3 synthesis engine is never called, resulting in no performance drop now even a slow PC like 486.

Normally your second soundcard can now takes the port 388 and play Adlib there.

Reply 7 of 15, by Babasha

User metadata
Rank Oldbie
Rank
Oldbie
TgamesFR wrote on 2026-08-08, 18:55:
Thanks for your tests =) […]
Show full quote
Riikcakirds wrote on 2026-08-06, 17:21:

I converted 8MBGMSFX.SF2 to test and it works. Good work.

As Babasha posted if it's possible and not much work it would be great if the OPL3 part of the emulation could be disabled entirely. I read on Usenet years ago (2001) it is the biggest resource hog of the sbeinit emulation, unlike the midi emulation part.
If it could be disabled these Sblive and Audigy cards could then be used as just General Midi cards and the emulation fast enough to work on 486 and < 133mhz Pentium computers.

Thanks for your tests =)

Babasha wrote on 2026-08-05, 12:17:
One more question Is there way to disable OPL3 emulation or translate it on other port then 388h? […]
Show full quote
TgamesFR wrote on 2026-08-04, 21:05:

This implementation is based on the disassembly
of SBECFG.EXE v5.00, SBELOAD.EXE, SBEINIT.COM and SBECORE.BIN v1.00.

One more question
Is there way to disable OPL3 emulation or translate it on other port then 388h?

I want to use my SB128 with sound fonts as Sandblaster 220/5/1 and MPU-401 on port 330h a use ISA ADLIB card on port 388h)))

It's done, replace SBECORE.BIN with the one i'm providing.

The card no longer decodes addresses 388h–38Bh at all.
The FM status read handler returns 0FFh instead of the status byte, and the 6 FM write handlers point to the "ignore" stub.
The OPL3 synthesis engine is never called, resulting in no performance drop now even a slow PC like 486.

Normally your second soundcard can now takes the port 388 and play Adlib there.

Tnx! Will test it next monday.

Need help? Begin with photo and model of your hardware 😉

Reply 8 of 15, by Babasha

User metadata
Rank Oldbie
Rank
Oldbie
Riikcakirds wrote on 2026-08-06, 17:21:

I converted 8MBGMSFX.SF2 to test and it works. Good work.

As Babasha posted if it's possible and not much work it would be great if the OPL3 part of the emulation could be disabled entirely. I read on Usenet years ago (2001) it is the biggest resource hog of the sbeinit emulation, unlike the midi emulation part.
If it could be disabled these Sblive and Audigy cards could then be used as just General Midi cards and the emulation fast enough to work on 486 and < 133mhz Pentium computers.

Can you share your converted ECW file?

Need help? Begin with photo and model of your hardware 😉

Reply 9 of 15, by Babasha

User metadata
Rank Oldbie
Rank
Oldbie
TgamesFR wrote on 2026-08-08, 18:55:
Thanks for your tests =) […]
Show full quote
Riikcakirds wrote on 2026-08-06, 17:21:

I converted 8MBGMSFX.SF2 to test and it works. Good work.

As Babasha posted if it's possible and not much work it would be great if the OPL3 part of the emulation could be disabled entirely. I read on Usenet years ago (2001) it is the biggest resource hog of the sbeinit emulation, unlike the midi emulation part.
If it could be disabled these Sblive and Audigy cards could then be used as just General Midi cards and the emulation fast enough to work on 486 and < 133mhz Pentium computers.

Thanks for your tests =)

Babasha wrote on 2026-08-05, 12:17:
One more question Is there way to disable OPL3 emulation or translate it on other port then 388h? […]
Show full quote
TgamesFR wrote on 2026-08-04, 21:05:

This implementation is based on the disassembly
of SBECFG.EXE v5.00, SBELOAD.EXE, SBEINIT.COM and SBECORE.BIN v1.00.

One more question
Is there way to disable OPL3 emulation or translate it on other port then 388h?

I want to use my SB128 with sound fonts as Sandblaster 220/5/1 and MPU-401 on port 330h a use ISA ADLIB card on port 388h)))

It's done, replace SBECORE.BIN with the one i'm providing.

The card no longer decodes addresses 388h–38Bh at all.
The FM status read handler returns 0FFh instead of the status byte, and the 6 FM write handlers point to the "ignore" stub.
The OPL3 synthesis engine is never called, resulting in no performance drop now even a slow PC like 486.

Normally your second soundcard can now takes the port 388 and play Adlib there.

Tnx once more!
I successfully converted SF2 banks to ECW format for my SB128 PCI sound card
One more question for disabling OPL3 core
It looks like SB128 use lees complex (?) Sandblaster emulation core binary
I attach it - can you look is it possible to patch it too for disable OPL3 on port 388h?

Need help? Begin with photo and model of your hardware 😉

Reply 10 of 15, by TgamesFR

User metadata
Rank Member
Rank
Member
Babasha wrote on Yesterday, 13:54:
Tnx once more! I successfully converted SF2 banks to ECW format for my SB128 PCI sound card One more question for disabling OPL3 […]
Show full quote

Tnx once more!
I successfully converted SF2 banks to ECW format for my SB128 PCI sound card
One more question for disabling OPL3 core
It looks like SB128 use lees complex (?) Sandblaster emulation core binary
I attach it - can you look is it possible to patch it too for disable OPL3 on port 388h?

Thanks for your test 😀.

I've patched your file, but unsure if it works i don't have the card myself and i not had the full driver to test.

If it not works, send me the full folder.

Reply 11 of 15, by Babasha

User metadata
Rank Oldbie
Rank
Oldbie
TgamesFR wrote on Yesterday, 15:09:
Thanks for your test :). […]
Show full quote
Babasha wrote on Yesterday, 13:54:
Tnx once more! I successfully converted SF2 banks to ECW format for my SB128 PCI sound card One more question for disabling OPL3 […]
Show full quote

Tnx once more!
I successfully converted SF2 banks to ECW format for my SB128 PCI sound card
One more question for disabling OPL3 core
It looks like SB128 use lees complex (?) Sandblaster emulation core binary
I attach it - can you look is it possible to patch it too for disable OPL3 on port 388h?

Thanks for your test 😀.

I've patched your file, but unsure if it works i don't have the card myself and i not had the full driver to test.

If it not works, send me the full folder.

Hi!
Tnx once-once more)))

Your .BIN with my SB128

1) Good news it completely disables OPL3 mode thru its wavetable emulation
So if I start game Lotus 2 game I can hear wavetable sound it MPU-401 (ROLAND) mode and silence if I select OPL3 (ADLIB)

2) Bad news if I connect my speakers jack to ISA ADLIB card I can hear only loud noise

So its disables OPL3 mode but leaves something that prevents correct 388h port working

Need help? Begin with photo and model of your hardware 😉

Reply 12 of 15, by Babasha

User metadata
Rank Oldbie
Rank
Oldbie

Here is DOS driver set with your .BIN

Need help? Begin with photo and model of your hardware 😉

Reply 13 of 15, by Riikcakirds

User metadata
Rank Member
Rank
Member

One thing has anyone ever got the MT-32 emulation setting in sbemixer.exe to work with an MT-32 game.
Monkey Island 1, does not alter the instrument patches with custom SysEx data. It relies completely on the stock, default Roland MT-32 instrument set so should sound pretty faithful. It doesn'.

I'm not sure what selecting this setting actually does behind the scenes with sbeinit. Does it do anything or is it broken.

Reply 14 of 15, by Falcosoft

User metadata
Rank l33t
Rank
l33t
Riikcakirds wrote on Today, 12:44:

One thing has anyone ever got the MT-32 emulation setting in sbemixer.exe to work with an MT-32 game.
Monkey Island 1, does not alter the instrument patches with custom SysEx data. It relies completely on the stock, default Roland MT-32 instrument set so should sound pretty faithful. It doesn'.

I'm not sure what selecting this setting actually does behind the scenes with sbeinit. Does it do anything or is it broken.

Yes, it works for me both with the 2MB and 8MB ecw wavesets on SB Live! 5.1
Here is a test video. I used DOSMID with the original MT-32 version Midi rip of Monkey Island 1:
https://youtu.be/YO-D9RC7QGg

Website, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper
x86 microarchitecture benchmark (MandelX)

Reply 15 of 15, by DangerMouse

User metadata
Rank Newbie
Rank
Newbie
Riikcakirds wrote on Today, 12:44:

One thing has anyone ever got the MT-32 emulation setting in sbemixer.exe to work with an MT-32 game.
Monkey Island 1, does not alter the instrument patches with custom SysEx data. It relies completely on the stock, default Roland MT-32 instrument set so should sound pretty faithful. It doesn'.

I'm not sure what selecting this setting actually does behind the scenes with sbeinit. Does it do anything or is it broken.

Did you run softmpu?