When Silence Hides Something

You need to be careful when manipulating music engines. Usually the effects will not be difficult to deal with, but you should take care that your actions do not negatively affect your logs. Loading a value that plays nothing may not be as innocuous as assumed. The Technical Information window, particularly the area that displays the current tone values can be a helpful guide to what is happening. This will not always be the case. Sometimes, you will need to look at the vgm.

If you have it, use the logged track from the First Track Borgman Tutorial.

Otherwise, use this example: Attach:bad log.zip

First convert your vgm to wav using your preferred tool. VGMPlay will be most accurate, but Winamp and Foobar200 also work well enough to see what we will discuss (with the proper plugins). If you don't know how to do that, see this page.

Open the corresponding wave file. Whether it has been logged properly or not, it should look like this:

Both your wav file and the attached version should have some silence at the beginning. However, what looks like silence is hiding an issue in the attached vgm. Drag your file to vgm2txt and compare your file to the one that is attached. Notepad++ is a good txt viewer, but use anything that allows you to view large files without slowdown and is easy to work with.

If you look at the text file (line 122+) you will see that every frame has 11 SN76496 (PSG) commands and 12 YM2413 (FM Chip) commands setting the tone and volume registers to 00 (nothing). None of those commands are communicating anything meaningful, and are in fact redundant and taking up space. The only negative effect this will have is preventing The VGM Splitter (Delay Edition) (vgm_sptd) from working reliably on your file, cutting off the excess silence in the beginning. Does your file have anything similar?

For a clearer insight into this issue, here are a few other examples.

Attach:good-log-bad-log.zip

Extract these files to a new directory.

Cyborg Hunter BGM was logged setting the value of the trigger to $00 and then $80 between each track and allowing a few seconds of silence in between.

Cyborg Hunter BGM(Bad) was logged setting the value of the trigger to $00 between each track and allowing a few seconds of silence in between.

As you can see the second file is considerably larger despite being about 40 seconds shorter.

Try dragging the two files onto vgm_sptd, using a value like 10000 or 80000. VGM Splitter (Delay Edition) works well, on the first file, splitting it into 10 separate files, while the second results in 2. The correct number is 9 files, thought the results are acceptable to work with. In practice, you will have some issues with the loop finder (vgmlpfnd) because of how closely cropped the files are and some issues with the loop detection in such instances (use the 2012 version). The 'Bad' log is easily remedied by running it through the VGM compressor which joins the redundant commands and waits so that the file can be as easily split as the first file. You can either use the included file or try optimizing and then splitting the vgm on your own.

Normally this is not recommended. The compressor should only be run after the files have been trimmed (looped). However, in practice PSG logs should not suffer at all from optimizing beforehand. It is still not ideal practice, and if these had been the FM versions, it would be suggested that the tracks be re logged. FM data may be negatively affected by compressing beforehand. Overall, logging tracks to single files presents difficulties. One can also use the VGM Splitter (Sample Edition) to pinpoint points for separation, but it would likely be less time consuming to log tracks from scratch.

This is unlikely to be an issue if files are logged with care, and one by one. The issue also seems to affect SG and SMS games. Only a handful of GG games have this issue. Using save states and game compatible methods can ameliorate issues like this from happening in the first place. It is a good idea to have some idea how the engine works and then minimize intrusion into how the sound engine works.




Return to top
0.141s