VOGONS


Reply 40 of 104, by FGB

User metadata
Rank Oldbie
Rank
Oldbie

That indicates that your first guess is more likely than the second.
However, I'm out for this weekend.
At least now we know the whole thing is possible. And that's good to know.

www.AmoRetro.de Visit my huge hardware gallery with many historic items from 16MHz 286 to 1000MHz Slot A. Includes more than 80 soundcards and a growing Wavetable Recording section with more than 300 recordings.

Reply 41 of 104, by bristlehog

User metadata
Rank Oldbie
Rank
Oldbie

wEDEcRmQ.png

We see that sample #452 (0x01C3) and further samples up to #512 are actually present in gusdirty.wfb and not that they are much different from #451. Looks like neither of my two previous guesses is true.

Note that WFB samples have numbers from 0x0000 to 0x01FF (not 0x0001 to 0x0200, which is somewhat confusing). Thus, 452 translates into 0x01C3 and not into 0x01C4.

What we also see is that samples starting from #451 (0x01C2) till the very last #512 are not actual samples but empty aliases (while preceding samples before #451 have multisample type). They contain no sample data and there are no difference between them save for the number.

wEDEcRmI.png

Looking into Fanta GM 8 Mb WFB, we see somewhat similar scheme: samples starting from #424 (0x1A7) are empty aliases, while previous samples are aliases either but not empty.

Thus I have a new guess: Awave Studio writes a sample block length value that differs from actual sample block size when dealing with empty aliases. Look here:

wEDEcRmK.png

For non-empty alias in Fanta GM we see sample block size (look at the beginning of selected data) is 0x8A, and our hex editor also reports a block size of 0x8A.

wEDEcRmL.png

But looking at an empty alias, we notice a sample block length of 0x74, while the hex editor still reports 0x8A.

Thus, a WFB loader reads all samples up to the first empty alias, but for the second alias the data read is all screwed due to the incorrect offset, which in its turn is due to a non-relevant sample block size value found in the first empty alias (0x74 instead of 0x8A).

This is yet another guess, but it explains problems with both WFB banks. If I'm right, there are two further guesses:

1) 0x74 is correct value, extra data is wrongfully written.

2) 0x74 is incorrect and should be replaced by actual 0x8A value.

I have to look into it further.

Last edited by bristlehog on 2016-10-01, 10:47. Edited 7 times in total.

Hardware comparisons and game system requirements: https://technical.city

Reply 43 of 104, by bristlehog

User metadata
Rank Oldbie
Rank
Oldbie

Where do I find that Wavefront Studio?

Anyway, here's another quick and dirty fix. Now there are 512 samples, but that bugged alias type sample sizes are changed to relevant values, that is from 0x74 to 0x8A.

http://geryon.ru/gusdirty2.zip - GUS
http://geryon.ru/fg8dirty2.zip - Fanta GM 8

Hardware comparisons and game system requirements: https://technical.city

Reply 44 of 104, by stamasd

User metadata
Rank l33t
Rank
l33t
bristlehog wrote:

Where do I find that Wavefront Studio?

it's in the package linked to in the first post
https://www.dropbox.com/sh/74c9dol7lls9xbn/SM … pps_goodies.rar

I/O, I/O,
It's off to disk I go,
With a bit and a byte
And a read and a write,
I/O, I/O

Reply 45 of 104, by bristlehog

User metadata
Rank Oldbie
Rank
Oldbie
stamasd wrote:

it's in the package linked to in the first post
https://www.dropbox.com/sh/74c9dol7lls9xbn/SM … pps_goodies.rar

I don't see it. What folder is it in?

Hardware comparisons and game system requirements: https://technical.city

Reply 46 of 104, by stamasd

User metadata
Rank l33t
Rank
l33t

I believe it's in the WaveSE 1.1 and 1.3 folders. Can't check right now because I'm at work.

I/O, I/O,
It's off to disk I go,
With a bit and a byte
And a read and a write,
I/O, I/O

Reply 47 of 104, by bristlehog

User metadata
Rank Oldbie
Rank
Oldbie
stamasd wrote:

I believe it's in the WaveSE 1.1 and 1.3 folders. Can't check right now because I'm at work.

There's no Wavefront Studio in that folders, but WaveSE sound editor. It doesn't understand WFB format.

There is, however, some WavePatch program (wavepatch folder), that might be what we search for, but it requires a WaveFront compatible synthesizer to start, so I can't run it until my Maui arrives.

Hardware comparisons and game system requirements: https://technical.city

Reply 48 of 104, by Rawit

User metadata
Rank Oldbie
Rank
Oldbie

I just tried converting some SF2 banks with Awave Studio 11, but it seems there is a sample limit at 348 on exporting.

Edit: Just got a "too many samples" warning on a 1 Mb soundfont with 152 waveforms, so something else is going on.

Edit2: When I export some small soundfonts to Gravis Ultrasound Patches + INI and load that, I see a huge number of waveforms. The soundfonts rely heavily on linked waveforms I guess.

YouTube

Reply 50 of 104, by bristlehog

User metadata
Rank Oldbie
Rank
Oldbie

Meanwhile, I have found WaveFront patches and banks specifications and converted them from Windows Write format to plain text.

Attachments

  • Filename
    FILESWRI.TXT
    File size
    14.75 KiB
    Downloads
    77 downloads
    File license
    Fair use/fair dealing exception
  • Filename
    PATCHWRI.TXT
    File size
    24.27 KiB
    Downloads
    74 downloads
    File license
    Fair use/fair dealing exception

Hardware comparisons and game system requirements: https://technical.city

Reply 51 of 104, by bristlehog

User metadata
Rank Oldbie
Rank
Oldbie

Also, in README.WRI of WavePatch it's mentioned that Maui OS has at least a version of 1.18:

A new feature in version 1.18 of the Maui operating system caused a crash in WavePatch.

Hardware comparisons and game system requirements: https://technical.city

Reply 52 of 104, by bristlehog

User metadata
Rank Oldbie
Rank
Oldbie

Explanation of what programs, layers, patches and samples are in terms of WaveFront synthesizers is available in WavePatch's help file.

wEDEcRog.png

Help file is attached. If you have troubles opening it in your version of Windows, use either Microsoft's WinHlp32 (pre-Windows 10) or Help Explorer Viewer if you have Windows 10.

Attachments

  • Filename
    wfphelp.zip
    File size
    109.61 KiB
    Downloads
    90 downloads
    File license
    Fair use/fair dealing exception

Hardware comparisons and game system requirements: https://technical.city

Reply 53 of 104, by FGB

User metadata
Rank Oldbie
Rank
Oldbie

Thanks for your trememdous effort, bristlehog!
Thanks also to rawit and stamasd for contributing!

Looks like we get closer and closer to achieve our main goal.
It is great to learn how these WFB banks work in detail. Can't wait to test the new conversions!

Unfortunately I'm a bit sick at the moment but I think I can do the following things at the weekend:

- Test the new converted soundbanks
- Add all the new resources to the first posting
- Add some thoughts regarding this and that

www.AmoRetro.de Visit my huge hardware gallery with many historic items from 16MHz 286 to 1000MHz Slot A. Includes more than 80 soundcards and a growing Wavetable Recording section with more than 300 recordings.

Reply 54 of 104, by boxpressed

User metadata
Rank Oldbie
Rank
Oldbie

I'm also very appreciative of all of the ingenuity and hard work put into this project. I can also try to test this weekend on my Maui.

Reply 55 of 104, by FGB

User metadata
Rank Oldbie
Rank
Oldbie

Just a quick feedback from testing:

The Fanta 8MB bank failed with this error:

IMG_1207[1].JPG
Filename
IMG_1207[1].JPG
File size
1.51 MiB
Views
1159 views
File comment
ERROR - Fanta Bank 8MB
File license
Fair use/fair dealing exception

The GUS 6MB bank loads fine:

IMG_1208[1].JPG
Filename
IMG_1208[1].JPG
File size
1.51 MiB
Views
1159 views
File comment
LOADING COMPLETE - GUS Bank 6MB
File license
Fair use/fair dealing exception

The bank is fully usable in games and Midi players, but the quality of some samples is really bad (drumkit), the volume alignment of the samples is also bad. But this is of course not a fault of the conversion. Although I didn't check it with the "original" .SF2 bank I suspect it sounding the same. Side observation: The Strings sample has quite a bit of reverb - must be prerecorded as I tested the soundbank with the MAUI. Although the conversion works fine I wouldn't recommend it over the default bank in the ROM of the MAUI.

www.AmoRetro.de Visit my huge hardware gallery with many historic items from 16MHz 286 to 1000MHz Slot A. Includes more than 80 soundcards and a growing Wavetable Recording section with more than 300 recordings.

Reply 56 of 104, by bristlehog

User metadata
Rank Oldbie
Rank
Oldbie

I weren't attentive enough and screwed that FantaGM 8 bank by carelessly replacing every 0x00000074 with 0x0000008A. There were instances of 0x00000074 not corresponding to sample size, just by coincidence parts of some samples' bodies. Example:

wEDEcRqD.png

But it's okay - just my stupid mistake. What's more bothering is this:

wEDEcRqE.png

We see that sample #72 somewhy has its size written as 0x74, but clearly it's much bigger as it contains embedded sample data. That's how the bank got corrupted: I replaced that 0x74 by 0x8A, and the next sample #73 was read, consequently, from wrong offset, thus getting totally screwed as we can see at Fabian's screenshot: the sample number is all wrong (704 instead of 72), the sample name is some piece of pseudo-graphics etc.

It seems that I don't quite understand the meaning of that 0x00000074 piece of data. I have to research and think where my mistake is.

Meanwhile, here's the third version of Fanta GM 8:

http://geryon.ru/fg8dirt3.zip

It has been fixed the way that only sample #424 and further samples have their 0x74 value changed to 0x8A.

Last edited by bristlehog on 2016-10-08, 10:05. Edited 1 time in total.

Hardware comparisons and game system requirements: https://technical.city

Reply 57 of 104, by bristlehog

User metadata
Rank Oldbie
Rank
Oldbie

I have looked into it a bit further. Looks like 0x74 is the size of a structure containing sample information:

struct WaveFrontExtendedSampleInfo
{
DWORD dwSize; // Size of this sample, including this struct and any following data
int nSampleType; // ST_SAMPLE, etc. constants from WFSYNTH.H
int nNumber; // The original location of the sample
char szName[NAME_LENGTH]; // Name of the sample
DWORD dwSampleRate; // Sample rate in Hz
DWORD dwSizeInBytes; // Size of the sample data itself, in bytes
DWORD dwSizeInSamples; // Number of samples in the file
UINT nChannel; // CH_ constants from WAVE.H
BYTE byUnused[62]; // For expansion
};

I haven't found NAME_LENGTH constant anywhere, but empirically I can say that it's equal to 32 (0x20):

wEDEcRqG.png

Thus, sizeof(WaveFrontExtendedSampleInfo) should be equal to 0x74. Here's the contradiction - on the one hand, first DWORD of sample header should represent the full size of sample:

DWORD dwSize;               // Size of this sample, including this struct and any following data

It's confirmed in FILES.WRI:

As an example of the above, here's how a sample would be stored in both embedded and unembedded format. Let's assume this is a 16 bit, 44.1 kHz mono sample which is 4096 bytes long. Its filename is C:\WAVES\TEDDY.WAV, and its internal name (as displayed in WavePatch) is "Teddy Belches".

...

Embedded:
WavePatchExtendedSampleInfo:
dwSize = sizeof(WavePatchExtendedSampleInfo) + sizeof(SAMPLE) + _MAX_PATH + 4096;
nSampleType = ST_SAMPLE;
nNumber = whatever;
szName = "Teddy Belches"; // NAME_LENGTH bytes total
dwSampleRate = 44100;
dwSizeInBytes = 4096;
dwSizeInSamples = 2048;
nChannel = CH_MONO;
byUnused = a_bunch_of_zeros; // 62 padding bytes (for expansion)
SAMPLE:
whatever;
PathName:
"EMBEDDED"; // _MAX_PATH bytes total
DATA:
4096 bytes of sample data

On the other hand, in sample #72 of FantaGM 8 that DWORD is equal just to sample header size (0x74), and everything breaks if we change this value. And on the yet another hand (think we stumbled into an octopus), for (some?) alias type samples, setting that DWORD to 0x74, vice-versa, breaks everything.

Hardware comparisons and game system requirements: https://technical.city

Reply 58 of 104, by FGB

User metadata
Rank Oldbie
Rank
Oldbie

The 3rd conversion of the Fanta soundbank loads without any error but sounds odd. In GSPLAY it seems some instruments are missing (Slow strings, Synth strings1, Cello) or sounding like the samples have noise / cracking.
I will test the Fanta 8MB bank with a SoundBlaster 32 later today to compare the sample quality.

//edit: Can't find the FantaGM 8 .SF2 file anywhere, but can find the FANTAGM2.SBK , don't know if they are the same but I suspect they are different revisions with tuned / replaced samples. Maybe you can upload the FantaGM 8 .SF2 from your collection?

www.AmoRetro.de Visit my huge hardware gallery with many historic items from 16MHz 286 to 1000MHz Slot A. Includes more than 80 soundcards and a growing Wavetable Recording section with more than 300 recordings.

Reply 59 of 104, by bristlehog

User metadata
Rank Oldbie
Rank
Oldbie
FGB wrote:

Can't find the FantaGM 8 .SF2 file anywhere, but can find the FANTAGM2.SBK , don't know if they are the same but I suspect they are different revisions with tuned / replaced samples. Maybe you can upload the FantaGM 8 .SF2 from your collection?

Can't upload before Tuesday (it's on the external hard drive). FANTAGM2.SBK is not the same bank, so we can't rely on it.

Let's use another bank:

http://geryon.ru/FF7.sf2
http://geryon.ru/ff7hack1.wfb - hacked by changing 0x74 to 0x8A in 'alias (mute)' type samples

Hardware comparisons and game system requirements: https://technical.city