VOGONS


First post, by appiah4

User metadata
Rank l33t++
Rank
l33t++

I was messing around with some PCI cards yesterday to choose one for an upcoming Slot A build. I was going to go for the Turtle Beach Santa Cruz but then my soft side for Terratec took over so I decided to give their DMX Xfire 1024 a whirl.

Interestingly enough, the DMX Xfire 1024 comes with a DLS compatible software wavetable that accepts up to 8MB sample files and runs with the default 8MB DLS sample set Terratec ships with it (though I don't know if it is made by Terratec or Crystal or whoever..). It is usable in a DOS Box in Windows.

DMX Xfire 1024 has a CS4624 chipset, so the Santa Cruz with the more advanced CS4630 should also have this wavetable right? Well, apparently not, or at least I can not seem to find it not on the driver CDs at the very least (It may just be that I didn't look hard enough, if the card has the same synth please let me know!).

Does anyone know if this DLS Wavetable Terratec supplied is a Crystal thing that works with all CS4624/4630 cards or a Terratec software that requires a Terratec card? Has anyone tried it and knows what it sounds like?

Retronautics: A digital gallery of my retro computers, hardware and projects.

Reply 1 of 11, by appiah4

User metadata
Rank l33t++
Rank
l33t++

Apparently it's by Crystal and Santa Cruz also has it in the drivers (dumb me)

A video of recordings can be found here: https://www.youtube.com/watch?v=ZDX87rAfBLg

It sounds very pleasing if I may say so.

The DLS here can probably also be used with Aureal cards and their DLS Wavetable Synth as well. I will try to extract and share the DLS for someone to try.

EDIT: It's the same file as the Terratec, CWCDLS8.CLS so not exactly a DLS.. Maybe someone knows how to convert it to DLS? I'm probably rediscovering the wheel here but it's nice to know these things ship with a decent software wavetable nonetheless 😀

Retronautics: A digital gallery of my retro computers, hardware and projects.

Reply 2 of 11, by MordekaiZeyo

User metadata
Rank Newbie
Rank
Newbie

Looks like we're stuck with the file CWCDLS8.CLS... Still no clue for opening the file. I tried in Notepad++, Sublime Text and the similar LaTeX software but unknown decoder and absolutely no hints. Yeah... I am not a programmer by the way.

Intel Pentium 3-S 1266Mhz | 512 MB DDR-400 @SD-RAM PC133 | Elitegroup P6S5AT | Galaxy Geforce 6600 GT AGP @4x AGP | Terratec Xfire 1024 PCI Soundcard with Dreamblaster X2
Windows 2000 Pro SP4

Reply 3 of 11, by binarymaster

User metadata
Rank Newbie
Rank
Newbie
appiah4 wrote on 2019-11-14, 05:56:

It's the same file as the Terratec, CWCDLS8.CLS so not exactly a DLS.. Maybe someone knows how to convert it to DLS?

The filename suggests it's a DLS file, but its byte distribution graph rather shows that it's encrypted:

file.php?mode=view&id=188232

Filename
graph.png
File size
7.15 KiB
Downloads
No downloads
File license
Fair use/fair dealing exception

by Stas'M

Reply 4 of 11, by appiah4

User metadata
Rank l33t++
Rank
l33t++
binarymaster wrote on 2024-03-16, 14:08:
The filename suggests it's a DLS file, but its byte distribution graph rather shows that it's encrypted: […]
Show full quote
appiah4 wrote on 2019-11-14, 05:56:

It's the same file as the Terratec, CWCDLS8.CLS so not exactly a DLS.. Maybe someone knows how to convert it to DLS?

The filename suggests it's a DLS file, but its byte distribution graph rather shows that it's encrypted:

file.php?mode=view&id=188232
graph.png

Anyone tried to open it in 7-Zip?

Retronautics: A digital gallery of my retro computers, hardware and projects.

Reply 5 of 11, by binarymaster

User metadata
Rank Newbie
Rank
Newbie
appiah4 wrote on 2024-03-18, 06:59:

Anyone tried to open it in 7-Zip?

It was the first thing I tried, thought it could be compressed, but it didn't open it. Also tried STUNS without success.

by Stas'M

Reply 6 of 11, by binarymaster

User metadata
Rank Newbie
Rank
Newbie

The decryption algorithm seems to be located in the cwcwdm.sys driver, in the function where it opens registry key "SYSTEM\CurrentControlSet\Services\cwcspud\CS461x\Algorithms\WaveTable" and reads "SampleSet" value from there, which contains the path to CWCDLS8.CLS.

Reversing will take some time, but from the first look it seems to be decoding data blocks of size either 20 or 24 bytes long.

Also, the driver doesn't contain any known DLS format-specific magic constants, so the sound bank format is likely custom.

by Stas'M

Reply 7 of 11, by binarymaster

User metadata
Rank Newbie
Rank
Newbie
binarymaster wrote on 2024-03-18, 19:40:

The decryption algorithm seems to be located in the cwcwdm.sys driver, in the function where it opens registry key "SYSTEM\CurrentControlSet\Services\cwcspud\CS461x\Algorithms\WaveTable" and reads "SampleSet" value from there, which contains the path to CWCDLS8.CLS.

Reversing will take some time, but from the first look it seems to be decoding data blocks of size either 20 or 24 bytes long.

Also, the driver doesn't contain any known DLS format-specific magic constants, so the sound bank format is likely custom.

So... I was looking at the wrong driver file 😁 First of all, cwcwdm.sys expects unencrypted sound bank file, and it indeed doesn't support DLS. Instead it uses CWCWTSMP.DAT bank file, which has custom headers "CS4610v1.0" and "MSAv1.0". Some structures of this file are in fact XORed, so I thought it might have something to do with the CLS file encryption.

But, looking at the another driver file tbcwdm.sys finally revealed the encryption algorithm! Entire CWCDLS8.CLS file is encrypted with XOR and bit swapping, taking into account previous XOR byte value.

appiah4 wrote on 2019-11-14, 05:56:

It's the same file as the Terratec, CWCDLS8.CLS so not exactly a DLS.. Maybe someone knows how to convert it to DLS?

Let me post the decrypted file, I don't know if there's just one that file, or different drivers may have different versions of the sound bank.

- input file cwcdls8.cls
md5: CBD7790F10A05DCA429CEA8ECA03B4CF
sha1: DEEA7B5BA1AD483B456712A4D24A78C5FE1C6766

- output file cwcdls8.dls (download)
md5: 20D3159968915AB4575CB8DA7A805ADD
sha1: 0802C56A958F6D0FA959C2FB5DA7271A3398A56B

I will post the decoder with source code a bit later when I finish polishing and testing it.

by Stas'M

Reply 8 of 11, by appiah4

User metadata
Rank l33t++
Rank
l33t++
binarymaster wrote on 2024-03-18, 23:53:
So... I was looking at the wrong driver file :D First of all, cwcwdm.sys expects unencrypted sound bank file, and it indeed doe […]
Show full quote
binarymaster wrote on 2024-03-18, 19:40:

The decryption algorithm seems to be located in the cwcwdm.sys driver, in the function where it opens registry key "SYSTEM\CurrentControlSet\Services\cwcspud\CS461x\Algorithms\WaveTable" and reads "SampleSet" value from there, which contains the path to CWCDLS8.CLS.

Reversing will take some time, but from the first look it seems to be decoding data blocks of size either 20 or 24 bytes long.

Also, the driver doesn't contain any known DLS format-specific magic constants, so the sound bank format is likely custom.

So... I was looking at the wrong driver file 😁 First of all, cwcwdm.sys expects unencrypted sound bank file, and it indeed doesn't support DLS. Instead it uses CWCWTSMP.DAT bank file, which has custom headers "CS4610v1.0" and "MSAv1.0". Some structures of this file are in fact XORed, so I thought it might have something to do with the CLS file encryption.

But, looking at the another driver file tbcwdm.sys finally revealed the encryption algorithm! Entire CWCDLS8.CLS file is encrypted with XOR and bit swapping, taking into account previous XOR byte value.

appiah4 wrote on 2019-11-14, 05:56:

It's the same file as the Terratec, CWCDLS8.CLS so not exactly a DLS.. Maybe someone knows how to convert it to DLS?

Let me post the decrypted file, I don't know if there's just one that file, or different drivers may have different versions of the sound bank.

- input file cwcdls8.cls
md5: CBD7790F10A05DCA429CEA8ECA03B4CF
sha1: DEEA7B5BA1AD483B456712A4D24A78C5FE1C6766

- output file cwcdls8.dls (download)
md5: 20D3159968915AB4575CB8DA7A805ADD
sha1: 0802C56A958F6D0FA959C2FB5DA7271A3398A56B

I will post the decoder with source code a bit later when I finish polishing and testing it.

Oh wow, great news. Now we need to load that dls onto a softsynth and see if it works 😁

Retronautics: A digital gallery of my retro computers, hardware and projects.

Reply 9 of 11, by binarymaster

User metadata
Rank Newbie
Rank
Newbie
appiah4 wrote on 2024-03-19, 07:50:
binarymaster wrote on 2024-03-18, 23:53:
So... I was looking at the wrong driver file :D First of all, cwcwdm.sys expects unencrypted sound bank file, and it indeed doe […]
Show full quote
binarymaster wrote on 2024-03-18, 19:40:

The decryption algorithm seems to be located in the cwcwdm.sys driver, in the function where it opens registry key "SYSTEM\CurrentControlSet\Services\cwcspud\CS461x\Algorithms\WaveTable" and reads "SampleSet" value from there, which contains the path to CWCDLS8.CLS.

Reversing will take some time, but from the first look it seems to be decoding data blocks of size either 20 or 24 bytes long.

Also, the driver doesn't contain any known DLS format-specific magic constants, so the sound bank format is likely custom.

So... I was looking at the wrong driver file 😁 First of all, cwcwdm.sys expects unencrypted sound bank file, and it indeed doesn't support DLS. Instead it uses CWCWTSMP.DAT bank file, which has custom headers "CS4610v1.0" and "MSAv1.0". Some structures of this file are in fact XORed, so I thought it might have something to do with the CLS file encryption.

But, looking at the another driver file tbcwdm.sys finally revealed the encryption algorithm! Entire CWCDLS8.CLS file is encrypted with XOR and bit swapping, taking into account previous XOR byte value.

appiah4 wrote on 2019-11-14, 05:56:

It's the same file as the Terratec, CWCDLS8.CLS so not exactly a DLS.. Maybe someone knows how to convert it to DLS?

Let me post the decrypted file, I don't know if there's just one that file, or different drivers may have different versions of the sound bank.

- input file cwcdls8.cls
md5: CBD7790F10A05DCA429CEA8ECA03B4CF
sha1: DEEA7B5BA1AD483B456712A4D24A78C5FE1C6766

- output file cwcdls8.dls (download)
md5: 20D3159968915AB4575CB8DA7A805ADD
sha1: 0802C56A958F6D0FA959C2FB5DA7271A3398A56B

I will post the decoder with source code a bit later when I finish polishing and testing it.

Oh wow, great news. Now we need to load that dls onto a softsynth and see if it works 😁

I've published repository on GitHub:
https://github.com/binarymaster/cwcdls8-decrypt

You can also try it directly in your browser: https://jsfiddle.net/r0az7vhe/

Tried the resulting DLS sound bank in the Winamp / Nullsoft MIDI Player, doesn't sound as good as in the YouTube video that was published here. If you have a better suggestion for the software wavetable MIDI synthesizer with DLS support, let me know. 😀

by Stas'M

Reply 10 of 11, by RetroGamer4Ever

User metadata
Rank Oldbie
Rank
Oldbie

FluidSynth has limited DLS support, but I have no experience using DLS with it. Unfortunately, outside of audio composition programs that can load DLS files - I'm not sure there are any left at this point, because the format disappeared from the market in the 2010's - I'm not sure there's anything beyond the Microsoft Wavetable Synthesizer, which requires all sorts of tomfoolery to use additional DLS files with. Back in the day, there were a few soundcards that used DLS-backed soft-synths and could take encrypted/unencrypted DLS packs beyond whatever one shipped with the card, but those are long gone.

Reply 11 of 11, by appiah4

User metadata
Rank l33t++
Rank
l33t++
binarymaster wrote on 2024-03-19, 16:30:
I've published repository on GitHub: https://github.com/binarymaster/cwcdls8-decrypt […]
Show full quote
appiah4 wrote on 2024-03-19, 07:50:
binarymaster wrote on 2024-03-18, 23:53:
So... I was looking at the wrong driver file :D First of all, cwcwdm.sys expects unencrypted sound bank file, and it indeed doe […]
Show full quote

So... I was looking at the wrong driver file 😁 First of all, cwcwdm.sys expects unencrypted sound bank file, and it indeed doesn't support DLS. Instead it uses CWCWTSMP.DAT bank file, which has custom headers "CS4610v1.0" and "MSAv1.0". Some structures of this file are in fact XORed, so I thought it might have something to do with the CLS file encryption.

But, looking at the another driver file tbcwdm.sys finally revealed the encryption algorithm! Entire CWCDLS8.CLS file is encrypted with XOR and bit swapping, taking into account previous XOR byte value.

Let me post the decrypted file, I don't know if there's just one that file, or different drivers may have different versions of the sound bank.

- input file cwcdls8.cls
md5: CBD7790F10A05DCA429CEA8ECA03B4CF
sha1: DEEA7B5BA1AD483B456712A4D24A78C5FE1C6766

- output file cwcdls8.dls (download)
md5: 20D3159968915AB4575CB8DA7A805ADD
sha1: 0802C56A958F6D0FA959C2FB5DA7271A3398A56B

I will post the decoder with source code a bit later when I finish polishing and testing it.

Oh wow, great news. Now we need to load that dls onto a softsynth and see if it works 😁

I've published repository on GitHub:
https://github.com/binarymaster/cwcdls8-decrypt

You can also try it directly in your browser: https://jsfiddle.net/r0az7vhe/

Tried the resulting DLS sound bank in the Winamp / Nullsoft MIDI Player, doesn't sound as good as in the YouTube video that was published here. If you have a better suggestion for the software wavetable MIDI synthesizer with DLS support, let me know. 😀

Thank you for the github repository!

Aureal Vortex 2 (Monster Sound MX300) cards come with a DLS Softsynth off the top of my head.. I don't know a nonproprietary softsynth that uses DLS though. Paging @Falcosoft as the local softsynth guru 😁

Retronautics: A digital gallery of my retro computers, hardware and projects.