M.U.G.E.N RC EX + alpha
The RC EX + alpha releases were experimental alpha releases of a development
branch of the 1.0 RCs containing some BGM- and sound-related changes. The
functionality from the EX + alpha development branch was folded it into the
main RC series starting from 1.0 RC8. The rest of this document is relevant
to changes introduced in the course of EX + alpha development.
The changes you will see, in a nutshell:
- Better MP3 and OGG support
- Extensible architecture (read: "M.U.G.E.N plugins")
- Loopstart and loopend support, for compatible plugins
- More intuitive volume settings: Master, wave/sfx, BGM
- Volume "offsets" replaced by volume scaling factors
- Various BGM bugfixes
- Improved sound quality
- Probably some new bugs
You MUST use the updated mugen.cfg included in order for BGM to work!
- What kind of plugins does this support?
- M.U.G.E.N only recognizes plugins specifically designed for it. So, for
instance, Winamp plugins will not work. You can see the initial EX + alpha
blog post for an idea of the kinds of problems involved with non-native
plugins.
- How do I make a plugin for my favorite file type?
- Consult the plugin SDK.
- How do I find loop points for my MP3s or OGGs?
- To get a good result, you will need to open your file in an audio editor
and identify the precise points where the music repeats itself. For
further details, you may wish to consult loopguide.html in the docs/
directory. This is especially recommended if you are using MP3 files, as
there are several tricky issues involved for MP3 in particular.
- How do I set loop points for my other file types?
- You can't, yet. Looppoint-compatible plugins haven't yet been made for the
other file types.
- The audio stutters/skips!
Try turning up the audio buffer size and/or turning down the mixer sample
rate in mugen.cfg ([Sound] section). Also, turn off high-quality resampling
if you have it enabled. If you still can't get it to work right, then
please report the issue to us, along with your system specs. In your report,
try to distinguish between dropouts (a short period of silence), skips (the
music jumps ahead by a small amount), and stutters (the music repeats itself
briefly).
For this alpha build, the BGM system tries to keep track of its status.
You can find some summary timing statistics for the mixer callback written
to the end of mugen.log. You can also see if the system detected a decoder
underrun by searching for lines saying "possible read starvation detected!"
This information helps us troubleshoot the possible causes of sound
corruption.
- Why are there three Microsoft.VC90.CRT folders? Is this some kind of joke?
- Those folders are an unfortunate consequence of the way Visual C runtimes
are loaded, and are usually required for correct operation. However,
there is a way to get rid of them. You need to download and install the
Visual C++ 2008 SP1 redistributable package (x86). Once you have done
this, the Microsoft.VC90.CRT folders can be safely deleted.
The following plugins are in the package. See the comments in mugen.cfg for
optional parameters and usage.
mpg123
Supports MP3 playback using the libmpg123 decoder, which features several
optimized decoding engines written in assembly. Supports looppoints,
ReplayGain volume adjustment, and sample-accurate seeking. (Note: seeking
will lose an unnoticeable amount of accuracy if the MP3 is at a sample rate
different from the mixer sample rate.) mpg123 also fixes the "my MP3 plays
slow/fast" problems.
vorbisplug
Provides Ogg Vorbis playback using libogg and libvorbisfile. Supports
loop points, ReplayGain volume adjustment, and sample-accurate seeking.
Uses M.U.G.E.N's built-in resampling service for rate conversion, where
necessary. This should provide noticeably better output than the default
SDL mixer playback.
sdlmix
Wrapper plugin for selected BGM services provided by SDL mixer.
This means MIDI, MODs, and other tracker files.
sdlmix performs seamless looping from the end to the beginning of
BGM files (except for MOD/tracker files that naturally loop).
However, arbitrary loopstart and loopend points cannot be specified.
The volume system has also been revamped. There is now a master volume setting,
a voice/sfx volume setting, and a BGM volume setting. That's it. Volume
settings are floating-point numbers between 0% and 100%, and multiply together
to give the final output volume. Plugins may also have individual volume
multipliers.
For sound effects, the product of all volume scales (master volume, wave
volume, and any additional scaling factors in the case of CNS) cannot exceed
100%. If the product is too large, it is reduced to 100%. For plugins, the
meaning of a volume scale exceeding 100% (after including plugin-specific
volume scaling) is dependent on the particular plugin.
- [Options] WavVolume and MidiVolume removed (they were redundant).
- [Sound] SampleRate and BufferSize parameters added. These control
the mixer parameters. See the comments in mugen.cfg for more details.
- [Sound] ModVoices, MasterWavVolume, MidiVolume, MP3Volume, ModVolume,
CDAVolume parameters removed.
- [Sound] SFXResampleMethod parameter added. This specifies how to perform
rate conversion of sound effects. SDL method uses SDL's built-in
conversion, which performs no interpolation. This is relatively fast, but
gives poor quality results. The libresample method performs bandlimited
interpolation, which is higher quality, but may slow down loading by a
small amount, and requires more working memory. If using libresample, you
can set SFXResampleQuality to 1 for even higher quality, at the cost of
more resource usage.
- [Sound] BGMResampleQuality parameter added. This functions the same as
SFXResampleQuality, but for music. Note that libresample is always used
for rate conversion of music; SDL conversion is not supported.
- [Sound] MasterVolume, WavVolume, BGMVolume parameters used to control
volumes. These can also be set in the Options screen.
- [Music] Music group added for plugin specification.
- [Misc] SFXBackgroundMode configures how sounds should be played in the
background. Choose from Mute or Play.
- [Misc] BGMBackgroundMode configures how music should be played in the
background. Choose from Mute, Pause, or Play.
- [Data] "volume" parameter is now ignored. Use "volumescale" to specify a
volume scaling factor in percent (100, i.e. no change, is the default).
- (PlaySnd) "volume" parameter is now ignored. Use "volumescale" to specify
a volume scaling factor in percent.
[Music] bgmvolume (replaces bgvolume)
bgmvolume is a floating-point multiplier for this stage's volume. 100% is
no change. The old parameter, "bgvolume", is deprecated and is ignored.
[Music] bgmloopstart, bgmloopend
Specifies the start and end points of the music to loop. If these are set and
looping is on, then the music will play from beginning to loopend, then
continue looping from loopstart to loopend indefinitely. The exact
specification of these parameters is plugin-dependent. For mpg123, the loop
points are specified in terms of samples. No other plugins support loop points
at present. bgmloopstart defaults to 0 (beginning) and bgmloopend defaults
to -1 (end of file).
[Music] {title, select, vs, victory}.bgm.loopstart (also loopend and volume)
[Demo Mode] fight.stopbgm
If fight.playbgm = 0, then setting fight.stopbgm = 0 allows the title BGM
to continue playing during Demo mode.
- bgm.loopstart, bgm.loopend
These are just the ones we remember.
All the RC7 changes, plus:
- Ogg plugin (vorbisplug) supporting loop points and ReplayGain.
- Engine now provides high-quality resampling services (for
plugins that require it) using libresample.
- Optional high-quality resampling for sound effects.
- Support for WAV, MP3, and OGG removed from sdlmix plugin, since there are
better alternatives.
- Plugin API finalized.
New EX + alpha bug fixes:
Known EX + alpha bugs:
- Sound and music are sometimes muted when a particular window is focused,
regardless of the background mode settings.
- If music is set to pause or mute in the background, it may start playing
again if a new BGM is loaded while still in the background.
All the RC5 changes, plus:
- BGM loop points can now be specified in storyboards.
New EX + alpha bug fixes:
- loop = 0 mp3's now stop properly.
All the RC4 changes, plus:
- Sound effects can be muted when switching out of the M.U.G.E.N window.
- BGM can be paused or muted when switching out of the M.U.G.E.N window.
- Mixer parameters now configurable.
- BGM buffering scheme reworked to address stuttering and dropouts.
- Stage BGM is now guaranteed to start after the first tick, for
compatibility with characters that assert NoMusic at the start of the round.
- Upgraded to SDL_mixer 1.2.9. This fixes crashes with WAV music and enables
seamless looping for non-MP3 filetypes.
New EX + alpha bug fixes:
- Extension lists were cut off at the first semicolon. They are now
comma-separated.
- Storyboard BGMs didn't play, or hanged the application.
- PlaySnd looping parameter didn't work.
- System BGMs didn't always play when loop was 0.
- mpg123 sometimes left a gap with loopend = -1, even on gapless MP3s.
If you use mpg123 for your mp3 files, then the following bugs are
fixed:
- MP3's played at the wrong frequency
- Glitchy/scratchy sound when changing tracks
- MP3's with certain ID3 tags would crash the game