VGMPlay/in vgm

From vgmrips
(Redirected from VGMPlay)

Not to be confused with VGM PLAY.

VGMPlay is a standalone VGM player. in_vgm is the plugin version, compatible with WinAmp and XMPlay.

The most recent version of both (0.52.0, supports VGM 1.72) can be found in the VGMPlay/in_vgm forum thread, or built from source. Although not officially supported, a Foobar component port exists and users often post about updates to it in the same thread.

The following GitHub repositories are relevant:

A GUI exists, but is basic and abandoned. It lacks features like passing command options to VGMPlay, though it can build playlists.

Note: For YM278B (OPL4) playback you need to download a sample ROM called "yrw801.rom" and copy it to the directory of VGMPlay or in_vgm.

VGMPlay-Specific Info

The rest of this section is a lightly-edited port of the VGM Player 0.51.1 readme, aside from the new section "Options Overview" and dropping the Credits for now.

General Usage

Drop any number of files on the executable, or open the program and type the filename.

Supported files types are:

Playlist files (*.m3u) are also supported, but may only list the file types above.

Keys

You can use the following keys during all playback, including silent sound logging.

Key Function
Space or P Pause
ESC or Q Quit the program
Left/Right Arrow Seek 5 seconds backward/forward
Ctrl+Left/Right Arrow seek 1 minute instead
0..9 jump to 0%..90% of the full song play time, including MaxLoops.
PageUp or B Previous Track
PageDown or N Next Track
R Restart current Track
F Fade out
Up/Down Arrow increase/decrease volume by 0.2 db
Ctrl+Up/Down Arrow increase/decrease volume by by 3.0 db
[ or ] decrease/increase playback speed by 1/16th
{ or } halve/double playback speed
Ctrl+X quit after the current song finishes
Ctrl+P pause after the current song finishes

Options Overview

VGMPlay accepts these options on the command line. You may use any amount of them in one command. To set multiple -c-style options, add one -c for each option.

VGMPlay.exe options
Short name Long name Effect
-w --dump-wav Enable WAV dumping (same as using -c General.LogSound=1)
-c --config option Set configuration option, format: section.key=Data
-d id --output-device id Output device ID (depends on selected audio driver)
-h --help Show the help screen (Contains the version, Usage, and this list)
-v --version Show just the version

--config options

These options come from vgmplay.ini. It's often found in the same folder as VGMPlay. The sections are listed in brackets, like [General] and [SN76496]. The keys, or options, are followed by an equal sign and then the current setting of the option.

Options given using -c will be used over options set in the .ini file. Let's say you set VGMPlay to loop infinitely. If this time you want it to loop twice, just do this on the command line:

vgmplay -c General.MaxLoops=2 "insert_here_a.vgm" "and_optionally_perhaps_a.vgz"

The .ini file documents itself, so just by reading through it you can understand the options. (If not, you're welcome to ask for clarification.) Aside from the two options mentioned above (-w and MaxLoops), the most important for pack-making would be the Chip Options.


For each chip, many of the options are the same as for other chips. They're described in one block before the chip sections, but that info is also copied below.

Many of the options described aren't listed in vgmplay.ini. To use them, add lines for them to the correct section. Some chips have additional options not listed in the table below, but appearing in their .ini section.

Chip options
Option Default Data Effect
Disabled False Set to True to disable the emulation of this chip
Core Empty (First core option named for chip) Set the emulation core to use, using a case-sensitive 3-4-character-code like NUKE, ADLE, or EMU. The chip's section lists any alternate cores it may use. You can see the current core by setting General.ShowChipCore=True.
CoreSub Empty (First core option named for chip) Set the emulation core of the subordinate sound chip (e.g. YM2203's SSG or YMF278B's FM).
MuteMask 0 Mute channels by setting the muting bitmask
MuteCh# False Mute channel # (number)
MuteXXX False Mute channel with the name XXX (e.g. DAC, DT, BD, ...)
PanMask/PanMask_SSG Empty (no panning) Per-channel panning PanMask is only available for some sound cores: SN76496's MAXM, YM2413's EMU, AY8910's EMU, and NES APU's NSFP/MAME. Under those chip sections, you can find lists of the default panning values used by their Channels.

To set the panning position, set one value per channel, separated by commas (e.g., 0,0,0,0 for SN76496). The value ranges stretch from -1.0 (left), 0.0 (centre), and +1.0 (right).

Note: For options that take a "bitmask", you must add the (hexadecimal) numbers together to get the combination you want. This is a complicated concept, so if you need to use one of these options, please search the web for "Bitmask" or ask in the Chat about it until I figure out how to properly explain it.
Note: EmulatorType has been left out because it's deprecated, meaning newer options that do the same things better are preferred.


A Litle More on Chip Muting

To mute individual channels for a chip, you can change the appropriately-numbered setting (just replace #):

[YM3812]
MuteCh# = True
[YMF278B]
MuteWTCh# = True

change the MuteMask setting:

MuteMask = 0x00F0 ;mute channels 4..7
MuteMask_WT = 0xFFFFFF (mute all 24 channels)

or combine the two:

MuteMask = 0x00F0
MuteCh0 = True ; mute channel 0 in addition to 4..7 above

But to do something like disabling the YM2612 to check if the PSG is unused, it's quicker and easier to just disable the whole chip:

vgmplay -c YM2612.Disabled=True "song_to_test.vgm"

Muting channels can be useful for sound processing. By making a .wav file for each channel of a VGM, it can also help make it easier to find loops.


Per-folder Settings

Put a custom VGMPlay.ini file in a folder, and it will be used instead of the one in VGMPlay's folder. The options in the latter are completely ignored: Any options not set in a folder's vgmplay.ini will be set to their defaults.

By doing this, you can set options that only apply to one pack without having to edit the original .ini from your preferred settings.

in_vgm-Specific Info

Basics

  • in_vgm is the ANSI version, compatible with all Winamp versions.
  • in_vgm_w is the Unicode version, compatible with Winamp 5.3+ (and XMPlay?) only.

You should install only ONE of them, not both.

If either of them fail to load, you may need to install the "Microsoft Visual C++ 2010 Redistributable Package (x86)". Version 0.50 and higher needs Visual C++ 2010 runtime DLLs.

Plugin options dialog

This applies to in_vgm itself, across all players.

  1. Make sure the Playback Rate is 44100 Hz
    • If outputting WAV files, select the proper output format: PCM, 16 Bit, Stereo, 44.100 kHz
  2. Set "pause after non-looped tracks" to zero
  3. (Optional) Set Play Loops to 2, so WAVs created from trimmed files can be compared to raw logs easily

If you plan to output WAV files, remember to make sure the player will put them in a folder you can find.

XMPlay

  1. Extract XMPlay somewhere you can freely work with files
  2. Place in_vgm or in_vgm_w in the same folder as xmplay.exe
  3. Open XMPlay
  4. Go into Options and Stuff by pressing F9, menu-clicking on XMPlay, or clicking the wrench icon
  5. Go to Input
  6. Configure in_vgm/_w as described above

XMPlay decompresses VGZ files by itself, then sends the decompressed VGMs to in_vgm. To use in_vgm's built-in decompression, put "vgm vgz" into the "Priority filetypes" text box while the plugin is selected.

Using Winamp, the VGM input plugin and the Disk Writer output plugin

  1. Close Winamp if it's already open
  2. Place in_vgm or in_vgm_w in Winamp's plugin folder. This is likely in C:/Users/[YourUsernameIsHere]/AppData/Roaming/Winamp/Plugins/
  3. If Winamp was already open, restart it
  4. Press CTRL+P to open the preference screen
  5. Go to the "Input" section
  6. Configure in_vgm/_w as described above