Skip to main content

Instrument Note Mapping

When using instrument names as pattern tokens (e.g. snare, hihat, kick), set a default pitch with note=. For Game Boy noise instruments, also set uge_note= so playback and hUGETracker export share the same noise clock.

Syntax​

inst <name> type=<type> [<params>...] note=<note>
inst <name> type=noise ... uge_note=C-6 note=C6

Percussion kit​

Named tokens play the instrument’s default pitch (note= / uge_note=):

Named percussion kit

Interactive playback loads in the browser.

…
# note= sets the pitch when the instrument name is used as a token
inst kick type=pulse1 duty=12.5 env=gb:15,down,1 note=C2
inst snare type=noise gb:width=7 env=gb:13,down,1 length=16 uge_note=C-7 note=C6 pitch_env=[0,7,0] vol_env=[13,10,6,2]
inst hihat_cl type=noise gb:width=15 env=gb:6,down,1 uge_note=C-7 note=C6
inst hihat_op type=noise gb:width=15 env=gb:8,down,3 uge_note=D-7 note=D6
pat kick_pat = kick . . . kick . . .
pat snare_pat = . . . . snare . . .
pat hh_pat = hihat_cl hihat_cl hihat_op hihat_cl hihat_cl hihat_cl hihat_op hihat_cl
…

How it works​

  1. Pulse / Wave with note=: The specified note is the pitch played when you use the instrument name as a token.
  2. Noise with note=: Sets the default pitch for named tokens in patterns (and contributes to export mapping when uge_note is absent).
  3. Noise with uge_note=: Uses hUGETracker display notation (e.g. C-6, C-7). BeatBax derives the LFSR clock from this value for Web Audio and PCM/WAV playback, not only for UGE export. Prefer uge_note for percussion you care about hearing correctly.
  4. Without note=: Defaults to C5 for backward compatibility in exports.
  5. Explicit note overrides: inst(kick) C3 still overrides the instrument default.

Optional divisor / shift on noise instruments can still override the clock for tests or specialised patches.

Noise channel behaviour​

The Game Boy noise channel does not use melodic pitch the way pulse/wave do. Timbre still comes from gb:width (and related LFSR settings), but the noise period / clock is selected from the hUGE note table via uge_note (or derived mapping) so BeatBax matches hUGETracker listening levels and export.

In the Desktop Instrument Editor, Game Boy noise uses a Trigger (named hit) plus an optional UGE / noise-clock strip for audition — not the melodic octave keyboard. Strip keys audition only; they do not rewrite uge_note= unless you edit the Defaults field.

Prefer uge_note=C-6 for kicks when using large negative pitch_env drops — the GB noise note table is non-monotonic at some high bases. See Game Boy and Instrument macros.

Spectrum / AY percussion​

Spectrum 128 has no dedicated noise instrument type. Percussion is usually a tone channel with tone_mix=true (shared noise into that voice). note= still sets the tone click/stick pitch on named hits. In the Instrument Editor, tone_mix=true switches preview to Trigger (oneshot named hit) instead of the chromatic keyboard. See Spectrum 128.

UGE display octave​

hUGETracker displays notes one octave higher than BeatBax MIDI-style note= values:

BeatBax note=Typical hUGE display
C6C-7
C2C-3

Writing uge_note=C-7 uses the tracker’s own notation directly.

RoleTypical setup
Kicks (pulse)note=C2
Kicks (noise)uge_note=C-6 (often with pitch_env)
Snares (7-bit)uge_note=C-7, note=C6, often pitch_env=[0,7,0] vol_env=[13,10,6,2] length=16
Closed hats (15-bit)uge_note=C-7–D-7
Open hatsuge_note=D-7–E-7
Tomsuge_note=C-6–E-6

NES and other chips use note= the same way for named tokens; see NES.

Sharp notes in note=​

Avoid # inside note= values (comment parsing). Use flats or naturals: note=Db7, not note=C#7. For tracker-style sharps, use uge_note= (e.g. uge_note=C#6 where supported by the noise-note helpers).

See also​