Drum Parameters

Let's have a look at the Drum Editor again:

As mentioned in the Drum Editor page, the Drum Editor is divided into 5 sub-groups and each one of these sub-groups contains the sound generating parameters for each of the NES's 5 voices for each Drum Patch.

Within those sub-groups, the parameters are further divided into sections which are mostly organised into vertical columns. Those columns are given 3-letter headings and the single parameters are given a single-letter ID. For example, the LFO Speed is under the LFO column, indicated by the letter 'S'

Many of the parameters are common between all Voices but there are some that are unique to particular Voices and some that perform slightly different functions depending on which Voice they are used on. We'll start off with Voice A as (along with Voice B which is identical) this is the most complicated one with the most parameters. I'll just give an overview of what the parameters do here, the Synthesis page explains what's going on in a bit more depth.

Voice A / Voice B Parameters (Square-wave)

Table Headings: Parameter is the three-letter sub-section name and the single-letter ID of each parameter of a Drum Voice. Function is a simple translation of the parameter name. Usage describes the functions of the parameters and values required to access those functions. Tx shows you the 3-letter ID that is used for the Trigger Parameters in the Auxiliary section of Drum Patches (see Drum Editor page for more detail).

ParameterFunctionUsageTx A/B
OSC-COscillator Coarse Offset
00Pitch is equal to Trigger Note
01-4FPositive semi-tone offset
50-AFAbsolute note, 50 being the lowest pitch and AF being the highest
FF-B0Negative semi-tone offset (FF = -1)
OSC-FOscillator Fine Tuning
00No detune
01-7FPositive detuning
FF-80Negative detuning
OSC-DOscillator Distortion
01-7FNumber of ticks that effect is audible from start of new note
ParameterFunctionUsageTx A/B
LFO-DLFO Mode/Delay
00-7FPitch Sweep mode. Delay in ticks from beginning of new note before effect starts
80One-shot Arpeggio
81-FFCycling Arpeggio, number of cycles is 'value minus 80'

If mode is One-shot Arpeggio:
01-FFNumber of ticks to hold first note

or if mode is Cycling Arpeggio:
01-FFTicks between each arpeggio note

or if mode is Pitch Sweep:
00sweep is in one direction
01-FFnumber of ticks before sweep changes direction (vibrato)

LFO-WLFO Width (Depth)

If mode is One-Shot Arpeggio:
00-7Fpositive semi-tone offset
FF-80negative semi-tone offset

Or if mode is Cycling Arpeggio:
00-FFLeft-hand digit is 2nd semi-tone offset, right-hand digit is 2nd semi-tone offset. Trigger Note is the 'root' of the arpeggio chord

Or if mode is Pitch Sweep:
01-7FPitch Sweep up
FF-80Pitch Sweep down

ParameterFunctionUsageTx A/B
AMP-VAmplitude Volume/Curve
0x-FxLeft-digit specifies the curve for Envelope Attack and Release. 8x is roughly linear, 0x is the steepest exponential curve while Fx is the steepest logarithmic curve
x0-xFRight-digit is the volume scaling, x0 being silent and xF being full volume
AMP-EAmplitude Envelope
0x-FxLeft-digit specifies the Attack speed, 1x is the slowest, while Fx is the fastest and 0x specifies no Attack phase
x0-xFRight-digit specifies the Release speed, 1x is the slowest, while Fx is the fastest and 0x specifies no Release phase
AMP-HAmplitude Hold Time
01-FFNumber of ticks that a note is held before being released.
ParameterFunctionUsageTx A/B
DTY-P0Duty Setting 0
00set fixed pulse-width 00
40set fixed pulse-width 40
80set fixed pulse-width 80
C0set fixed pulse-width C0

Or if you want Duty Modulation:

01-3Fset pulse-width 00 for 01-3F ticks
41-7Fset pulse-width 40 for 01-3F ticks
81-BFset pulse-width 80 for 01-3F ticks
C1-FFset pulse-width C0 for 01-3F ticks

and the selected pulse-width will play for the specified number of ticks before moving to the value in DTY-P1 (below)

DTY-P1Duty Setting 1 Exactly same as DTY-P0 above except that if you're using Duty Modulation, the pulse-width setting goes back to DTY-P0 once the specified number of ticks has passed. AP1

Voice C Parameters (Triangle)

Voice C shares many of the same parameter types as Voice A and Voice B. OSC-C and OSC-F are exactly the same (though of course in the NES sound chip, Voice C plays back one octave lower than A and B!). LFO-D, LFO-S and LFO-W also operate exactly the same as A and B. Voice C (triangle) doesn't have either a Duty setting or variable amplitude so there are no parameters relating to these aspects. The only parameter from the AMP section is AMP-T which, like it does for Voice A and B, sets the number of ticks that the note is held for.

Voice C has one extra parameter that Voices A and B don't have:

AMP-PTriangle Pulse
00-FFthe left-digit sets the time that the voice is on while the right-hand digit sets the time that voice is turned off. The effect cycles between these two states for the duration of a note and produces an odd 'warbling' sound. The higher the digit value, the faster the phase (on or off) will be

Of course, even though Voice C does have many parameters in common with Voices A and B, it has it's own set of Tx IDs. The difference is that the three-letter codes start with 'C' instead of 'A' or 'B'.

Voice D Parameters (Noise)

Voice D (Noise) also shares some parameters with Voice A, B and C. AMP-V, AMP-E and AMP-H all behave the same way as they do for Voice A and B. Because Voice D doesn't have 'pitch' as such, OSC-C for this voice is a little different from the first three voices.

OSC-CNoise 'Pitch' Offset
00-4Fsets a relative offset from the Trigger Note
50-5Fsets absolute pitch, noise mode
60-6Fsets absolute pitch, 'tone' mode (metallic noise)

I think the 50-5F and 60-6F ranges are fairly straightforward but the relative mode might need a little explaining. Basically you've only got 32 'pitches' for the noise (16 in the 'noise' mode and another 16 in the 'tone' mode) and these are represented by the values 00-0F and 10-1F in PR8 respectively. When using the relative offset to set the pitch, the value is added to the Trigger Note so really only the first 32 notes are valid i.e. the lowest pitch note is 'A-1' which equates to 00 as noise pitch. 'A#1' is 01, 'B1' is 02 etc. If the Trigger Note plus the relative offset you set in OSC-C exceeds the valid range, the actual value written to the frequency will wrap around back to 00.

While Voice D has a full complement of LFO parameters, they behave a bit differently from their Voice A, B and C counterparts:

LFO-DLFO Mode/Delay
00-7FNoise Sweep mode. Delay in ticks from beginning of new note before effect starts
80One-shot Arpeggio
81-FFCycling Arpeggio, number of cycles is 'value minus 80'

If mode is One-shot 'Arpeggio':
01-FFNumber of ticks to hold first note

or if mode is Cycling 'Arpeggio':
01-FFTicks between each arpeggio note

or if mode is Noise Sweep:
01-FFnumber of ticks between adding Width value to noise pitch

LFO-WLFO Width (Depth)

If mode is One-Shot 'Arpeggio':
00-7Fpositive offset
FF-80negative offset

Or if mode is Cycling 'Arpeggio':
00-7Fpositive offset
FF-80negative offset

Or if mode is Noise Sweep:
01-7FPitch Sweep up
FF-80Pitch Sweep down


There are two main differences between the LFO operations for Voice D and that of the 'melodic' voices (A, B and C). First of all, the reason 'Arpeggio' is in quotation marks is because instead of 3 notes, for Noise the effect just toggles between the original pitch and the pitch value resulting from adding the LFO-W value to the original pitch. Also, whereas for Voices A, B and C, the arpeggio values are only positive (e.g. 47 would add 4 then 7 to the original pitch), for Voice D the offset in LFO-W is signed.

Secondly, because sweeping the pitch of the Noise is very low resolution (there are only 16 values compared to about 2048 values for the melodic Voices), the LFO-S parameter becomes a delay between modifying the noise pitch. Otherwise, you'd go between the limits of the noise pitch in 16 ticks.

Voice E Parameters (DCM)

OK, Voice E is completely different from the other voices. All the parameters are used to control the (DCM) sample playback and come under the heading 'DCM'

DCM-SSample Number
00-FFSelects the sample number to play. 00 plays silence
DCM-Sample Start Offset
00-FFoffsets the playback starting point of the sample
DCM-Sample End Offset
00-FFtruncates the length of the sample by the specified value
DCM-PSample Playback Speed
00-0Fsets the playback speed of the sample
DCM-LSample Loop
00Sample does not loop
01-FFSample loops