Most Famicom owners in Japan heard extra sound chips inside some cartridges: a sawtooth wave in Konami’s Akumajō Densetsu, FM synthesis in Lagrange Point. NES owners in Europe and America never did, because their console’s cartridge slot has no audio line. FamiTracker lets anyone write for all of it. Jonathan Liss, who signs his work “jsr”, built a free Windows tracker that emulates the console’s own sound chip channel by channel, adds six of those Famicom expansion chips, and saves the result as an NSF file, a small program that plays the music on a real NES.
It became the usual way to write new NES music. When Sabotage Studio made The Messenger (2018), a ninja game that starts out looking and sounding like an NES game, its composer Rainbowdragoneyes “wrote the music in FamiTracker”, Wireframe reported, “a piece of sequencing software specifically designed for producing music on the NES”.
Fast facts
- Author: Jonathan Liss (“jsr”).
- Runs on: Windows.
- Licence: free to download; source code under the GNU General Public License, version 2.
- Last official release: 0.4.6, 4 February 2015.
- Chips: the 2A03 inside every NES and Famicom, plus the Konami VRC6 and VRC7, Nintendo MMC5, Famicom Disk System and Namco 163. The Sunsoft 5B came in the unfinished 0.5.0 beta.
- Exports: NSF, a playable
.nesfile, a 32 KB program ROM, and data and assembly source for use with its player code. - Forks: 0CC-FamiTracker (2014) and Dn-FamiTracker (2020).
Writing in a tracker
A tracker shows music as a grid that scrolls down the screen: one column per channel, one row per step, each cell holding a note, an instrument, a volume and effect commands. FamiTracker’s website said its interface was “based on MadTracker”, a PC tracker, and “should be easy to use if you’ve been using trackers before”. Patterns are arranged into a song in a frame editor, much as an Amiga ProTracker module lists its patterns in order.
The NES has no sample memory for instruments, so apart from the sample channel an instrument is a set of sequences that change the sound every frame, 60 times a second on an American or Japanese machine and 50 on a European one. The 2A03 instrument has five: volume, arpeggio (fast note changes that sound like a chord), pitch, high-speed pitch and duty cycle. For duty cycle the manual lists the four pulse widths, 12.5%, 25%, 50% and 75%, the same four the APU entry describes, and the noise channel’s two modes.
The effect commands are based on those of Amiga modules, with one difference the manual points out: most of them stay switched on until a 00 turns them off. 047 plays a major chord as an arpeggio, 4xy adds vibrato, Bxx jumps to another frame, Cxx stops the song, Gxx delays a note, and Hxy and Ixy drive the pulse channels’ hardware pitch sweep.
The fifth channel plays delta-modulated samples. FamiTracker converts WAV files into that format, though its manual warns that the quality “will decrease significantly”, and it gives the console’s limit: 16 KB of samples in all. It also warns of a quirk of the hardware that the APU entry explains: a sample can leave the triangle and noise channels quieter than before.
The expansion chips
FamiTracker added the Famicom’s cartridge sound chips one or two at a time. The official version let a module use one expansion chip alongside the 2A03.
| Chip | Extra channels | Added |
|---|---|---|
| Konami VRC6 | 2 pulse, 1 sawtooth | 0.2.9, January 2009 |
| Nintendo MMC5 | 2 pulse | 0.3.0, May 2009 |
| Famicom Disk System | 1 wavetable with frequency modulation | 0.3.5, July 2010 |
| Konami VRC7 | 6 FM | 0.3.5, July 2010 |
| Namco 163 | 1 to 8 wavetable | 0.4.0, September 2012 |
| Sunsoft 5B | 3 square wave | 0.5.0 beta; 0CC-FamiTracker |
The help file describes each chip. The VRC7 holds a customised version of Yamaha’s YM2413 with 15 built-in instrument settings and room for only one of your own, so every FM channel that does not use a preset must share it; the file names Lagrange Point as the only game that used the chip. The Namco 163 shares one converter among up to eight channels, switching between them 120,000 times a second, so with all eight in use “there will be audible channel switching noise at 15 kHz”. A composer who wants cleaner sound uses fewer channels. The MMC5’s sample channel is not supported; FamiTracker uses its two pulse channels only.
A tune that uses these chips plays in full on a Famicom, or on an NES that has been modified to pass cartridge audio through, as the MMC5 entry explains.
From tracker to cartridge
An NSF file carries its own player program, so music exported from FamiTracker plays on real hardware and in NSF players. Homebrew games usually need something leaner. The NESdev wiki notes that NSFs exported from trackers “use a lot of ROM and RAM, CPU time, and can’t handle sound effects”. FamiTracker answered that in two ways. It can export the music as data or assembly source for its own driver, whose source is published, and from version 0.3.5 (2010) it accepted export plug-ins, the first written by a NESdev forum member called Gradualore. Its website linked to game-ready players built on its files: GGSound by Gradual Games and FamiTone2 by Shiru.
Forks and successors
The official site’s news stops in 2015, and 0.4.6 is its last release. Because the source was under the GPL, others carried the program on. HertzDevil’s 0CC-FamiTracker first appeared on 12 September 2014, named after the author’s favourite arpeggio command, 0CC. It added features that also work in exported NSFs, including export of NSFs that use several expansion chips at once, and it was built on jsr’s unreleased 0.5.0 beta 5, from which it took the Sunsoft 5B. Its last release was in 2018.
Dn-FamiTracker took over in 2020. The name means “Derivative n”, “the nth derivative of the original FamiTracker program”. It is built on j0CC-FamiTracker, another descendant of 0CC, and adds NSF 2.0 export and improved emulation of several chips, and is published under the GPL version 3 or later; its latest release came in May 2026. FamiStudio, a separate NES music editor with a piano-roll interface, can import FamiTracker projects.
Sources
- FamiTracker official website, home, downloads and news archive pages (web, secondary): “a free windows tracker for producing music for the NES/Famicom-systems”, “based on MadTracker”, source under the GPL, the version history and dates from 0.2.6 (October 2006) to 0.4.6 (4 February 2015), when each expansion chip was added, export plug-ins by Gradualore, links to GGSound and FamiTone2. http://famitracker.com/old_news.php
- FamiTracker 0.4.6 help file and source code, 2015: the author’s name, the GPL version 2, instruments and duty settings, the effect list, NSF, NES, PRG, BIN and ASM export, DPCM limits, the VRC6, VRC7, MMC5, FDS and Namco 163 pages, and the FAQ on choosing an expansion chip.
- Wireframe issue 31, January 2020, pp. 22–23: The Messenger’s music, written by Rainbowdragoneyes in FamiTracker.
- NESdev Wiki, “Audio drivers” and “Tools” (community reference, web, secondary): tracker-exported NSFs unsuited to games, FamiTracker and its forks, FamiStudio importing FamiTracker projects. https://www.nesdev.org/wiki/Audio_drivers
- HertzDevil, 0CC-FamiTracker README and change log (web, secondary): first release 12 September 2014, the name, GPL version 2, based on 0.5.0 beta 5, the Sunsoft 5B features ported from the beta, last release 20 May 2018. https://github.com/HertzDevil/0CC-FamiTracker
- Dn-FamiTracker README, repository description and licence (web, secondary): the name, its descent from 0CC-FamiTracker by way of j0CC-FamiTracker, its additions, the GPL version 3 or later, and copyright lines naming Jonathan Liss for FamiTracker. https://github.com/Dn-Programming-Core-Management/Dn-FamiTracker