RECORDING MUSIC FROM
CLASSIC SIERRA GAMES
Table of Contents
Question: How can I record music from classic Sierra (or other) games?
Answer: There are basically two different kinds of music in Sierra games -- MIDI and DIGITAL AUDIO (DAC) -- and they require different techniques to record and/or extract. Below are some elementary guidelines to help you through the process of obtaining game MIDI and DAC soundtracks.
MIDI
- MIDI Overview
- MIDI Recording 101: A Primer
- MIDI Recording Using Two Computers
- Wrong Instruments Play On The Recorded MIDI File
- "Hung", Stuck Notes
- MIDI File Format
- Embedding SysEx Data
- The Controller Measure
- MIDI Editing - Overview
- Editing - The Beginning
- Editing - The Middle
- Editing - The Ending
- Final Touches And Conclusion
DIGITAL
MIDI data contains no actual sound. It is comprised of code that tells a seperate MIDI device what sounds to make; how long to make them; how loud to make them; and when to stop making them. Unlike an audio CD which will sound about the same no matter what CD player you play it on, MIDI depends solely on the device that will be receiving the data to create the sound -- whether it be a Sound Baster sound card, or Roland JV-80 synthesizer -- the MIDI data will instruct the device to play that synthesizer's sounds but doesn't have any control of the sound's "quality" (or, fidelity). It is up to the sound card or synthesizer to handle the "quality" of the sound. Therefore, MIDI data can be used with any MIDI device -- and it can be recorded with any MIDI device capable of MIDI input. The actual MIDI data or code will be the same no matter what device records or plays it, but the sound quality will vary depending on the type and quality of the actual MIDI device used to play it. In the strictest sense of the word, MIDI is a collection of "digital" instructions that control another device; though unlike digital WAV files, the sound characteristics of MIDI are entirely dependent on another device.
Most MIDI song files contain additional information beyond just the actual MIDI code. "META" data is comprised of everything that isn't MIDI data. (Huh?) For instance, the tempo of a MIDI file is not MIDI data, it's META data, as is any text you may include (track names, copyright information, etc.) Not all META data transfers from one MIDI device to another. but for our purposes, the most important META data does....channel information and tempo.
Then there's System Exclusive information, which is not MIDI information, but is often included along with MIDI data. System Exclusive (or, SysEx for short) controls specific behaviors of a MIDI device, like its Master Volume settings or different types of Reverb. In more advanced applications, SysEx data may control literally thousands of characteristics of a given MIDI device. So what? This is important because many MIDI songs that are designed for a specific sound card or module (like the Roland MT-32 Sound Module) rely on SysEx commands to actually create new sounds that aren't a part of the sound card or module's default instrument mapping. For example, Sierra and LucasArts games are filled with SysEx commands that tell the Roland MT-32 to play custom instrument sounds and change reverb settings throughout the games. If you want to record MIDI music from these games, you'll also want to record (capture) the SysEx data as well.
MIDI RECORDING 101 - A PRIMER:
There are a couple of methods you can use to record the MIDI output of Sierra games. If you own an external, hardware MIDI sequencer (not as popular these days since the onset of notebook computers), connecting your sound card's MIDI output to a hardware sequencer acts in much the same manner as connecting it to a tape recorder...except, you're recording digital MIDI data, not analog sound. Most hardware sequencers include a means to permenently store the recorded MIDI data, such as a floppy disk. The disk can then be accessed from a computer to retreive the MIDI data for further editing.
Another method of recording MIDI data (which is the one that I prefer and use most often) is via software sequencers, using two computers. In essence, this is no different than using an external hardware sequencer except that in this case, the hardware sequencer is actually a second computer system which is loaded with sequencing software.
Another method of recording MIDI data from games is also the least preferred due to computer conflicts and limitations. Using a "loopback driver" (such as "Hubi's"), the output of a MIDI device is input to the same MIDI device by means of a "virtual" MIDI port controlled by a loopback driver. This doesn't work in all situations, but it negates the need for a second computer or a hardware sequencer.
A "sequencer" is simply a fancy name for "MIDI Recorder". Sequencing software is available commercially, though almost all MIDI sound cards come with a software sequencer of some sort. Some of the more popular software sequencers include Sequencer Plus, MIDI Orchestrator, Cakewalk, Ballade, etc. If you search the Web, you should also be able to find some shareware or freeware MIDI sequencers available for download.
Essentially, you'll want to use the method of recording MIDI game music that best suits your situation. If you have a hardware sequencer, you probably are already very familiar with how to use it for MIDI recording. If you're using a loopback driver, this can be a bit tricky and you need to be familiar with the driver's usage and setup (as well as its limitations) as outlined in the documentation included with it. Using a straight-forward approach by utilizing two computers is by far the easiest method of recording MIDI soundtracks from games, as is explained next.
Each computer must contain a MIDI port. MIDI ports are included on almost all sound cards and most often double as a Joystick port. The prefered "MIDI port" is a Roland MPU-401 compatible MIDI Interface, which many people already use with their MT-32 and/or Sound Canvas sound modules. Though, any port capable of sending and receiving MIDI data will work. (Non MPU-401 compatible MIDI ports may have problems or limitations when capturing System Exclusive data from a game.)
Setup one PC as the "Game" machine -- this is the MIDI Playback or source PC. If you're using a sound card MIDI port on this PC, you will need to make sure its MIDI output is passing through to the sound card's MIDI port. The method of doing this varies with each sound card. See your sound card's documentation for properly setting this parameter.
Setup the other PC as the "Recording" machine -- this is the MIDI sequencer PC. You will need a software sequencer, such as Cakewalk or MIDI Orchestrator, to serve as the recording software. Every software sequencer works a little differently, so you'll have to refer to your sequencer's documentation for information on recording MIDI to a track. Essentially, it will be done the same way you would record from an external MIDI keyboard. You'll need to designate the "MIDI INPUT" port that the software will use to receive MIDI data. (This is usually under a menu item called MIDI Setup or Device Setup.)
All Sierra soundtracks are limited to 9 channels for MIDI music. (Channels 2-10.) Even though Sierra's support of General MIDI allowed for 16 channel recording, channels 11-16 were not used. Therefore, you should setup your sequencing software to record on at least these 10 channels. This is usually done automatically in most modern sequencers -- they will record any and all channels being sent through the MIDI IN port. However, older sequencing software may require you to designate what channels to record.
From the Source PC, play the game's music you wish to record. On the Recording PC, enable the sequencer's Record option! And you're off and running! When the song is complete, stop the recording and save it to disk as a Standard Type 1 MIDI file. Easy enough, right?
Well, there is a bit more to it than that. Recording the music was the easy part - now comes the work! See the next section.
The Wrong Instruments Play On The Recorded MIDI File
Let's say you've been playing a Sierra game and want to record some of the music -- we'll use King's Quest 5 (KQ5) for our example. You've got your Recording PC at the ready for when that particular song begins to play, and as soon as it does, you hit the "record" button on the Recording PC. After recording, you load the newly recorded MIDI file into your MIDI File Player and discover that some of (or all) the wrong instruments are playing. This can happen even if you've preloaded the correct KQ5 patch bank for MT-32 playback.
Two things may have happened:
A.) No program (instrument) controllers were recorded.
B.) No (or the wrong) patch bank was loaded into the MT-32.
Problem A.) Most of the time, when a new song begins playing in a Sierra game, the program (instrument) controllers for each track and channel are sent to the MT-32. Of course, new program controllers may be sent as the song progresses, as new instruments are introduced in the song. If you began your recording after the song had already began to play, the program controllers were already sent and your recording missed them. Always be sure to start your recording before the start of the song so you'll capture all the controller data as well as the actual music notes.
However, even if you do start your recording before the song begins playing, this isn't always going to provide the solution. You'll find that many of Sierra's older games may not always send a program change controller at the start of a song, but instead, relies on the program controller information used in a previous song for that channel. (This is particularly true of MT-32 songs.) For instance, say you want to record the music for the Town in KQ5, so you start your recording just before entering the town (to catch the start of the Town music.) Channel 2 may be the Strings track for this theme, but Channel 2 may have also played Strings in the theme played just before entering the Town. Therefore, no program change message was sent. The music program knew to continue using Strings on Channel 2, so it didn't bother sending the controller again. When you check your MIDI recording, you'll find there is no program controller on Channel 2! This is a common problem among older Sierra games.
You can get around this problem easily enough by starting your recording before you even load the game -- then quickly restore to the part you want to record. You'll then capture all MIDI controllers sent from the beginning of the game. Of course, you may have to do some editing to get rid of the unwanted musical data. (More on this, later.)
Problem B.) This applies only to MT-32 (LAPC-I, CM-32L) users only. If you've recorded a song and the incorrect instruments sound during playback, you may not have the correct patch bank (or any patch bank) loaded in your MT-32. You can find a slew of Sierra MT-32 SysEx patch banks at the Roland MT-32 Sound Module Resource Center, as well as the utilities to transmit them to your MT-32.
Some Notes Seem to "Hang" or are stuck.
This can happen for two reasons: The MIDI interfaces you're using are of poor quality, or the game's MIDI programming is less than perfect. More often than not, the problem is with the MIDI interfaces. For the best results, a Roland MPU-401 or 100% compatible is recommended for both the playback and recording PC. The "hung" notes are caused by the NOTE OFF MIDI message either not being properly sent from the game; not being sent through the OUTPUT MIDI interface; not being received through the INPUT MIDI interface; or not being received or interpreted properly by the recording software.
If you're already using good quality MIDI interfaces and the problem persists, the only remedy will be to manually edit the offending notes. MIDI editing is a complex issue and most of it is beyond the scope of this text. You can't simply delete the hung notes as this will alter the overall song.
The MIDI file format of choice is "Type 1 Standard MIDI". Proprietary formats are fine (Cakewalk ".WRK", Voyetra ".SNG" or ".ORC", etc.), but they're not readable by all MIDI file players.
ROLAND MT-32 MIDI FILES: It is always a good idea to create MIDI files that contain all the information required for proper playback. In the case of the MT-32, this will mean embedding the complete bank of custom instrument sounds into the MIDI file. These 'patch banks' should be embedded at the start of the file and can be quite large (relatively speaking.), Be sure to allow room at the start of the song file for them -- about 2 or 3 empty measures. Otherwise, the patch bank will wipe out some of the other MIDI and/or note data at the song's beginning.
GM/GS/XG: MIDI FILES: General MIDI, GS, and XG should contain their respective "Reset" SysEx messages at the start of a MIDI file. In addition, you may want to include a Reverb Mode message (Hall2 is the default of most sound cards) to enhance the sound a bit more. Some songs may require different Reverb modes and you may have to experiment a bit to find the proper sound.
Using MIDI Controllers With GM, GS, and XG MIDI Files
The Controller Measure --
Create an empty measure just before the first measure containing MIDI and note data. This measure will be used to set some preliminary MIDI controller information for the song on a channel by channel basis. It is always beneficial to include an "All Reset" controller (CC #121, set to zero) at the start of every active MIDI channel, so this will be the first controller placed in the Control Measure...CC121=0. (By the way, "CC" stands for Continuous Controller.)
Because most Sierra MIDI music has been composed with MT-32 support in mind, Sierra opted to use the MT-32's Pitch Bend Sensitivity default setting, which is 1 octave (12 semitones), in all of their General MIDI supported games. Most sound cards and modules (including the Roland Sound Canvas) default to a much lower pitch bend sensitivity setting ... 2 semitones. Therefore, you'll have to setup some controllers to instruct General MIDI, GS, and XG devices that the music requires a full octave pitch bend. (If the song uses no Bender controllers, this isn't necessary -- but most do.)
Fortunately, this is handled in the same manner with GM, GS, and XG. Three controllers are required for this change: two RPN (Registered Parameter Number) controllers, and a Data Entry controller. They must also be placed in a specific order to function properly. First, insert a RPN LSB CC #101 (set to zero), followed by the RPN MSB CC #100 (also set to zero.) Immediately following these two controllers, place the Data Entry CC #6 (or CC #38) set to a value of 12. This will set a GM, GS, and XG device to a Bender Sensitivity of one octave, the same as the MT-32.
Next, you may want to set the level of the Reverb and/or Chorus effects. In my experience, finding the suitable levels for these two parameters is totally device dependent. Both of the parameters can greatly enhance the output, providing much more realism and warmth. By default, these two controllers -- Reverb CC #91 and Chorus CC #93 -- are set at 64, which is midway on the MIDI scale of 1-128. I prefer a bit more reverb and normally adjust Sierra soundtracks to a Reverb setting of 90. On the other hand, I normally lower the Chorus effect level to around 20 or 30. This is a personal preference.
The last two controllers that should be included in the Controller Measure will assure that various manufacturer's MIDI devices will be reset to their defualt sound banks. These are "Bank Select" controllers, numbers 0 (zero) and 32. They should both be set to zero. These change often with the playback of GS and XG MIDI files, so it's a good idea to make certain these two Bank Select controllers are reset to zero before playback of a GM file. Though the "All Reset" (CC #121) may perform the same function on some sound devices, it doesn't on others.
Many may be satisfied with simply being able to record a MIDI song from a game and be able to play it back with some reason of semblance. Never mind that there's hung notes, no real ending, or the song begins with a lot of extra noise from the previous game's music. Others, however, would prefer a cut and dry MIDI file that plays as a single and complete song. To accomplish this, some editing is going to have to take place. For this discussion, only the basics will be covered -- since MIDI editing can be very complex at times and experience is probably the best teacher.
Always backup your original MIDI recordings before starting to work on them. If something goes awry, you can always revert to the original and start over. It's also a good idea to "save early, save often" during your editing sessions; you don't want to spend hours editing only to encounter a computer crash that causes you to lose all your hard work.
Whenever possible, it is highly recommended to insert an empty measure at the start of every track in a MIDI file. MIDI data at the very start of a song can sometimes be omitted during the 'saving' of the MIDI file; this will prevent that from occurring. Simply insert an empty measure to the start of the song, followed by your "Controller Measure" (as discussed above), before you do anything else.
Typically, there will be a Program controller (Instrument change) at the start of each channel or track in the song. This is usually accompanied by a Volume and Pan controller (CC #7 and CC #10, respectively.) There may also be other controllers, such as Mod Wheel, Bender, Sustain, etc., all clustered together around the Program controller. The Program controller is usually your clue to the exact start of the song. To create a clean beginning for the song, you'll want to remove any notes that play before the Program controller in each track of the song. If the same notes appears before, during, and after encountering a Program controller ( long, continuous notes), remove them as well. These are hung notes, where the 'note-off' controller wasn't recorded properly.
You'll notice that channel 10, the percussion channel, doesn't normally contain any Program controllers. If this is the case, you'll still be able to tell where the start of the percussion track should be by locating a Volume controller at around the same start position as you found Program controllers in the other, melodic tracks. (Some General MIDI, XG, GS, and even a few MT-32 MIDI files do contain program controllers in the percussion channel.)
Many older Sierra MT-32 song files contain Pan Pot (CC #10) controllers that have been set to dead center; a value of 64. (Some song files may not contain any Pan controllers at all!) To help create a fuller sound, experiment with changing these controllers to various spots in the stereo field. For instance, bass and percussion tracks are often best suited for output somewhere towards the middle of the stereo field, while instruments like guitars and flutes really stand out if heard in their own area of the stereo field - hard left or right. Experiment!
During the song, you may encounter a series of hung notes and redundant MIDI controller data. Unless you're very familiar with the effects of controllers and how they work, I would advise leaving them alone. If your goal is to "convert" one MIDI format to another (such as, converting a MT-32 song so that it's arrnaged for General MIDI), you'll probably have to remove or change some of these controllers, but that's beyond the scope of this text.
Sierra (and other) MIDI music often relies on more than one instrument (Program) to be played on the same channel. You will often encounter Program changes on one (or several) MIDI channels in differing measures of the song. The location of these Program controller changes is typically where you would encounter 'hung notes'. If you do encounter these hung notes, simply shorten the offending notes so that they do not extend past the point of a Program controller's location. If you don't stop these notes from playing at this point, the remainder of the song will probably end up sounding pretty strange; muddied, out-of-tune, sloppy.
Some key Continuous Controllers to be aware of that may need some adjustment during a song are Modulation and Sustain, CC #1 and CC #64 respectively. Sometimes these may be used in one part of a song and not another, but the 'zero' controller to shut these controllers off is either missing or burried under a lot of other controllers -- a cause of MIDI choke. ("MIDI choke" occurs when a continuous heavy stream of MIDI data pours through a MIDI interface, so much so, that not all of the data reaches its destination. This can lead to missing controllers, missing notes, and of course, the infamous "hung" notes.) You can usually "thin out" MIDI data without causing any changes in the MIDI file's output. Most sequencing programs include a tool specifically designed for this purpose; but be careful that you do not remove necessary controllers. It's a safe bet that if you happen upon a group of Volume controllers all set to the same value, you can remove all but one of these controllers to obtain the same effect.
It may sometimes be a bit tricky to create a perfect ending to a game's song that was designed to continuously "loop". There are different ways to accomplish this -- one of the nicest being a "fade". But then, some soundtracks will play as a complete song, making it very easy to put an ending on the MIDI file. And there's those songs where it's difficult to decide exactly where it should end so you might want to make your own ending!
To Fade A Song -- the last few measures of each channel in the MIDI file must contain a series of Volume controllers that gradually decrease in value. This can be as short (over one or two measures) or as long (over five or more measures) as you wish. Usually, the music style will lead you in the most appropriate direction for a fade. A good rule of thumb is, the longer the song file, the longer the fade. Most MIDI sequencers include a transform that will insert a series of controllers over a given amount of measures, which in this case, can be used to create decreasing Volume controller values.
Before you start the fade, locate the last Volume controller to the left of where you want to begin the fade. Take note of its value. Begin your fade using this value, decreasing to a Volume controller value of zero or one in the last measure.
To Place A Solid Ending In A Song -- let the song play through until the end of a looping sequence. Locate the last note of the loop for each track and remove any notes that play beyond it. Often, a new series of controllers and Program changes are located at the start of each loop sequence on every track, which makes it pretty easy to find. If not, this may take some trial and error, but it's usually not difficult to do.
There are many times when ending a song with a fade, or stopping it at the end of a loop sequence is not appropriate. In these cases, you will have to actually write or create your own ending. This can be a matter of simply changing the key of a few of the last played notes, but it can also be more involved than this. Experience will be your best friend in those situations, but don't be afaid to play around with it.
Finally, though certainly not required, it's a nice touch to "reset" everything at the end of a MIDI file, just in case you'll be playing another MIDI file afterward that is missing some basic MIDI controllers. The easiest way to do this is to place an "All Reset" controller (CC #121) at the very end of every track. Since the Roland MT-32 doesn't understand CC #121, you could substitute the "All Reset" controller with a Bender, Modulation, and Sustain controller, all set to "zero", at the end of each track.
If you're like me, you're going to want to dress up your MIDI files to give them a bit of a classy look. Nothing fancy, but if you'll be sharing them with others, you might want to provide some information about them that's contained within the MIDI file itself. Most sequencers allow you to include text by means of a built-in 'notepad'. Though, these notepads are usually not universally readable by all MIDI file players or sequencers. To be sure your text is readable on the majority of MIDI players, use the "track naming" feature common to all MIDI sequencers to include pertinent text information. This might include what device the MIDI file was designed for (i.e. MT-32, GM, XG, GS, Sound Blaster, etc.), the name of the song and its composer, where the song came from, and so forth.
The last thing I place in the MIDI file is the SysEx data (as described above.) If there are unused channels with empty or non-relevant measures of data in your MIDI file, remove them. They just take up space and serve no purpose. You'll find these often in Sierra MIDI files that you've recorded because sometimes other tracks geared for Ad Lib or Game Blaster may be included. Remember, Sierra MIDI music, MT-32 and General MIDI, use only channels 2-10; channels 1, 11-16 do not contain music tracks that are designed for the MT-32 or GM devices.
Digital to Analog Converters (DAC) have been utilized in many of Sierra's VGA games, though most often, not to the fullest potential. Most Sierra digital soundtracks are of lessor quality -- definately far below CD audio quality. However, the advantage of using DAC instead of MIDI is that almost everyone will hear the sound at the same level of quality, regardless of what type of "MIDI" sound card they have in their computer. There's a couple of ways to capture digital output and they're pretty straight forward. Because recording or extracting digital audio tracks is basically quite simple, I will only mention a couple of methods of accomplishing this.
One of the easiest ways to obtain digital soundtracks from a Sierra game is by simply extracting them using utilities such as GAP. Asatur V. Nazarian's Game Audio Player (available as a free download from http://www.music.ag.ru) makes extracting digital audio files from Sierra games a simple task, and also allows you to save these digital extracts as WAV files! Other extraction software exists, but none are as easy and straight forward to use as GAP.
Recording Digital Output:
An alternative to extracting digital audio is to record it! The concept is easy enough -- connect a soundcard's LINE OUT to the LINE IN of another soundcard. Or, bypass connections completely by using one, full-duplex capable soundcard. (Full duplex is the ability to play and record digital data simultaneously. Not all sound cards can do this.) Using the same soundcard on one computer may not always work with older games, so you may want to use two computers -- each containing a soundcard. Play the output from one computer, while recording it on the other.
Be watchful not to record at too high a volume level. This causes distortion in the recorded digital file. Ideally, a peak setting of -3 to 0 decibels is the perfect recording level. However, you may need to record at a slightly lesser level (-6 to -3) to avoid spikes in songs with a wide dynamic range.
There are a number of good digital recording programs available: Sound Forge, Cool Edit, Digital Orchestrator, etc. My favorite is Cool Edit Professional. These programs allow you to edit and enhance your recordings by applying filters, reverb, normalization, and more.