Sniper's Paradise!


Composing Music for Unreal

This tutorial is designed to help you create and import music into Unreal.

Programs to use

There are many choices now for composing music using the Unreal Engine. Unreal, Unreal Tournament, and the Unreal Mission Pack all used MOD files, which were chosen because of small file size and excellent quality compared to MIDI based files. New developments, however, have led to new ways of music reproduction in the engine.

Files and tracks
Unreal can only read files in its own proprietary format, UMX. Fortunately, ModPlug Tracker (MPT) can read these files -- usually (some UMX files have been known not to load in MPT). And as such, you can learn a lot about how Unreal reads these tracks.
Unreal can use tracks in the following formats:
MOD               S3M                 XM
IT                STM                 FAR                669
Unless you're more comfortable with other module types, it's best to use IT, since there are more features (though not all are recognized during playback in-game).

Transferring tracks to Unreal
There are 2 ways to make a UMX track -- create one from scratch, or transfer an existing one to a compatible type. To make an existing track Unreal-compatible, you'll have to go thru the entire track and verify that what you hear in the source track is what will be played in the Unreal track. This is because Unreal does not recognize all features and commands in its own engine. At the end of this article is a list of limitations you will have to account for.
If it looks like a note will not be able to be played, or a command won't be able to be processed, the only option is to render a waveform from the note or notes. Many UMX tracks have entire beat loops or filtered synth loops in single samples, and it's not unusual to use the offset command to slice the loops to the part that's to be played.

Creating a Unreal-compatible track
When creating one from scratch, you probably know how to assemble samples and assign them to instruments if necessary. Just observe the limits described below and you should have a perfectly playable UMX file.
But what if you're using plugins? I myself use a boatload of VSTi's when i compose these kinds of tracks, mixed with a few samples for simplicity. When using plugins, you'll have to divide the playback into patterns, measures, beats, or notes (whichever is most efficient and offers the best reproduction) and "render" the notes that call them.
My advice is to compose in MPT's native format MPTM, since you have 2 important options that you can't get with other formats -- Sequences and Parameter Control Events. Then you can easily transfer to IT when you've completed the composition.
After the song is done to your liking, set up a secondary sequence so you can create all the notes which will need to be rendered. After creating a new pattern, set them in separate channels, one instrument to a channel. You can use multiple notes in any channel if you want to make a cadence; just make sure there are anough rows in the pattern to capture the entire sound. Use PCEs if you want to control the plugin during playback of the note. Right-click on the pattern in the Order List and choose "Render to WAV" from the contextual menu. In the next dialog, select the following options:
  • 22050 Sample rate
  • 16-bit MONO samples
  • Channel mode (so that each channel in the pattern will be saved as its own file)
  • The Order position of the pattern to render (which should already be set)
  • Normalize (if you want to make sure the waveform is as loud as possible without clipping)

  • In the Save File dialog that follows select a unique name in a place where you can easily retrieve these samples; you will be loading them back into MPT. When you click OK, each channel (in that pattern in that Sequence) between the first channel with data and the last channel with data will be saved in its own index and using the channel name from where it came. The samples will all be exactly the same in length.
    The object here is to create a sample-based reproduction of what was being played by plugins, since UMX does not recognize plugins (and may not even be able to play the module). So go back and create samples (apply them to instruments too if you want to use envelopes) and make substitutions for the plugin notes.

    Saving in UMX format
    You cannot save or export the module you've created from MPT; it must be done from UnrealEd. But first you must save the file in its standardized format, called Compatibility Mode. If your track is in MPTM, save it first as it is, then convert the open document to IT in the Song Properties window (or convert it to one of the other available types that can be imported into Unreal). If you lose something you didn't intend to, you can reload the MPTM you just saved. If it all still sounds right after conversion, save it as a standard IT by choosing "Compatibility Export" from the File menu. You can then save a copy of the track as a compatible version.
    Now to convert this track to UMX. Open UnRealEd and find the Music Browser. From that window, select "Import" from its File menu. Find the file and load it. The module will be brought into UnrealEd and converted to UMX format if it's in the proper module format for its type. You can then play it from the music browser to make sure it sounds correct. You can then save it as a UMX file by choosing "Save" from the browser's File menu.

    UMX limits
    Here is the known list of limitations in the Unreal module playback engine. If a module will play in Unreal (as a UMX file), it should play in all the other versions of Unreal. I tested extensively with IT tracks, but the equivalent FX commands for other module types are probably also applicable.

    Unreal engine:
    1. Plays only mono samples.
    2. Plays only 8-bit or 16-bit samples
    3. Recognizes instruments' pan and pitch envelopes, but not volume envelopes.
    4. Does not recognize all panning controls; these are ignored: pxx (volume effect for pan), Pxx (pan slide), and Yxy (panbrello). In IT, use S8x or Xxx to set the pan position.
    5. Does not recognize most volume controls; these are ignored: Mxx (channel volume), Nxx (channel volume slide), Vxx (global volume), and Wxy (global volume slide). Kxy (volume slide + vibrato) and Lxy (volume slide + tone-portamento) process the vibrato or portamento, but do not process the volume slide. In IT tracks, use the volume effect (vxx) or Dxy (note volume slide).
    6. Does NOT apply Tremor (Ixy), Fine vibrato (Uxy), S6x (fine pattern delay), S9x (sound control including sample reverse S9F), and SDx (note delay). SBx (pattern loop) repeats forever, not x times.
    7. Does not use global ramping. Clean the samples first, by making sure they start and end at 0 (the center line in the sample display). Also do the same with loop points.
    8. Does not store values when passing *xx, where * is the command effect. For example H00 does not use the last Hxy value; it's ignored.
    9. Does not use samples' Sustain Loops, only Sample Loops.
    10. Does not recognize NNAs.
    11. Uses up to 32 channels optimally.
    12. Does not apply ModPlug's Autovibrato.

    Frequently Asked Questions

    How can I play Unreal music outside of Unreal?

    Try going into UnrealED, go to the browser, select "Music", and load the song you want (.UMX file).. then press the Export button. You will be able to export the file selected as an Impulse Tracker (.IT) file. The .IT file can be then played in WinAMP or other Windows MOD players.

    I'm trying to use Impulse Tracker files with Unreal, but they won't play. Why?

    The Galaxy audio engine within Unreal does not support certain extended features of Impulse Tracker, such as New Note Actions (when you use 'instruments' instead of 'samples' in IT, for instance). However, it DOES support ping pong looping, 16 bit files, up to 32 channels (64, if you don't want sound fx playing ), and panning envelopes. No volume envelopes, though.

    Can I play multiple WAV files for interactive music?

    Yes. Galaxy can play up to 64 WAV files at once. Be warned however, that using more than 2 or three WAV files over 2 megs in size will slow down the system.


    Spam Killer

    Back To Top
    2005 Sniper's Paradise
    All logos and trademarks are properties of their respective owners.
    Unreal™ is a registered trademark of Epic Games Inc.
    Privacy Policy
    Website by Softly
    Powered by RUSH