For symphonic/orchestral stuff, if you’re talking about creating an audio file for people to listen to as opposed to creating a sheet music score to be played, pretty much anything that supports sample-based playback will work. Depending on how realistic you want it, you may need to invest in some more advanced plugins, but even without paying there are some decent sound banks available. For reference, if you think the quality of the music in Ocarina of Time and Star Fox 64 is good enough, you’ll be fine without having to pay.
MIDI sequences can be easily played back using soundfonts, and many of the programs mentioned in this thread support them either directly or by allowing you to extract the samples contained within. There are a ton of free soundfonts available at hammersound.com. and sf2midi.com (although the latter does require registration). Also, for orchestral stuff, I’ve heard Squidfont is pretty decent, and it can be downloaded from here.
Modular formats like .IT, .XM, and .S3M, which can be created with OpenMPT, allow you to import samples from soundfonts as well. However, OpenMPT doesn’t support velocity layers in soundfonts, and instead of triggering them by playing a note at a different velocity, you would have to create a separate instrument and call that should the need arise.
That might be a bit confusing for someone who’s new to all this, so hopefully the following will help clear up some of the terminology:
Velocity layers trigger different samples of an instrument being played harder or softer on the same note to help it sound more realistic. For example, if you lightly pluck a violin string, it’ll make a soft sound, but if you pluck it hard enough the string will snap against the bridge resulting in a loud “crack” when it plays, in addition to sounding at a louder volume.
An instrument in modular formats (specifically .XM and .IT since earlier formats don’t support them) is a collection of samples mapped across a range of notes to increase realism. For example, a low note and a high note on a piano sound very different, and if you simply increased the pitch of a low piano note, it would sound very unnatural. You can instead use an instrument to map multiple piano samples from low pitch to high pitch and simply play using that instrument instead of having to manually select which sample needs to be played for each note. If you find a soundfont that mentions “chromatic sampling,” that means they recorded samples for every single note the instrument can play. (Instrument mapping also be used for drum kits or percussion, where different types of drums are mapped to different keys so you can play using one instrument mapping instead of having to switch back and forth between samples.)
A sample is simply a recording of an instrument or sound. For composition, it is typically a recording of a single note, but samples may also be drum loops, vocal clips, sound effects, or played phrases such as lead melodies or chord progressions.
In modular music formats, there are multiple sound channels, each capable of triggering one note at a time. When a note is triggered, you specify the pitch and the instrument,
and can optionally specify a simple effect (decimal values 00 to 64) and/or an advanced effect (hexadecimal values 00 to FF) such as note volume, panning, pitch bending, or vibrato.
The music used in Ocarina of Time and Star Fox 64 tends to use a single sample for each type of instrument, so if those sound good enough for what you want to do, don’t worry about velocity layers or instrument mapping. If you’re looking for something that sounds a bit more realistic, you’ll definitely want to look for soundfonts, plugins, or libraries with multiple velocity layers and extensive sampling across the instrument’s playable range.
Hopefully I’ve explained enough to make this understandable, but if anything needs clarifying, feel free to ask.