Chipgrid / Documentation / Reference

Sound chip

The four voices of the chip (two pulses, a triangle, a noise channel) and the silence operator. A voice plays when a bang touches it.

P pulse

Pulse voice: plays when a bang touches its left, top or bottom.

A pulse wave voice. P4C24 = octave 4, note C, duty 2 (50%), length 4 ticks. Optional drop: falls that many semitones over its length (laser! P6C04o). Uses one of the 2 pulse channels.

CellRoleWhat it takes
left, above or belowbang *fires it
rightoctave0–8
2nd rightnoteC D E F G A B, lowercase = sharp (c = C#), digits = semitones
3rd rightduty0 12.5% · 1 25% · 2 50% · 3 75%
4th rightlengthin ticks (1–z = 1–35)
5th rightdropsemitones to fall over the note

History. Duty is how long the wave stays “up”: 0 = 12.5% (thin, nasal), 1 = 25% (the classic lead), 2 = 50% (the hollow square, like a clarinet: only odd harmonics), 3 = 75% — sounds exactly like 25%, it is the same wave upside down. The NES (Ricoh 2A03, 1983) and the Game Boy each had two pulse channels.

Example

# PULSE - example #
.
...4C4
.D4..S0123
..P4A.4

Open in Chipgrid ↗

Every beat, D4 plays P: octave 4, note A, length 4. Its duty comes from a sequence 0 1 2 3 walked by a slow clock, so you hear the four pulse widths in turn: thin (12.5%), classic (25%), hollow square (50%) and 75% — which sounds exactly like 25%.

Try this

  • Add a drop after the length: .P4A.4o — a laser.
  • Change the octave 4 into 6, the note A into E.
  • Length 1 = a short blip, g = a long tone.

G arpeggio

Arpeggio: a chord on one pulse voice, when banged.

A pulse voice that plays a chord by flicking through its notes 50 times a second. G3C24 = C major. Chord: 0 octave, 1 fifth, 2 major, 3 minor, 4 sus4, 5 major 7, 6 minor 7, 7 diminished.

CellRoleWhat it takes
left, above or belowbang *fires it
rightoctave0–8
2nd rightnoteC D E F G A B, lowercase = sharp (c = C#), digits = semitones
3rd rightchord0 oct · 1 5th · 2 maj · 3 min · 4 sus4 · 5 maj7 · 6 min7 · 7 dim
4th rightlengthin ticks (1–z = 1–35)

History. With only 3–4 voices, composers faked chords: the notes change so fast the ear fuses them. That warbling shimmer is the Commodore 64 sound (Rob Hubbard, Martin Galway, Chris Hülsbeck).

Example

# ARPEGGIO - example #
.
...8C4
.D8..S2367
..G3C.8

Open in Chipgrid ↗

G plays a chord on one voice, flicking through its notes 50 times a second. Every 8 ticks the chord type changes: major (2), minor (3), minor 7 (6), diminished (7) — all on C.

Try this

  • Change the steps to 2222 and the root C into a sequence SCAFG: a chord progression (see “Chords & bass”).
  • Try chord 0 (octave) and 1 (fifth): power chords.

B triangle

Triangle voice (bass, kick), when banged.

The triangle channel: B2C4 = octave 2, note C, 4 ticks. With a big drop it becomes a kick drum: B3C2o falls 24 semitones in 2 ticks.

CellRoleWhat it takes
left, above or belowbang *fires it
rightoctave0–8
2nd rightnoteC D E F G A B, lowercase = sharp (c = C#), digits = semitones
3rd rightlengthin ticks (1–z = 1–35)
4th rightdropsemitones to fall over the note

History. The NES triangle is built from 32 steps of 4 bits (16 levels up, 16 down) — a staircase, with a faint buzz a pure triangle doesn’t have. It has no volume control, only on or off: that’s why NES basslines are so even, and why kicks “steal” the bass.

Example

# TRIANGLE - example #
.
...2C8
.1D2.SCCGGAAFF
...B2.2
.
.D4
..B3C2o

Open in Chipgrid ↗

Top: a bassline on the triangle, two ticks per note. Bottom: a kick — the same triangle with a big drop (o = 24 semitones in 2 ticks). There is only one triangle channel, so every kick steals it from the bass: listen to the bass cut out on each beat, just like on a NES.

Try this

  • Change the kick’s drop o into c (12): a tom.
  • Delete the D4: the bass plays uninterrupted.
  • The triangle has no volume: try a melody on it, octave 4.

N noise

Noise voice (hats, snare), when banged.

The noise channel: N520 = pitch 5, length 2, mode 0. Pitch 0–f picks one of 16 clock speeds (0 = highest hiss, f = low rumble). Mode 1 = metallic, pitched noise. Hats: N010, snare: N530.

CellRoleWhat it takes
left, above or belowbang *fires it
rightpitch0 = high hiss … f = low rumble
2nd rightlengthin ticks (1–z = 1–35)
3rd rightmode0 = hiss, 1 = metallic

History. It’s a 15-bit shift register (LFSR): every clock, two bits are XOR-ed and fed back in. It looks random but repeats after 32,767 steps. In mode 1 it taps bit 6 instead of bit 1 and loops after only 93 steps — short enough to hear a pitch: the metallic sound.

Example

# NOISE - example #
.
.1Cg
...S*0*0*0*0*0*0*0*0
..J.N010
...S0000*0000000*000
..J.N530
...S000000*000000*0*
....N421

Open in Chipgrid ↗

Three noise sounds from one channel: N010 pitch 0, very short — a hi-hat. N530 lower and longer — a snare. N421 mode 1 — the short metallic loop that sounds pitched.

Try this

  • Change the snare’s pitch 5 into c: a low rumble.
  • Set the hats’ mode to 1: metallic hats.
  • Length 8 on the snare: a crash.

- silence

Silences all sound: -14 = 1 beat of silence every 4 beats.

Silences all sound for rest beats out of every cycle beats. -14 is 1 beat of silence every 4, and the silence falls at the end of the cycle, so the music drops out and comes back on the downbeat. Notes still ringing are cut, and voices don’t play during the silence. Everything else keeps running: clocks, movers and the screen. -34 leaves 1 beat of sound in 4. With several -, any one of them silences. In multiplayer it silences only the chip of whoever typed it: for a break together, share a bang with an uppercase link (see @).

CellRoleWhat it takes
rightrestbeats of silence, at the end of the cycle
2nd rightcyclelength of the cycle, in beats

Example

# SILENCE - example #
.
.1Cg
...S*000*000*000*000
..J.B3C2o
...S00*000*000*000*0
....N010
.
.-14

Open in Chipgrid ↗

A steady kick and hat, with -14 below. Every bar has 4 beats, and the last one is silent: the groove stops dead, then lands back on the downbeat.

Try this

  • -28: two beats of silence every two bars, a bigger drop.
  • Put a clock on the first input and the length of the gap changes by itself.
Esc