Looping Audio Converter 1.3
This application acts as a frontend to other programs and
libraries, and allows conversion between the Wii .brstm format and
a variety of other formats.
Supported input formats:
- WAV (with or without "smpl" chunk to denote looping audio)
- MP3, using madplay
- AAC (including .m4a), using faad
- VGM/VGZ, using vgm2wav
- Any audio format supported by SoX
- Any audio format supported by vgmstream
Supported output formats:
- WAV (with "smpl" chunk if the audio should loop; vgmstream can
read these loops)
- MP3, using lame
- FLAC or Ogg Vorbis, using SoX
- RSTM (.brstm) / CSTM (.bcstm) / FSTM (.bfstm), using RSTMLib,
a subset of BrawlLib
The source code to Looping Audio Converter is released under the
GNU LGPL, version 3 or later. This license does not include
RSTMLib (see below.)
Looping Audio Converter does not do any encoding or decoding
itself of any format besides WAV. Other formats are handled by
other applications, which do the bulk of the work. You will need
write access to the folder that the application is running in for
it to store temporary WAV files.
- vgmstream (https://gitlab.kode54.net/kode54/vgmstream)
is a library for reading audio data from many different video
games. test.exe is a frontend to this library and converts the
audio to WAV format (with an smpl chunk for looping files).
vgmstream is under the MIT/X11 license; see the file COPYING.txt
in the tools/vgmstream folder for more details. vgmstream also
uses other libraries, some of which have their own license terms
- these are included in the tools/vgmstream folder as well.
- SoX (http://sox.sourceforge.net)
is a powerful command-line application for dealing with many
audio formats. It allows this program to read many different
audio formats, write FLAC and Ogg Vorbis files, and perform the
"convert to mono," "new sample rate," and "amplify" functions.
- LAME (http://lame.sourceforge.net)
is an MP3 encoder released under the GNU LGPL, version 2 or
later. This version was obtained from:
http://www.rarewares.org/mp3-lame-bundle.php
- MAD (http://www.underbit.com/products/mad)
is an MP3 decoder library released under the GNU GPL, version 2
or later. This version was obtained from:
http://www.rarewares.org/mp3-others.php
- FAAD (http://www.audiocoding.com/faad2.html)
is an AAC decoder library released under the GNU GPL, version 2
or later. This version was obtained from:
http://www.rarewares.org/aac-decoders.php
- vgm2wav is a frontend I wrote to the VGMPlay code (https://github.com/vgmrips/vgmplay)
which outputs 16-bit PCM data in WAV format. The source is now
included in the VGMPlay git repository.
- RSTMLib (https://github.com/libertyernie/rstmlib)
is a subset of BrawlLib (https://github.com/libertyernie/brawltools)
containing only the RSTM encoder, which was written by
BlackJax96. RSTMLib is included inside
LoopingAudioConverter.exe.
BrawlLib comes with the following disclaimer: "This program is
provided as-is without any warranty, implied or otherwise. By
using this program, the end user agrees to take full
responsibility regarding its proper and lawful use. The
authors/hosts/distributors cannot be held responsible for any
damage resulting in the use of this program, nor can they be
held accountable for the manner in which it is used."
Options available on the startup screen:
- Only files ending with: This option will remove any
file not ending with the given extension from the list when you
click Filter. Useful after you use the "add folder" button to
add all files in a folder, recursively.
- Output directory
- To keep part of the original path, use one or more asterisks
in the output path.
For example, an input file of "C:\Music\The Golden
Bubbles\Seventy-Two\10 Mpls.m4a" and an output path of
"./output/*/*" will result in the file "./output/The Golden
Bubbles/Seventy-Two/10 Mpls.brstm". Since there are two
asterisks in this example, the last two directory names of the
original file's path are used.
- Audio effects
- Convert to mono: combines all audio channels into
one to save space
- New sample rate (Hz): a sample rate to downsample to
(unless the input file is at that rate or lower, in which case
it will not be changed); this also saves space but comes with
a noticeable reduction in audio quality
- Amplify (dB or amplitude ratio): changes the volume
of the audio. In dB, negative values reduce the volume. For
amplitude ratio, use 2 to double the volume or 0.5 to cut it
in half.
- Channel export options
- Put all channels in one file: keeps the channel count
as-is, even if there are more than two channels (left and
right).
- Put each pair of channels in its own file: In video
game music files, multiple channels sometimes correspond to
different parts of a level (e.g. Klonoa) - use this option to
export those parts separately. If the number of channels is
odd, the last channel will be exported on its own.
- Put each channel in its own file: With this option,
even stereo files will be split up.
- Output format: see above. Note that WAV files will have
a "smpl" chunk at the end of the file if the audio is looping -
most programs will simply ignore this data. vgmstream (and
therefore this program) can read it and loop the song
appropriately.
- Export whole song: exports from the beginning of the
track through at least one loop and with an optional amount of
fade-out time at the end. The text in "suffix" will be appended
to the filename.
- Export segment before loop: exports the section from
the beginning of the track until the loop start point. The text
in "suffix" will be appended to the filename.
- Export loop segment: exports the section from the loop
start until the loop end. The text in "suffix" will be appended
to the filename.
- Convert directly between BRSTM, BCSTM, BFSTM: BrawlLib
can copy data between the BRSTM, BCSTM, and BFSTM formats
without re-encoding. This provides a lossless conversion* and is
much faster, but it will bypass any other conversions you
specify (such as sample rate or stereo->mono conversion.)
- Number of simultaneous encoding/decoding tasks: Audio
encoding can take a long time, so this program lets you launch
encoding operations in a new "thread" and go on to decode the
next file. This number represents the maximum amount of
"threads," including the decoding operation. The default value
(recommended) is the number of logical processor cores in your
PC.
- Load Options and Save Options: These buttons
allow you to load and save the options listed above to a .ini
file. If there is a file in the current directory named
LoopingAudioConverter.ini when the program starts, it will try
to load options from this file automatically.
*Assuming there aren't any minor format
differences that BrawlLib doesn't know about, if you convert
from CSTM/FSTM to RSTM and back, the resulting file should be
identical to the original input.
If your input files don't have loop points, but they should, you
can specify them in a file called loop.txt in the folder
you run the program from.
Each line should have the format:
{loop-start} {loop-end} {filename}
For example:
853168 5087322 41 Carefree Action.wav
Looping Audio Converter will pick up on this file if it exists.