This is a guide to making 8-bit/chiptune music. It covers basics on how to get the right sound, some common
game consoles and computer systems associated with 8-bit music, waveforms used, as well as effects that can
be used to modify the sound, and some other useful things.
If you need some inspiration to get started I suggest listening to my playlist "8-bit, chiptune, bitpop" on spotify, embedded here. It has my own chiptune music, as well as a wide variety of different artists and styles within the genre. Hopefully you can find something you like :)
I will make this a mostly technical guide. And I will be talking mostly about the Nintendo Entertainment System (Famicom in Japan) as I base most of my own music on this sound chip and its properties.
Why is it called "8-bit music" and "chip music"? Well.. In old video game consoles, the processors used words which were 8 bits in length, so they were reffered to as "8-bit consoles", and the music for the games to them thus came to be known as "8-bit music". The processors in these consoles were custom built for their purpose, as that was cheaper at the time than the general purpose processors used in todays consoles. They also had a chip actually generating the sounds, rather than a sound card that simply processes sound-files, as memory was limited and gnerating sounds take up less memory than processing stored sound files, hence the term "chip music".
A basic element of "true" chiptune music is simple waveforms, such as Pulse, Sine,
Triangle, Sawtooth and Noise.
If you want to make music based on a specific chip, you should know the limitations of that chip, and what waveforms can be generated by it, or you won't get a genuine sound.
To achieve the limitations without having to do a bunch of tedious work, it might be good to use a tracker or other software specifically designed to emulate the chip you want your music to sound like.
The most prominent example I can think of for that is Famitracker, that has the exact same sound types and channels supported by a Famicom/NES sound chip (and all of it's expansion chips). So if you want to make chip music and be sure to succeed, use Famitracker. Even if what you produce won't sound good, it will at least be playable on an actual NES, and by definition, be chip music.
As Famitracker has excellent documentation and very well written tutorials (found through a search engine near you) I won't be going into detail on how the program works. Just remember that you have to create a new instrument before you will get any sound.
If you don't want to use software made to emulate a specific chip, but still make your work sound like chip music, keep reading and you'll find the specifications and capabilities of the most common systems that are associated with 8-bit music.
The NES sound chip is called 2A03 (NTSC 60Hz) or 2A07 (PAL 50Hz) and it
has five mono-channels. Two of them feature pulse wave channels with a
variable duty cycle of 12.5, 25, 50 and 75%. The volume for these channels can
be set to 16 different levels. Hardware pitch bending is possible and the
frequencies used range from 54Hz to 28 kHz.
There is a fixed volume (on or off) triangle wave channel with pitch bending. Frequencies on that channel range 27 Hz to 56 kHz.
There is also a white noise channel with 16 volume levels and 16 pre-set noise frequencies. The frequencies that can be produced ranges from 29.3Hz to 447 KHz, and aside from the pre-sets, frequency sweep is also possible. Additionally there is a differential pulse-code modulation-channel capable of playing any sound.
If you want to play samples that sound like those on the NES though, get a program that can convert your wave-files to 1-bit, as this is most true to what imported samples actually sounds like on a NES.
The SID-chip of the Commodore 64 is perhaps what first comes to mind for many people when we talk about "chip music", and rightfully so, as it was thanks to the polyphony of the SID-chip that it was possible to make advanced music on a computer for the first time, and the demoscene was started.
The SID-chip has three channels which supports pulse (with full control over the duty cycle), sawtooth, triangle and noise waveforms, with frequencies ranging from 16-4000Hz. Each channel also has a ring modulator which makes it possible to essentially mix different waveforms, which creates the characteristic "SID-sound", as well as an attack/decay/sustain/release volume control. There's also a multi-mode filter with low-pass, high-pass and band-pass. It is possible to combine the different filter effects to create additional effects.
The sound chip of the Amiga 500, the most popular machine for its time when it came to producing MOD-music, is called Paula and has 4 channels with 8-bit PCM and a frequency of a maximum of 28 Khz. The volume and sample rate can be modified individually for each channel. Two channels are mixed for output to the right channel, and two are mixed to the left channel. The MOD-files are built up of sample sounds and as such, unlike the NES-soundchip, the soundchip of the Amiga 500 cannot generate sound on its own. Although the sound is based on samples, and in theory you can stuff in whatever you like as long as the memory limitation will allow it, it is more common to use a looped sample that consists of one cycle of the wave-forms described below, because conserving memory was very much a concern "back in the day". So doing it that way will give you the old-school sound you're looking for.
There is no way to make "true" chip music on the Amiga 500, as, like I said, the soundchip itself does not generate any sound on it's own, but a simple to use, yet flexible program I can recommend if you want to make MOD-music is Milkytracker.
Now you might understand why it is easier to use software dedicated to the task rather than trying to simulate the sound.
The Nintendo Game Boy is quite similar to the NES in that is has 2 Pulse Channels and a noise channel, but there are also differences. First off, only one of the pulse channels has frequency sweep, and there is also not a Triangle channel. Instead, there is a "freeform" wave channel that can play any sound, based on 32 4-bit programmable samples. Additionally, the channels are in Stereo so you can get an additional dimention to your sound here. The "master level" Of the left and right channel outputs can also be individually controlled.The frequenzy range for the pulse and freeform wave channels is 64Hz-131072Hz. And 2Hz-1048576Hz for the noise channel.
At low frequencies this waveform is commonly used as bass in NES compositions. At high frequencies it produces a "flute-like" sound. It can also be used as tom-tom drums by sliding from high to low frequencies. Keep in mind that this channel has a fixed volume on a NES, meaning it is either on or off.
This is a very interesting waveform as it is possible to vary the duty cycle of the sound wave in order to produce different sounds. The closer to 50% (half the time on, half the time off) you go, the more hollow it will sound. If you set a very high or very low duty cycle you will get more of a creaking sound. This waveform is mostly used for the melodious part of the song as the two channels on the NES can be used to create neat chorus, but it is also in my opinon well suited as bass, depending on what sound environment you want to achieve.
Is the waveform that most resembles that of an acoustic guitar. The sound is even and soft. It is best used at higher frequencies where it sounds a bit like whistling. At low frequencies it can be hard to hear the difference between notes.
This waveform does not exist natively on a NES unless manually shaped on the DCPM-channel.
Sounds very "sharp" and can be used both for melodies and bass. Its clear, crisp sound makes it especially suitable for arpeggios. This waveform can not be used natively on the NES (Though it is commonly used on it's sibling the Famicom Disk System, which does support it), and a lot of Amiga music composers use this wave form frequently.
This "waveform" is commonly used for drums, as, if shaped correctly, noise can sound quite similar to drums. High frequencies are best suited for hi-hat/ride, mid frequencies for snare, and low frequencies for bass drum or kick.
It can be difficult before you learn how to shape the noise correctly. I would suggest using a quick linear fadeout as the base and then tweak it until you're happy with how it sounds.
When working with trackers, you are not going to be able to make very fun music if you don't know your way around the effects you can use to modify the sound. I will add more with time, and focus especially on the ones that I think are significant to chiptune music.
If you want to comply to the limitations of a specific sound chip, you are usually limited to just a few sound channels, as I was describing earlier. A problem you might be facing is that making full chords would use up a lot of channels and also prevent you from playing any other sounds on those channels as the chord is playing, so doing it in the intuitive way isn't the optimal way to do it. To get around this "limitation" there is the arpeggio effect. What it does is it rapidly loops through several different notes after one another on the same channel, thus achieving a "chord". This is known as an arpeggio in musical terminology. In most trackers, it is represented by effect 0, and supports 2 notes after the base note. To make a chord, you simply set the number of semitones after the note you pressed. So, if you want to make a regular major chord, you will put "047" in the effect column after the note. Be aware that the effect continues onto subsequent notes until you set a different effect or no effect. This is standard behavior for most trackers. The result you get is very characteristic to 8-bit music, as the effect is very commonly used.
The slide effect slides the pitch of the note up or down at a set speed. The effect is probably more used in a sound effects context, but can also be useful when making music. For example, adding a slide effect at the end of notes can make them sound more lively and interesting. You can also use slide to create a transition effect between notes, though I personally prefer the automatic portamento effect for that. Effect number varies by tracker. In Famitracker and Milkytracker it's 1xx for slide up and 2xx for slide down, where xx is the speed you want the note to slide at. If you stop the effect by setting 00 for speed, the pitch will remain at whatever it was at when the effect is activated.
To add vibrato to a note (pitch up and down), effect 4 is used in most trackers, including Famitracker and Milkytracker. The first number sets the speed, and the second sets the depth of the vibrato. For example. "425" results in a vibrato with a speed of 2 and a depth of 5. The effect is persistant until it is stopped. To stop the effect, set the speed to 0. Vibrato can be very useful if you want to add more vibrance and variation to an instrument. If used with finesse, some really cool-sounding stuff can be made!
The tremolo effect is basically "vibrato for volume", meaning that rather than the pitch, it is the volume that is affected, but in the same manner. The effect number in Famitracker and Milkytracker is 7, and the first number sets speed, the second number sets depth. For example. "425" results in tremolo with a speed of 2 and a depth of 5. And the fact it can be a very usedul effect to add more vibrance to your notes also holds true for tremolo.
As a last tip: A lot of the beauty of chip music lies in making rich compositions from seemingly scarce resources. Try to get the most out of every channel!