Sound hardware

From wiki
Jump to: navigation, search

This section explains the sound hardware in NES/Famicom.

Internal 2A03/2A07 channels

The 2A03 chip in a North-American NTSC NES. Pictured here is the common "G" revision.
The 2A03 chip in an original production Famicom. This is the first version of the chip, and is the only version not to support periodic noise.

The Ricoh RP2A03 (or 2A03 for short) sound processor comes as standard with all NES models from the NTSC regions (PAL NES machines came with the 2A07, which is the exact same chip with the sole exception of the clock rate, which runs at 50Hz instead of 60Hz). It features five channels: two square waves, one triangle wave, one noise generator and one digital sample (DPCM) channel. While the 2A03 is capable of raw 7-bit PCM playback, this feature is not supported in FamiTracker.

  • Pulse 1 & 2
    Produce pulse waves with four duty settings (12.5%, 25%, 50% and 75%). Hardware sweep control is also available, and can be accessed via the Hxy and Ixy effects.
    Note: 2A03 has a bug that resets the duty phase when switching between certain frequencies. This can be heard as a pop and might be noticable when using vibrato or pitch slides across those frequencies. There are eight groups of frequency registers where sliding the frequency register from one group to another resets the duty phase: 800-700, 6FF-600, 5FF-500, 4FF-400, 3FF-300, 2FF-200, 1FF-100, FF-8. Troublesome notes that lie near a group boundary and may cause glitches with vibrato are A-3, A-2, D-2, A-1, F-1, D-1, and B-0 on NTSC, or A#3, A#2, D#2, A#1, F#1, D#1, and C-0 on PAL.
  • Triangle
    Triangle-shaped waveform, used mostly for bass and drums. There is no volume control for this channel, however; it's either on at full blast, or completely silent. Due to how the hardware is implemented, the output level of the DPCM channel will affect the volume output of the triangle wave.
  • Noise
    Noise generator. Can produce 32767-bit (normal) and 93-bit (looped) sequences, selectable from the instrument's duty setting (V00 = normal, V01 = looped).
  • Delta Pulse-code Modulation (DPCM)
    Plays low-quality DMC samples, with the option to loop them. Most of the effects (like arpeggio & pitch slides) will not work on this channel, and several effects are exclusive to this channel. The NES stores DMC samples in 16 KB banks. Older versions of FamiTracker only supported a single bank of DMC samples, but as of version 0.3.8 of the program, DPCM bankswitching is implemented, effectively pushing this limit to 256 KB. The 2A03 also supports PCM playback, but it is not supported in FamiTracker due to its impracticality.

Audio used in

  • Most, if not all, NES and Famicom games. DPCM as music is used mostly in later games.

Expansion sound

The Famicom has the ability to mix sound from expansion chips found in some carts. Currently, Famitracker supports five chip expansions. Expansion sound is enabled from the Module Properties window.

Konami VRC6

The Konami Virtual ROM Controller 6 (or VRC6) features two pulse wave channels with eight pulse width settings, as well as one sawtooth wave channel.

  • Pulse 1 & 2
    Produce pulse waves similar to the internal hardware's, except it puts eight duty settings ranging from 1/16th (6.25%) to 8/16th (50.00%) at the user's disposal. Hardware sweep (Hxy and Ixy) is unavailable.
  • Sawtooth
    Sawtooth wave generator. This channel's volume resolution is divided by two in FamiTracker, so to get the real volume value, multiply the value in FT by two. Although the sawtooth wave does not actually have a "duty cycle" function, it still takes advantage of that instrument setting (as well as the Vxx effect) to add 32 to the total volume value. This grants the sawtooth channel a maximum volume of 63, however, the actual maximum volume for that channel is 42 (or vol:5, duty:1); for any value greater than that, you get no volume increase, but the sawtooth wave gets distorted due to the sawtooth accumulator overflowing. See Effect Vxx for more details.

Audio used in

  • Akumajō Densetsu (悪魔城伝説) [Japanese Castlevania 3: Dracula's Curse]
  • Mōryō Senki MADARA (魍魎戦記MADARA)
  • Esper Dream II

Konami VRC7

The Konami Virtual ROM Controller 7 (or VRC7) is a YM2413 derivative, though several differences exist between the two. The VRC7 offers six channels of 2-operator phase modulation (the YM2413 has nine). In addition, the "percussion mode" found in the Yamaha chip was dismissed in the Konami version. The VRC7 features 15 built-in patches that cannot be modified by the user (most of which differ from the YM2413's). The user may define up to 64 user-defined instruments, with the limitation that only one at any given time may be used.

  • Channel 1 ~ 6
    Uses two operators (one Modulator and one Carrier) to produce frequency modulation (FM) sound.

Audio used in

  • Lagrange Point

Famicom Disk System sound

The Ricoh RP2C33, used by the Famicom Disk System, adds one extra sound channel with primitive wavetable support.

  • FDS
    Produces waves using 64 × 64 custom wavetables with 33 volume settings. Although the latest FamiTracker version supports volume envelopes that go all the way up to 32, the volume column in the pattern editor will max out at 0x0F.

Audio used in

  • Most but not all Famicom Disk System games.

Nintendo MMC5

The Multi Memory Controller 5 (or MMC5) chip adds two square wave channels and an 8-bit PCM DAC. At this time PCM is not supported within FamiTracker.

  • Channel 1 & 2 (Pulse)
    Produces pulse waves effectively identical to the internal channels', except that hardware sweep (Hxy and Ixy) is not available.
  • Channel 3 (PCM)
    Not available in FamiTracker. Is capable of being written to with 8-bit PCM at the cost of CPU cycles. Unlike the 2A03/2A07 7-bit PCM DAC, it can also be told to read data from cartridge ROM from specified addresses and output as 8-bit PCM, also at the cost of CPU cycles.

Audio used in

  • Just Breed
  • Shin 4-Nin Uchi Mahjong (The only known cart to use MMC5 PCM.)
  • Metal Slader Glory

Namco 163

The Namco 163 (also known as N163, and erroneously as Namco 106 or N106) adds up to eight extra channels (the amount of channels to use is configurable), and is capable of playing waves of varying lengths. FamiTracker allows waveforms between 4 and 32 samples long (in increments of four), though recent discoveries have shown the actual chip is capable of reading the entire channel/waveform memory space, for a total of 256 samples per wave.

All the channels share the same oscillator, so the global pitch depends on the channel count; FamiTracker solves this by calculating the pitch table accordingly so notes will still be in tune no matter how many channels are used, although the sensitivity on pitch slides, detuning and vibratos will vary slightly. The upper pitch range is also affected, less channels means that the top range is extended but you lose some of the lower range.

Another by-product of the N163 only having one oscillator is that the chip constantly cycles through enabled channels, clocking one each cycle. This produces a high-pitched tone whose frequency is equivalent to (NES CPU frequency) / (15 clocks/channel * x channels). When all 8 channel are used, the channel-switch hiss is around 15 kHz. As more channels are disabled, that number increases, and when the channel count reaches 5, the hiss is outside the range of human hearing. The reason why Namco never bothered to fix this is unclear, but it is known that through a Famicom with RF out, the channel-switch noise is next to inaudible since the audio signal goes through lowpass filtering built into the CRT TV. Although relatively few emulators actually implement this behaviour, as of now, FamiTracker offers no option to turn it off.

The N163 instrument editor resembles the one for FDS, but with the difference that up to sixteen different waves can be defined in one single instrument. The wave to use is selected by the Vxx effect or the Wave instrument macro. Another difference is that a shared wave memory is used to store waves for all channels, and the location in that memory must be defined manually. This is done in the wave settings part, where wave size is the size of the wave in steps and wave position is the position in the memory. The N163 wave memory is 64 bytes (or 128 wave steps) in size, which means there is enough space for four 32-step waves or eight 16-step waves. The instrument editor will suggest wave positions depending on the wave size. The pitch table is calculated with 32-step waves in mind so instruments will be out of tune for sizes that are not a power of 2.

It is up to the user to ensure no instruments attempt to read the same memory position simultaneously.

  • Channel 1 ~ 8
    Produce sound output using an arbitrary waveform which can be defined in-instrument. Vxx selects which wave to use, or you can define wave envelopes in your Namco 163 instrument.

4-channel audio used in

  • Digital Devil Story: Megami Tensei II
  • Final Lap
  • Mappy Kids
  • Namco Classic 2
  • Rolling Thunder
  • Sangokushi - Chuugen no Hasha
  • Sangokushi 2 - Haou no Tairiku

8-channel audio used in

  • King of Kings
  • Erika to Satoru no Yumebōken

Unsupported Expansions

Beta versions of FamiTracker, as well as current versions of (j)0CC-FamiTracker, include support for these chips.

Sunsoft 5B

The Sunsoft 5B (also known erroneously as FME-7) is a subset of the very common General Instrument AY-3-8190. The chip features three channels capable of producing 50% pulse waves. In addition to this, the 5B features two hardware generators, one capable of producing volume envelopes of various shapes, and one capable of producing pseudo-random noise. The envelope generator can also be manipulated to produce sawtooth and triangle waves. The generators are shared by all three channels, so they can only be used by one channel at a time each.

Envelope and noise support is planned when the chip is implemented, but do bear in mind that only a handful of players emulate the 5B's full feature set (most only support the "default" 50% square tones, while others will play the envelope with twice the resolution). For more info, head over to the NSF players page.

Audio used in

  • Gimmick!

Further reading

FamiTracker Help
Sound hardware - Instruments - Configuration - Pattern editor - Toolbar - Control panel - Menus - Key commands - Module properties - NSF exporting - Text import and export - Effect list - Importing DPCM - Command line - Change log