midi on your browser
There are three episodes in the development of Marathon, and the music differs according to whether you are working with Marathon 1 or M2 or M-Infinity. Marathon 1 used QuickTime to play continually looped midi tracks as background music, The midi files are saved within the file called 'music'. Complete instructions for producing your own background music are given below.
There is no background music in Marathon 2 and Infinity. There are no midi files either. All the music you hear in M2 and Infinity is sampled audio. That doesn't mean you can't do background music, just that it's not very easy.
|(Sorry if you've read this elsewhere on this site, but it bears repeating because a lot of people seem to have difficulty getting the hang of it).
Marathon uses a midi (Musical Instrument Digital Interface) file to generate music. The midi file contains no sounds at all, only strings of note-on and note-off events. QuickTime receives these events and plays them using the sounds built into the software on the player's computer, ie the QuickTime Musical Instruments extension. So, you can _only_ use the QT range of instruments. (Actually, that's not quite true, but embedding custom instruments is for another day and another page).
There is an easy bit and a hard bit to putting your own choice of music into Marathon. So I'll start with the easy bit.
Get your hands on a midi file.
Get a copy of Midigraphy, by TONTATA, a midi editing app. that can play QuickTime Musical Instruments and export QT movies. There are other apps which will convert a midi file to QuickTime (including MoviePlayer), but Midigraphy will let you optimise the track for Marathon. And that's the hard bit - but let's stick with the easy bit for now.
Open the midi file in Midigraphy and export it as a QuickTime movie. Midigraphy will ask you what format you want to save it as (eg MoviePlayer, SimpleText etc.) and offer you a dialogue box to select the appropriate app.
You now need 'MultiMusicMovieMaker' which you can get from your local infomac/sound/ archives or the Marathon HyperArchives.
Now, using Resedit or Filetyper or whatever, change the creator to '26.2' and the type to 'msik'. You now have a Marathon 1 music file.
If you compiled several midi tracks into one music file, remember to put the appropriate 'song track' number for the various levels (using Phforte, it's set in the 'mission info data'). You did remember to write down which track was given which number didn't you?
That was the easy bit. Now here comes the hard bit...
The tools you need:
|Basic principle: you are making background music to run concurrently with a highly demanding real time animated graphics engine. The more complex the music, the more likely that the game will drop frames per second, never mind distracting the player. The music should complement the environment/action, otherwise nobody is going to use it.
So... get your midi file open in Midigraphy (or other sequencer of choice) and start tweaking the arrangement...
Reduce the number of instruments to 5 or 6 max. More instruments will only mean more dropped notes anyway.
Weed out all those octave doubled notes, and if you know what you are doing, reduce chords to their basic essentials. Try changing the voicing to get the same effect for less notes. Hey, the player will be too busy to notice ;-)
Break up any grid based quantising. Sound Manager doesn't like having to reproduce simultaneous sounds, and 5 midi events in rapid succession will be handled more smoothly by the cpu than 5 at exactly the same time. Drag various tracks just before or just behind the beat, whilst keeping an ear open to the effect that it has on the piece. (You can change the style of a drum part significantly by bringing the hihats forward and letting the kick or snare drag behind - or vice versa).
If this is your first time with QuickTime Musical Instruments then experiment with the sounds. Just because you have a bass part doesn't mean you have to use 'electric fingered bass'. Try the French horn or the electric piano down low. For instance, I find that 'warm pad' gives a much better impression of a distant orchestral flute than 'flute' does. Try transposing the piece. QuickTime samples are not the most sophisticated in the world, and some instruments sound much better up or down a tone or two.
Try and avoid using 'volume' if you can achieve the same effect by editing velocity values. The velocity data is already going to the cpu anyway. This holds true for other control and program data. Keep it to a minimum.
You won't be able to achieve an unbroken loop as your music recycles. QuickTime and Marathon pause before starting again, so keep this in mind when you finally structure your arrangement. Try a dramatic conclusion, or if you want a fade out, trying fading in at the beginning as well. This can add a lot of dramatic tension to the first empty rooms of a new level.
|As I said at the beginning - there is no background music in M2 or Infinity. The 'music' file is only the audio file used for the opening theme.
The opening theme tune is easily replaced if you don't like it though. Just get a sample of your favoured music saved as an AIFF file. Now, using ResEdit or whatever, change the Type to Mus2 and the creator to 26.oo (that's the infinity symbol - option5 on your mac keyboard - not two ohs! ). Now rename the file 'music' and drop it into your Infinity folder - taking care to remove the original first, and you're ready. It doesn't loop, so if you want a long track you'll need a 10meg file just like Bungie.
If you want to add music to your chapter screens, just paste a sound file into the map file. Give the sound the same id as the chapter screen you want the music to accompany.
Background music is a different kettle of fish. Unlike M1, there is no background music engine, there is only the 'ambient sound', which was considered more 'cool' than bg music. Yes, there are ways of using ambient sound to create bg music, but there are severe limitations too. Yes, I'm experimenting with some ideas, but I haven't got round to writing them down yet :-P.