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 7, by Babasha

User metadata
Rank Oldbie
Rank
Oldbie

Great!

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

Reply 2 of 7, 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 7, 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 7, 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 7, 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 7, 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 7, by Babasha

User metadata
Rank Oldbie
Rank
Oldbie
TgamesFR wrote on Yesterday, 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 😉