Analyzing Why some VSQ files make MMD Crash

<hr />

A feature article by LearnMMD's Senshi Sun!Why do these VSQ files make MMD crash? Why does FAL not show all of the notes in a song? How do MMD and FAL read VSQ files?

MMD and Face and Lips are two different programs that use Vocaloid VSQ files to create lip sync for MMD. On the surface, it might look like the programs work the exact same way, but if you have spent enough time putting VSQs into both programs, you might realize that there are some important differences. FAL can refuse to display notes that MMD can understand, and MMD crashes when attempting to process certain files. FAL can process them.

MMD and FAL  have different ways of interpreting the VSQ data, and these differences result in the same input data generating different results.

Why won’t the lips sync?

This is evident if you have ever put an English song into Face and Lips. FAL only recognizes Japanese phonemes, so the only notes that show up are those with the phoneme “e”, produced by the sound “eh”, which is used in both languages. Inputting Japanese phonemes would give the correct lip sync.

Why? The simple answer is “encoding.” The two programs are reading the same files, but they don’t get the same information. It’s like a language for computers. If you were to show the word “pain” to somebody who only spoke English and someone else who only spoke French, they would both understand that it is a word. The English-speaker would think the word means “a feeling of distress”, while a French-speaker would think it means “a food staple”.

VSQ files make MMD crash: The Fix

The way to fix this issue now is to modify the VSQ file, and the methods to do so are covered in other articles, like Making VSQ Files Without Vocaloid and Exporting VSQX to VSQ. These tricks should correct the VSQ files make MMD crash.

The technical, detailed explanation  of how VSQ encoding can cause two files of the same song to produce different results is below. I would have liked to provide a solution, but I didn’t quite have the technical skills to make it work.

This kind of messing about can be damaging to your computer. Please don’t try this if you don’t have experience with coding. If you do try it, make a backup of your files before you do any testing.

VSQ Files Make MMD Crash

This was supposed to be easy. I wanted to use the Vocaloid file I had made to make an MMD lip sync. Unfortunately, I had Vocaliod 4, which creates VSQX files, which MMD can’t read. There is a converter, but without re-saving it in Vocaliod 1, 2, or using some other work-around, the VSQ files make MMD crash. There was a theory that the crash was caused because MMD can’t read English-language Vocaloid phonemes. If the problem was a phoneme reading issue, I could probably extend the MMD phoneme library to use the English phonemes… somehow.

I decided to test the VSQ motion data creation process with two VSQ files that downloaded. One was for a Japanese song, Melody, and the other was for an English song, a cover of “You’re Gonna Go Far Kid“. Both those VSQs worked. Mine didn’t.

Test a Theory

It was time to go test the phoneme theory. I made a short file in English, converted the phonemes to the Japanese phoneme system, and put it into MMD.

MMD crashed.

When MMD 7.39 crashes, you lose any unsaved changes. Save Often!

The following article is brought to you by this screen.

I remembered that MMD creates a text file every time it finishes processing a VSQ file. The text file tells you what the phonemes are on each note. I opened up the text for “Your Gonna Go Far Kid,” and it said the phonemes were in English.

If the phonemes aren’t the problem, what could it be?

Every VSQ file is actually an INI file with certain information in it, which means, among other things, that the files can be read as text. I opened the “Your Gonna Go Far Kid” VSQ in Vocaloid 4 and sent it through the converter. The old file didn’t crash MMD, but the converted file did.

It was a problem with encoding! The original creator of the VSQ conversion tool probably ignored the encoding differences because they didn’t affect how Vocaloid read the files, but when MMD read them, it would get confused and the VSQ files make MMD crash.

Two files open in the coding program Editra.

Editra is a free program for coding many many file types. The black characters are ASCII control characters.

I opened both of the files in a free program called Editra to compare them. The first thing I notice is a difference in length. The new file was around 4000 lines shorter than the old one, and the shorter file was over 8000 lines long. Both of them were hardcoded as read-only, meaning I couldn’t edit them even if I saved the file under a different name. The ASCII control characters made copying and pasting the text into an online difference checker impossible.

Thankfully, the internet came through with a difference checker that would work. It is called WinMerge. It is free too. I put the files through. The results were more dramatic than I expected, as it showed hundreds of differences.

The major differences were:

  • The new VSQ removed information pertaining to the harmony tracks in the original
  • The events used slightly different numbers in the “event number” column
  • Event IDs started at 1 in the new version rather than 0 in the old version
  • ID #0001 contained singer information in the new version but had note data in the old one
  • Icon IDs for all  h# values were different
  • The language is 1 in the original but is 0 in the new version
  • h#0001 appears to show the start of song information in the new version, which is consistent with the finding about the singer data in ID 0001
  • The new version has an Opening BP list that the original lacks
WinMerge is a comparison tool. This is the start of the lyrics section.

WinMerge is a comparison tool. This is the start of the lyrics section.

One of these differences was causing MMD to crash. If I had to guess, it would be the difference in starting values for notes. Face and Lips ignores notes it doesn’t recognize, meaning it can open those files, and Vocaloid itself has no problem parsing the files, but MMD gets confused.

I would love to test this further, but I’m at my technical limit. Editing the file is impossible, and I refuse to buy or pirate Vocaloid 2 just to run some tests. I tried to decompile MMD and FAL’s executable files, but MMD refuses to show anything, and I couldn’t find the area in FAL that converts VSQ into facial data. We still have to use a workaround for now.

If you have any sort of technical knowledge that might help with this case, or a copy of Vocaloid 1 or 2, please let us know in the comments. We would appreciate that. VSQ files make MMD crash now, but with your assistance, they may not do that forever.


Visit the Homepage! Plenty of Mikumikudance instruction and info!