Many audio formats allow to embed tags containing meta data (such as song title, author name, and so on). ZDoom supports using certain custom tags to achieve greater control over the song. This is supported for the Ogg Vorbis and FLAC formats. This is not supported for the MP3 format. Custom tags can be set through most music players — Foobar2000, WinAmp, XMPlay and others should allow you to do this.
ZDoom supports using these tags not just for music, but also for sounds.
The tags are:
- LOOP_START: Start time for the loop. If omitted, the song repeats from the beginning.
- LOOP_END: End time for the loop. If omitted, the song loops at the end. (If you need to specify this, why aren't you using a shorter song.)
- LOOP_BIDI: Set it to "1", "On", "True", or "Yes" to use a bidirectional loop. This only works with sounds and not music, because music is streamed and therefore does not support them.
You only need to specify either LOOP_START or LOOP_END to set the custom loop. Naturally, you can set them both, as well. The format for each tag is the same:
- If it contains a colon (:), it specifies by time. This may be of the form 00:00:00.00 (HH:MM:SS.ss) to specify by play. Various parts may be left off. e.g. To start the loop at 20 seconds in, you can use ":20", 0:20", "00:00:20", ":20.0", etc. Values after the decimal are fractions of a second and accurate to one millisecond.
- If you don't include a colon but just have a raw number, then it's the number of PCM samples at which to loop.
- Any characters other than digits (0-9), colons (:), or a single decimal point for the seconds portion will result in the tag being ignored.
Sounds that define a loop do not play looped by default. They must be started with CHAN_LOOP so that the higher level sound code knows they loop and can handle them accordingly.