A short guide for anyone putting original music into RPG Maker and wondering why looping seems harder than it should be.
Search for “RPG Maker music loop” and you will find plugin recommendations, script calls, and people cutting a track into two files so the intro plays once and the body repeats. All of that is working around a feature the engine already has. RPG Maker MV and MZ read loop points straight out of an OGG file, natively, with nothing installed. The intro plays once, the body repeats forever, and the jump is sample-exact.
The reason almost nobody uses it is that the feature is invisible. There is no checkbox in the editor, no field in the database, and the docs barely mention it. The loop lives inside the audio file itself, as two text tags, and if you have never been told they exist you would never find them.
The two tags
An OGG file can carry text metadata, the same way an MP3 carries artist and title. RPG Maker looks for two specific entries:
- LOOPSTART: the sample where the loop begins.
- LOOPLENGTH: how many samples the loop lasts.
That is the whole system. When a BGM starts, it plays from the very beginning of the file. When playback reaches LOOPSTART plus LOOPLENGTH, it jumps back to LOOPSTART. Everything before LOOPSTART becomes a natural intro that plays exactly once. If the tags are missing, RPG Maker just loops the entire file from the top, which is why an untagged track with a pickup or a reverb tail sounds broken as background music.
Both values are in samples, not seconds. If your track is at 48,000 samples per second and the loop should start 6.5 seconds in, LOOPSTART is 312000. If the body is 128 seconds long, LOOPLENGTH is 6144000. Getting these numbers exactly right matters, because a value that is off by a handful of samples lands the jump mid-waveform and you get a click every time the music wraps.
What it needs from you
Three conditions, and all three bite people:
It has to be OGG. Not MP3, not WAV, not M4A. The convention only works in the OGG files in your project’s audio/bgm folder.
The tags have to survive. Any tool that re-encodes or re-exports the file can silently drop them. If you tag a file and then run it through a converter, a normalizer, or an editor’s export dialog, check that the tags are still there. The tagged OGG should be the last stop before the bgm folder.
The numbers have to be sample-exact. This is the hard one. You can write the tags by hand with any metadata editor that handles Vorbis comments, but you are doing the math yourself: find the loop start in your DAW, convert it to samples, count the body length in samples, and hope your DAW’s display and the rendered file agree. One region trimmed during export and both numbers are wrong.
This is the part I built Loopsmith to do. You place the loop start and end on the waveform, hear the seam repeat before you commit, and export an OGG with LOOPSTART and LOOPLENGTH written correctly. There is an RPG Maker preset that sets all of this up in one step. Drop the file into audio/bgm, pick it as the map’s BGM, and start a playtest. The intro plays once and the body loops with no plugin and no script call.
The one thing the native loop cannot do
The jump back to LOOPSTART is instant. Sample-exact, but instant. If your music is dry at the loop end, that is perfect. If there is any reverb, delay, or a note that rings past the loop end, the ring-out is cut off at the moment of the jump, the room goes silent for an instant, and the loop start lands dry on top of the hole. I wrote about why that happens in Why Reverb Tails Break at Game Music Loop Points. Engines with two audio voices can solve it by letting the tail ring over the restart. RPG Maker plays BGM on one voice, so it cannot.
There is still a fix, and it happens in the audio file rather than the engine. Render the tail that rings past the loop end, then mix it into the opening of the loop body itself. Now the audio at LOOPSTART already carries the ring-out, so when RPG Maker makes its hard jump, the tail is simply there. Done by hand this is a fiddly render, fold, and crossfade job in your DAW. Loopsmith calls it a folded tail, and the RPG Maker preset chooses it automatically when your track needs it, so the seam stays warm even through a hard return. Engines that can play two copies of the music at once use tail overlap instead, which is the better choice when it’s available (the FAQ explains why).
You can hear this exact difference before touching anything: Hear the Loop plays a hard cut against a tail overlap right in your browser.
How Loopsmith makes this easier
Done by hand, the tags are arithmetic: seconds times 44,100, typed into a tag editor that can’t even play the loop back. And music with a long reverb is where a lot of people simply give up. That’s the part I built Loopsmith for.
- You place the loop by ear, not by math. Set the loop on the waveform, or let auto-detect suggest one, and Loopsmith writes LOOPSTART and LOOPLENGTH to the exact sample.
- You hear it the way the game will play it, before you open RPG Maker: the jump back to the loop start, how the game will end the music, and a check that flags a click, a loudness jump or a cut-off sound at the loop point. No more finding it in a playtest.
- Reverb is no longer the hard part. The RPG Maker preset folds the tail into the loop’s start by default, so the ring-out is already there when RPG Maker makes its hard jump. Any intro stays in the same file and plays once.
- If you’re the composer, the developer just drops it in. One OGG goes in audio/bgm and gets picked as the BGM. No plugin, no instructions to write.
- It works in MV, MZ and VX Ace. VX Ace plays a WAV but ignores its loop points, so Loopsmith gives you the OGG it does read. The same file also loops in pygame and other SDL_mixer games.
- Revisions are quick. When you re-render the track, Loopsmith offers to reload it with your loop points kept where they still fit, and you export again.
Try it on your own track
Take one piece of your own music, render it with the natural ring-out on the end, and set the loop points. If you want to hear what the convention feels like before spending anything, the Loopsmith demo is the full app with three free tracks you can export as often as you like, which is enough to put a real, tagged OGG of your own music into your own project tonight.
And if you are working in more than one engine, the same loop points travel. Unity reads them from WAV, with one import setting that breaks them. Godot ignores these two tags but reads the WAV version of the same idea out of the box, with no settings to change at all. The full map of which engine reads what is in How Game Engines Handle Loop Points in Audio Files.