HOW TO CREATE 8-BIT MUSIC

WITH

FamiTracker's Logo

FAMITRACKER

I - INTRODUCTION

  Are you an aspiring musician? Are you into chiptune music? Do you have a fondness for music from the good ol' days of computers and video games? Well, you're in luck!

FamiTracker's interface s

  With FamiTracker, all your dreams of beeps and boops can come true. FamiTracker is a free to use tool that allows you to program chiptunes fully within the limitations of the NES. You can even play your music through an emulator or on real, original hardware! The word "program" might sound scary, but don't worry: there's no coding involved. However, it is important to know a bit about the NES's sound hardware before jumping into FamiTracker.

II - NES SOUND HARDWARE

About the 2A03 Chip

  The NES's microprocessor, the Ricoh 2A03 (also known as the 2A07 in PAL territories), was also used as the system's APU (audio processing unit). In Japan, where the NES is called the Famicom, many companies included expansion chips in their game cartridges that allowed for extra audio channels to be added, many of which are supported in FamiTracker. However, due to hardware differences, the North American and European NES cannot play expansion audio. This tutorial will focus solely on the basic 2A03 audio.

  The 2A03 has five different single-voice audio channels that support different waveforms. It has two channels for pulse waves with four different duty cycles (this will be explained soon), one triangle channel, a noise channel, and a DPCM sampling channel. Each channel has a different sound and can be used for a variety of different purposes.

  Below, you can see how each different channel sounds. More in-depth information can be found on NESDev's page about the NES's APU.

The Ricoh 2A07 Chip

What Each Channel Sounds Like

PULSE

  The 2A03 has two pulse wave channels that are typically used for melody and harmony. They support four different duty cycles (the ratio of the pulse wave's "high" and "low" states): 12.5%, 25%, 50% (a "square" wave), and 75% (sounds the same as 25%).

TRIANGLE

  The single triangle channel produces a triangle waveform. This channel has no volume control - it is either playing at full volume or is silent. This channel is most often used for bass, but many also used it for percussive sounds by rapidly lowering the pitch.

NOISE

  The noise channel produces random noise, and is often used for things like percussion and explosion sound effects. The noise channel can output two types of noise, one which sounds like TV static and the other with a more "metallic" tone.

DPCM

  The DPCM (Differential Pulse Code Modulation) channel allows audio samples to be played. Developers often chose not to use this channel due to memory constraints, but those who did typically used it for percussion and voice samples. However, some developers used it for melodic sounds like basslines (an example of which can be heard below.) For the sake of simplicity, the DPCM channel will not be covered in this tutorial.

III - THE INTERFACE

  After you've successfuly downloaded FamiTracker, you should have a view similar to the one seen on the left. This is where you'll be sequencing your music. It may look a little intimidating, but many things are labeled and are self explanatory. For the ones that aren't, we'll go over them here.

  1. Frame Editor
      The frame editor is where frames are added and removed. A frame is a set of patterns for each channel. When the end of a pattern is reached, the song advances to the next frame.
  2. Instrument List
      This is where all of the instruments you create are listed, with the chip used, number, and name. In FamiTracker, there are no built in instruments, so you'll have to create your own (See "creating instruments").
  3. Pattern Editor
      This is where all of your music will be sequenced. A pattern is a defined series of notes in a certain number of rows, you can think of it as a single "bar" or "section" of the song.
FamiTracker interface with labels

 Before you can jump into sequencing music, you'll need to know how to make instruments. To create a new instrument, you can either click on the "Add Instrument" icon below the instrument list, or you can right click inside the instrument list and select "add". Name you can name your first instrument "Melody."

IV - THE PATTERN EDITOR

Pattern Editor Basics

  Now that you've created an instrument, you can begin using the pattern editor. By default, a single pattern has 64 rows, but you can change this by editing the "Rows" setting next to the frame editor. Each channel in the pattern editor has four columns. These each serve purposes that will be explained below.

  • Note & Octave
      The pitch you want to play. The notes used range from C0 (lowest) to B7 (highest).
  • Instrument
      The instrument you want to use for the note. The instrument number can be found in the instrument list, and, when adding notes, the instrument you currently have selected will be used.
  • Volume
      The volume of the note playing. For the pulse and noise channels, the volume ranges from 0 to F (15 in hexadecimal). Since there is no volume control for the triangle channel, anything above 0 means "playing."
  • Effect
      The effect and its parameters that you'd like to apply to the note. More about effects can be found below in part VII. Note that you can increase or decrease the number of effect columns to apply more than one effect to a note by clicking the arrows next to the channel's name.
The pattern editor with labels

Input Devices

  If you would like to use a MIDI device for sequencing your music, go to File > Configuration > MIDI and choose an input device. If you plan on using a keyboard, each lettered key corresponds to a note. It's laid out just like a piano, with the Q and Z rows being white keys and the Numbers and A row being the black keys. Below, you can see what each key's function is and which note it corresponds to. NOTE: the "*" key increases the octave and the "/" key lowers it.

A standard keyboard with the keys labeled with their corresponding function in FamiTracker

Your First Melody

  To start editing, hit the spacebar to enter edit mode (the row you have highlighted will go from blue to red). To start creating notes, simply put your pattern cursor over the note column and row in whichever channel you want to edit. By default, the top row of keys falls on octave 4 and the bottom on octave 3. If you want to increase or decrease the octave, use the "/" or "*" keys respectively. If you're using a keyboard, try and familiarize yourself with the keyboard layout above. Every row in the pattern editor that is highlighted yellow is half of a beat, according to 4/4 timing. If you want some practice, you can try copying the pattern on the right. Once you're finished, hit the play button to hear the song you've made. You may recognize the tune if you've copied the pattern on the right (click on the image to make it larger.)

Adding a Bassline

  Congratulations! You've made your first song in FamiTracker. However, it may sound a little "empty" right now, since youve only edited one channel so far. Let's add a bassline to our song using the triangle channel. We'll want to create a separate instrument for this, so go to the instrument list and add a new instrument.

Adding a Counterpoint

  Now that our song sounds a bit less empty, we can add a counterpoint to make the melody less lonely. Make another new instrument, and copy the pulse 2 channel on the right (or try and make your own!) We'll set the volume to "9", as seen in the volume column, so that its quieter than the main melody.

  Note: The solid lines are note cuts, which immediately silence whichever note was playing. They can be added using the "1" key.

Adding Percussion

  Our song now has a bassline and a counterpoint, but we should also add some drums to give it a nice rhythm. Create a new instrument and try copying the example on the left (or make your own rhythm!)

  Note: The keyboard layout for noise is slightly different, it goes from hexadecimal 0 to F instead of C to B like a piano. On the top row, the "Q" key is a noise note of "0" and the "0" key is for "F."

Adding Another Frame

  Our song now has a melody, bassline, counterpoint, and percussion, but it's a bit short and repetitive. To add another section to our song, we need to create a new frame. In the frame editor on the top left, right click and select "Insert Frame." A new frame will be added after the first one, and the song will advance to this frame after the first one is finished.

FamiTracker frame editor

  After you've added a new frame, notice that the pattern numbers in each channel have incremented. If you would like to have the same patterns as before play in your new frame, double click the channel you want to edit and type the pattern number you want for that frame.

  Our song is finally starting to come together! If you think its a bit too slow (or fast), you can change the speed or tempo setting next to the frame editor. let's start using the instrument editor to make our instruments sound unique.

V - THE INSTRUMENT EDITOR

Basic Instrument Editing

  To open the instrument editor, you can either double-click the instrument you'd like to edit or right click it and select "edit." You should see a window open similar to the one seen on the right. This is where you will define the parameters for all of your instruments.

  Each parameter/effect changes the way an instrument sounds when a note is played. The effects are defined by "sequences," which are a series of numbers representing things like how the volume, tone, pitch, and duty cycle changes each "step." In the example shown on the right, the volume of the instrument decreases by one every frame. You can increase or decrease the size of a frame by hitting the "+" or "-" at the bottom of the sequence editor. To edit a sequence, either use the graphical editor by clicking and dragging the bars to where you want them or by manually entering each number in the text box below, separated by spaces.

  Below, you can find a description of the purpose of each effect.

The FamiTracker instrument editor

Puropse of Each Effect

VOLUME

  Affects the volume of the instrument being played. As stated before in the pattern editor, the volume for each channel ranges from 0 to 15 (except for the triangle channel.)

Volume editor

ARPEGGIO

  Changes the key of the note being played by whichever number is specified. Rapidly changing notes played in a loop cahn be used to simulate chords.

Arpeggio editor

PITCH

  The pitch bend to be applied to an instrument, from a range of -127 to 126. Hi-pitch multiplies the value by 16.

Pitch editor

DUTY/NOISE

  Changes the duty cycle/noise type of the instrument being played (see part II - Sound Hardware). The numbers at the bottom represent each duty cycle percentage- 0=12.5%, 1=25%, 2=50%, and 3=75%. (A duty cycle of 25% or 75% is noise type 2.)

Duty cycle editor

  Try and familiarize yourself with each of the instrument editor effects and edit each instrument in a way that sounds good. Make sure to apply the correct sequences to each effect in each instrument. You can change the sequence used by editing the "Sequence #" number at the bottom of the "Instrument Settings" area. Remember that, in order for an effect to be applied to an instrument, the checkbox next to the effect name must be checked.

VI - EFFECTS

What Are Effects?

  If you recall from the Pattern Editor section, the fourth column in each channel is for "effects." These effects are different from the effects discussed in the instrument editor section, but they can be used for many of the same purposes. An effect can be used to apply various auditory effects onto a note, such as vibrato, arpeggio, volume slides, delays, etc. The first hexadecimal digit of an effect is the type of effect used, and the following digits represent its parameters. The parameters define things like the speed of the effect, the pitch, etc. For all effects, a parameter of 00 will disable the effect. Below, you can see a list of every effect available in FamiTracker.

  • 0XY - Arpeggio, only three notes. x = second note, y = third note
  • 1XX - Pitch slide up, xx = speed (00 to disable)
  • 2XX - Pitch slide down, xx = speed (00 to disable)
  • 3XX - Automatic portamento (sliding from one note to another), slide to note xx = speed (00 to disable)
  • 4XY - Vibrato effect (pitch bends up and down), x = speed (0 to disable), y = depth (how far the pitch will bend)
  • 7XY - Tremolo effect (volume bends up and down), x = speed (0 to disable), y = depth (how far the volume will bend)
  • AXY - Volume slide, A0x = down, Ax0 = up
  • BXX - Jump to frame xx
  • CXY - Halt/end song (xx has no effect)
  • DXY - Skip to next frame, start at row xx
  • EXY - Volume setting (this effect is obsolete, use the volume column)
  • FXY - Speed/tempo, sets speed when xx = 00-19, and tempo when xx=20-FF
  • GXY - Note delay, xx = delay length
  • HXY - Hardware sweep up (only square) x = period 0 - 7, y = shift 1 - 7
  • IXY - Hardware sweep down (same as HXY)
  • PXY - Fine pitch setting xx = offset (80 is default)
  • QXY - Note slide up, x = speed, y = number of notes
  • RXY - Note slide down, x = speed, y = number of notes
  • SXY - Delayed note cut, xx = delay length
  • VXY - Set duty cycle, xx = setting (00 = 12.5%, 01 = 25%, 02 = 50%, 03 = 75%)
  • XXY - DPCM retrigger, xx = length between triggers
  • YXY - DPCM sample offset, xx = offset length * 64 bytes
  • ZXY - DPCM delta counter, affects volume of noise and triangle, xx = 00 - 80

VII - EXPORTING YOUR SONG

  Now that you've finished your song, you can prepare to save it or export it to a format of your choice.

File Exporting Types

  • .FTM
      If you want to save your FamiTracker song and edit it later, save it as a .FTM (FamiTracker Module) file and you can open it back up and resume editing.
  • .TXT
      In addition to .FTM, FamiTracker data can be exported and imported as a plain text file.
  • .NSF
      The NES Sound Format, or NSF, is a format that many emulators and flash cartridges support. NSF files typically contain data directly exported from NES ROMs. These can typically be played in any emulator, and support more than one track, but there are dedicated NSF players available with a wide variety of features. To create an NSF, go to File > Create NSF.
  • .NES
      FamiTracker allows you to export your music as a ROM image that can be played in an emulator or through an NES (only the 2A03 chip is supported). To do this, go to File > Create NSF and choose "NES - iNES ROM image" as your type of file.
  • .WAV
      To export your song as a raw audio file, go to File > Create WAV and choose to either play the song a set number of times or play it for a specified length.
FamiTracker file export window