I have had a couple of people ask me how I did what I did with the programs I mentioned, so I've written a guide. It's loosely a tutorial, but you might have to use some common sense to fill in the blanks.
I use OpenMPT (
http://www.modplug.com/), a.k.a. Modplug Tracker, as my main musical environment, along with the Magical 8bit Plug VST (
http://www.ymck.net/) to generate the sounds. This certainly isn't the only way to make Nintendo-y tunes and it's probably not the best way either. For me, it was, because I was already well-acquainted with (and fond of) OpenMPT, but you might be better off with:
- using the Magical 8bit Plug in the VST host of your choice;
- using FamiTracker (
http://famitracker.shoodot.net/), which has a poorer general interface (in my opinion) but is tailored for this purpose and (big plus) can export actual NES/NSF files;
- using MCK/MML (
http://www.nullsleep.com/treasure/mck_guide/), which gives you total power and generates NSF files, but is hardly user-friendly (syntax example: "B L @@0 @v1 e4.c8<b4>d+4 e2e2 f4.f8f4f4");
- getting a Midines (
http://www.wayfar.net/) (...and giving it to me);
- getting a Game Boy and using LSDJ (
http://www.littlesounddj.com/), Nanoloop (
http://www.nanoloop.de/), or some other program;
- using one of these programs in a Game Boy emulator; or
- using something else.
Still reading? Alright. This is how I did it.
Download the aforementioned programs from the aforelinked websites. Extract OpenMPT to wherever you want it. Extract the Magical 8bit Plug to wherever you want it. Run OpenMPT. Click the new document icon on the toolbar to create a new module. A new window will come up, split into five different tabs.
In the Plugins section of the General tab, click the Select button next to the FX list. The plugins window will appear. Click New Plugin, go to the place where you saved the plugin DLL, and open it. The 'magical8bitPlug3' plugin will be added to the VST Instruments list. Select it in there and click 'Put in FX01'.
Now, go to the Instruments tab. Click the New instrument icon. The various instrument options will become activated (most of these aren't relevant to VSTs). In the Plugin / Midi section, select FX1 from the list (which initially says 'No plugin'). The instrument is now associated with that plugin.
Click the Editor button to start customising the plugin's parameters. Select the parameter you want to edit from the list and then use the slider on the right to adjust it. Its present value in the plugin is displayed above the slider. Below the slider is a textbox which you use for fine-tuning.
The Magical 8bit Plug has 9 different parameters to modify:
- OscKind determines the base sound the plugin produces--square, triangle, noise, 25% pulse, and 12.5% pulse.
- If you're familiar with the ADSR envelope, Volumn, Attack, Decay, SusLevel, and Release should also make sense to you. (Except for Volumn, which is spelt wrong. I hadn't noticed that before.) I you're not familiar with this concept: they determine how the volume of the sound changes over time. The volume will take Attack seconds to go up to the max (set by the Volumn parameter), and then it will take Decay seconds to go down to the SusLevel (so if the SusLevel is at its max it won't decay at all). If the note is released, the Release parameter determines how long the volume will take to drop down to 0.
- The BendRange determines how far the notes can be bent--in the tracker, you can use the Portamento functions. I'll explain this further later on.
The SweepSwitch can be set to Off, Negative, or Positive. If not off, the pitch will automatically slide up or down. How rapidly this occurs is determined by the SweepTime parameter.
Now, you're going to want to make some noise. The keys are customisable, but by default:
Q = C-4
W = C#4
...
] = B-4
A = C-5
...
Z = C-6
...
You can also use the number keys to set the octave for a single note.
Pressing these keys in the plugin editor window is good for testing, but they really do their magic in the Patterns tab. First, though, if you've got a nice-sounding plugin configuration, you can save it for use in other projects (all VST settings are saved in the module, so you don't need to do this). In the General tab, go the Plugins section and select the plugin that you want to save (if you're following this tutorial for the first time, FX1 is the only one you've got). Click Save in the Factory preset section to save the .fxp which you can then load later on.
Also in the General tab, you can set some things, like the name of the song and the initial tempo.
To start programming the song, go to the Patterns tab. You'll see, among other things, a row of cells with dashes in them. The first cell, however, has a 0 in it. That's where you are, the first pattern. Below that you'll see many columns. And many rows. You can click the titles of each channel column to toggle the muting for it, or right-click to get access to extra options. At the left of these is the number of the pattern. You can click on this to open a window where you can change the number of rows in the pattern.
Below all these things are the rows where you program the notes of your song. Each channel is subdivided into four sections: note, instrument, volume, and effect. The notes, inputted through the keyboard as mentioned earlier, range from C-0 to B-9. The instrument is the number of the instrument that will play that note. The volume field is primarily used for configuring the volume, although it can be used for a number of other things. The effects field covers all sorts of other effects, many of which won't work with our VST instrument.
So, you click in the note section of the row where you want to place a note, and you press the key to input it. You can do this for all the notes you want. You can drag to select notes, copy them, paste them, whatever. Right-clicking on the row gives you a bunch of options with corresponding keyboard shortcuts--these include the transpose functions for shifting the note up or down a semitone or an octave.
In the volume field, you can either double-click to display a window which you can use to input the parameters, or you can just click on it and input the code (e.g. 'v') and the number manually. The same goes for effects, but I will go into more specific detail about one thing, to do with note bending. The portamento effects Fxx and Exx, which can be either placed on the same row as a note or (more commonly) on their own, work with Magical 8bit Plug. They will bend to the max/min of the plugin's BendRange at 2A in hex (42 in decimal). That is, the acceptable values for the effect range from 00 to 2A (oh, yes, you should probably get familiar with hexadecimal if you aren't already). To use these effects effectively, you'll need to go back to the configuration for the plugin. If you set BendRange to 10.5 in the plugin (875 / 1000 with the slider), thanks to the magic of mathematics, +/- 4 for the portamento effect value in OpenMPT will equal +/- 1 semitone in the plugin. Unfortunately, this will not allow bending up a whole octave. If that's required, you can set the BendRange to 12 (the max the plugin allows), where 1 semitone in the plugin = 3.5 in the tracker. That means you can only cleanly bend in 2 semitone increments (6 in the tracker).
To play your pattern, you use the row of play icons that face down. To play the whole song, use the ones above that face right. Speaking of the whole song, to make a whole song you're probably going to need more patterns. In the row of patterns, right click on a cell to see the options and keyboard shortcuts you've got.
The original NES has 1 triangle wave channel, 1 noise channel, and 2 pulse wave channels (the square wave counts, being the same as a 50% pulse wave). Keep this in mind when going for authentic compositions. Each sound you want to make needs to have its own instrument (this isn't technically true but macros aren't something I feel like explaining at the moment). Each instrument needs to have a unique corresponding plugin--you're still going to be using the Magical 8bit Plug, but you need to insert a new instance of it for each instrument you're using. That is, just as FX1 (magical8bitPlug3) is linked to instrument 1 (by way of the Plugin / MIDI instrument setting), FX2 (magical8bitPlug3) will be linked to instrument 2, and so on.
The noise channel is generally used for drum sounds like cymbals and snares--experiment with different octaves and ADSR settings (e.g. rapid decay). For a bass drum you can use the triangle wave or pulse wave channels with negative pitch sweep. The different pulse wave types have different timbres--12.5% pulse sounds coarse, 25% pulse sounds thick, and 50% pulse (square) sounds smooth.
And that's it for my notes. Time for me to get back to trying to learn MML.