VGM related tools
This section will describe the use of the tools used in processing vgms as well as their useful features.
- VGM Tool r5 Developed by smspower's Maxim, this excellent tool allows for doing everything from editing headers, trimming vgms, compressing/decompressing, tagging, txt output, and even playback and compression from other formats. Currently, individual tools have been developed that perform these functions discretely. Allthough it retains some features that have yet to be surpassed or replaced by another tool, my recommendations and tutorials will focus more on other tools and methods.
The New Essentials
- VGM Tool Collection This is essential for doing any serious work with VGMs on any system. There are also post-release updates on that page, but for the vgm packs at smspower, they will not be needed. You may grab them anyway as well as the source if you wish. Updates have occurred for a few of the programs (linked elsewhere), but the 2012 version still works the best. These tools are nondestructive. In the case of file output, The original is maintained and a copy is created with an_extension appended to the filename depending on the tool.
- The Core Tools: These will be your bread and butter. You will use these on every set.
- VGM Loop Finder (vgmlpfnd) This tool finds loops in vgms. It works using a brute force method to do a byte by byte comparison of a vgm at different points. Because of this, it is sometimes fooled by idiosyncrasies in the vgm. Nevertheless, it is an important asset in the vgm processing toolkit.
- VGM Text Writer (vgm2txt) This program converts a vgm to a txt file showing the list of commands in byte order. Although it does not encode the values to notes, it does provide helpful labels, and helps you verify loop points and proper sample values to enter in vgm_trim. If the loop finder has challenges, this tool will help you see why. It acts as a second set of eyes on the results of the loop finder. Although loopfinder is easier to use, the output, once understood, will be the superior authority on the proper loop point. It shows you exactly what is going on. This is also an important asset in the vgm processing toolkit.
- VGM Trimmer (vgm_trim) This tool is used to trim both looping and non-looping vgms. It allows you to put the information obtained through the previous two programs to good use. Values are obtained via the loopfinder, or values in vgm2txt. It is used on single track vgms. This tool is the first in the process of converting the original logged vgm, to its final form.
- Make VGM Frame Accurate (vgm_facc) This tool should be used on the previously trimmed vgm. It makes it frame accurate, rounding delays. If you have correctly used values obtained directly from lpfnd or vgm2txt it will not be necessary, but it should be used regularly in the beginning as another check on quality control. It will be necessary to use it if you have used values from a wave file, or if the values entered in vgm_trim were not evenly divisible by the sample-per-frame value. Do NOT use this on other systems besides those found on smspower. Also do NOT use it on sample accurate vgms with samples such as voices. It DOES work properly on sample accurate vgm logs of PSG/YM2413 data, making them frame accurate. As time goes by, and you become experienced, this tool will rarely if ever be used, but it is important to use it regularly until you become familiar enough with VGM processing and quality standards to know ahead of time it will not be needed. It's not a bad idea to use it just to be safe.
- VGM Compressor (vgm_cmp) This tool optimizes vgms, stripping redundant commands and decreasing file size from anywhere up to 50-60%. It can be used interchangeably orderwise with the frame accurate tool without any discernible effect. It should normally by used on a trimmed file. Compressing and then trimming can damage FM instrument data. However, as PSG data is rather simple, there may be times when compressing a file first can help improve results in loopfnd, but this is an advanced technique, and should not be used by the beginner. Whatever the results, the proper order is to trim then optimize using vgm_cmp. This does not apply gzip compression, it merely reduces file size. It works equally well on vgm/vgz. The difference between these two will be explained elsewhere. This tool was updated in 2013, but none of the changes apply to the chipsets used here at smspower.
- VGM Statistics (vgm_stat) Prints out details of the tracks in a folder. You will use this when creating the accompanying text file. Its output lists track lengths. Best use (though not required) is to drag a playlist of the tracks in a pack, and it will number them in order and include Titles based on the Title tag and track lengths. One of the last tools used, you will use this for every pack.
- The Occasional Tools: You will rarely use these tools, but it is important to know how to use them.
- VGM Splitter (Delay Edition) (vgm_sptd) This tool splits vgms based on a delay value. If you have several tracks in one vgm file, and if you have a good amount of silence between tracks, you can set a value and it will output separate tracks, trimming closely to the start and end points. This unfortunately results in the loop finder no longer being able to obtain [!] optimal loops. The loops will still show up correctly. However, because of this, it is not recommended for a complete beginner to log all tracks to one file. On the other hand, this tool is recommended over its complement (Sample Edition) in most cases.
- VGM Splitter (Sample Edition) (vgm_spts) This tool splits a vgms based on specific sample values. If you have logged more than one track to a vgm, you can use this to set a split point manually between each track. This method is generally more time consuming, but it lets you split the tracks as desired.
- Remove 1 Sample Delays (vgm_smp1) This tool removes single sample waits from vgms. It is useless for frame accurate vgms, which are the proper format for non sample based tracks. It may shrink sample based vgms by a bit but should be avoided for FM based tracks. You will likely never use this.
- The Extraneous Tools: You will either never use these tools, either because they are designed for vgms not hosted at this site, have redundant features, or are very likely to never be used.
- DRO to VGM Converter (dro2vgm) This tool converts dro files (DosBox RAW OPL) to vgm.
- VGM Sample-ROM Optimizer (vgm_sro) Like vgm_cmp, this tool can greatly reduce the size of a VGM. It strips unused data from Sample-ROMs. This relates to SegaPCM, and other chipsets not represented on this site.
- VGM RF-PCM Optimizer (optvgmrf) This tool optimized VGM files, that use PCM chips of the RF-family (RF5C68 and Sega MegaCD's RF5C164). Not relevant to vgms hosted here.
- VGM Merger (vgmmerge) This small tool merges two (or more) vgms into one. You can use it e.g. to combine 2 mid2vgm files to get YM2413 + YM2612. If you're good enough to use this tool proficiently, you probably already know more than most of the tutorials here will teach you. Not relevant to processing the packs here.
- VGM Command Counter (vgm_cnt) This program counts the total number of commands per chip. Its original intended purpose is to find unused chips. For the packs on this site,
- VGM Data Block Compressor (vgm_dbc) This tool is only useable with VGMs that contain PCM data blocks. For example YM2612 and PWM. Not relevant to vgms hosted here.
- VGM Undualizer vgm_ndlz Splits 2 instances of identical chips into 2 VGMs. Sometimes used in arcade-based vgms. It will split identical chips into two vgms, It will not split a vgm with different chipsets.
- VGM Patcher (vgm_ptch) An advanced tool. Can be used to modify the header of a vgm to allow more advanced features such as loop modifiers. It can also be used to apply the appropriate volume modifier, but it is not relevant to the sets here. It has various other powerful features. Meka logs vgms with version 1.10. Later versions focus on adding support for other chipsets. Most of the time, a solution can be found without modifying the vgm_header. You will rarely if ever use this.
- VGM Volume Detector (vgm_vol) One of the few tools that do not work directly on the vgms. This program works on folders and .m3u files, calculating the gain peak values in the corresponding wave files and providing both per file and overall album suggestions for volume gain. To use properly, the vgms should be written to wave format (vgmplay recommended). The volume setting value (default 1.0) should match that of the player which records the wave. After proper values are obtained, vgm_ptch can be used to apply the appropriate volume modifier. This is an advanced tool, and addresses an issue not relevant to packs on this site. You will never need this.
- VGM Counter (vgm_cnt) Counts command by chip. It can be used to find unused chips. It will generally not be relevant for the sets here at smspower. It can clue you in on which games support FM at least partially. However since the only rom to use both psg and FM sound is a later version of the Bios, in actual practice, you will normally come across that information while using vgm2txt. It can be useful for arcade systems that use multiple chipsets, and other machines, providing useful info at a glance. In practice, you will never need this.
- VGM Tagger (vgm_tag) This can be used to tag vgms. It would normally be listed under Core or Occasional tool sections, but I recommend using other tools. It is a bit safer for vgms than VGM Tool r5 (which is a bit out of date), but in practice, using it without a good mastery of batch commands would be time consuming. Other tools are available which make the process much easier and faster to work with. My personal recommendation is vgmtoolbox. If you use it, you will be using it on all packs. In practice, I never use it. Therefore I list it in this section.