Skip to content

03 Corrupted files

Boban Spasic edited this page May 1, 2023 · 1 revision

What is a corrupted file?

A normal DX7 bank dump (VMEM) is 4104 bytes long. Anything else is not a legit SysEx dump accepted by a DX7. Second most present form on the internet are the 4096 bytes long files - files without header and footer bytes. Although a lot of people will say it is OK if you strip the headers, I will give a couple of arguments against it:

  • the files are not usable for a real DX7-series synths anymore
  • the 4OP-series (DX21, DX11, TX81z etc.) also have 4104 bytes long VMEM dumps (4096 headerless), but the parameters are totally different. Without headers, you won't know what kind of file you have to deal with. I'll explain latter how can you tell apart these two types of VMEM files in hex-editor if the headers are missing

Classic example of corruption are interrupted dumps, dumps containing other communication data apart from MIDI SysEx etc. I saw dumps containing parts of Atari TOS (operating system of the Atari computers), dumps with modem corrections protocol etc.
Just yourself will know if these are worth repairing and saving, because it will mostly be some heavy hex-editor works to save anything.
For interrupted dumps (file size less than 4104 bytes), MDX-Tool will add zeros as missing bytes, just to get the file size right, so that you can open the file in some editor, and save the voices that are not corrupted.

What about files with additional data (AMEM, PMEM)?

You will also find files with dumps from DX7II, or TX7 etc. These are mostly containing two dumps in one file, e.g. VMEM + AMEM (DX7II, 5232 bytes), or VMEM + PMEM (TX7, 8208 bytes).
Of course, if you have a DX7II, you will want to keep both VMEM and AMEM data. If you have an original Yamaha DX7, this one will just ignore the AMEM part and get just the VMEM part from SysEx dump.
But what about the synths that are not from DX-Series, but can import DX7 SysEx files? What about the soft-synths?
You will here probably need a plain VMEM dump.
Also, most of the synths that can import DX7 files, they work just with a VMEM dumps, but not with VCED dumps (single voice). You will need to convert these (make a VMEM bank from single VCEDs).

As the MDX_Tool is programmed with sole function to bring the files into the standard 4104 bytes VMEM form, all the mentioned forms will be "repaired" to 4104 bytes VMEM.

What about files from various librarian programs?

Some of these will just add a couple of bytes at the beginning of the file, as a signature for its own files. The rest of the file is your SysEx data, with or without the headers. Strip the signature added by the program, add the headers if needed, and you are ready to go. MDX_Tool does not expect the header to be at the position 0 in the file. It will search for the header until it finds it, and it will read the bank from that position on. At repairing the files, it will save just the usable part of the file (from headers to the footer). The rest will be cropped.
Some librarians use their own format. Either you have a chance to export the voices from the program itself, or you can hope that some other program can convert the files into SysEx. First aid would be the DXConvert from Martin Tarenskeen. MDX_Tool can rip voices from MidiQuest SQL files (tested with SQL files from MidiQuest 6).
Other abomination that I saw on the internet are files with 32xVCED records inside and without headers (4960 bytes long). MDX_Tool will convert these to VMEM files.

4-Op vs. 6-Op VMEM files

Just a short explanation of the term 4-Op - Yamaha DX21, DX100, DX11 etc. are using algorithms with 4 operators. DX7, DX7II, TX7, TX816, TX802 etc. are using 6 operators.
The best resource for 4OP synths is 4 OP HQ.
As we already told, the both 4-Op and 6-Op VMEM files have the same length, but are not compatible in any way. So, if you get a headerless file, how to tell it apart.
The easiest way is to find the voice name inside the data. For 6-Op series, it is the last parameter (or better say - last 10 data positions) right before the footer. For the 4-Op series, there are 6 parameters after the voice name (mostly $63, $63, $63, $32, $32, $32) and a bunch of zeros after that and before the footer (or the end of the file if headerless).

Screen 1 - DX7 (6-Op) file:
ImHex_VMEM_03

Screen 2 - DX11 (4-Op) file:
ImHex_VMEM_04