BRRTools are currently the most evolved tools to convert between Microsoft standard WAV format and SNES's compressed BRR format.
The pack contains 3 programs:
BRR Decoder can convert from BRR to WAV
SPC Decoder can rip multiple BRRs from within a SPC sound file simultaneously into WAV files
BRR Encoder can convert from WAV to BRR
Supports resampling when encoding (anti-aliasing filter available)
Fully supports encoding of looped samples for arbitrary loops
Choose which "filters" to use for encoding
Can select playback rate of decoded samples and get info about note tonality when it's possible
When decoding looped samples, choose the length of the output sample and get info about looping stability
Optional lowpass filter when decoding (simulate hardware) and treble-boost filter when encoding (compensating the lowpass filter)
Advantages of BRR Encoder over SnesBRR:
You can pass in a loop point (-l###), and it will automatically resample the looped region to a multiple of 16 samples. (The final BRR block is encoded in a way where the loop-point block decodes properly.)
You can pass a resampling ratio (-rb###) and it will resample such that in/out≈###, while keeping the looped section a multiple of 16 samples. (out/in = 1/###)
* -rb### is bandlimited sinc interpolation, and generates no downsampling artifacts, unlike other resampling methods (-rl###, -rc###, etc)
* -sb#### will resample the audio file to approximately #### Hertz.
Passing -g to brr_encoder will prefilter the audio file to compensate for SPC700's Gaussian filtering (muffling).
Passing -a### will multiply the loudness by ###. To fix clipping, try passing -w -a0.99 (or smaller) when using resampling or -g.
Note that loop points still have to be manually inserted into the output BRR files to make them usable with Addmusic.
v3.14+ (by jimbo1qaz/nobody1089):
Changed the internal calculations to operate on 32-bit samples (instead of 16-bit WAV samples). -g and -rb often increase signal amplitude and produce clipping. 32-bit samples ensure that clipped samples saturate, rather than producing loud overflow/wraparound artifacts.
As with the previous version, I've only done testing to assure general functionality and haven't tested every single feature, since I'm not experienced with music and porting stuff.
This version was also missing the Readme, so I went ahead and included the Readme from the previous version.
Originally posted by "nobody1089"
MOD NOTE: Should I modify brr_encoder to output AMK loop header (if passed a flag), and modify brr_decoder to read +skip the loop headers if present?
Feel free to do so and submit an update, it would definitely make it more useful for SMW hacking purposes. If you do so, I recommend enabling it via a new command line parameter for the executables. Also if you do, make sure to update both the encoder and decoder to work with the new .brr format.