# Drums: percussion map and kits

A drums track holds one-step hits on General MIDI percussion pitches 35 to 81
and never carries a program. Its `kit` is a GS drum program from 0 to 127
(default 0). Compose writes a drums block as `drums <kit>` followed by rows,
one per percussion sound:

```text
drums 25                   # or: drums TR-808, drums Room; a bare "drums" is kit 0
vol 9000
kick:  x...x...x...x...    # x accent (110), o hit (90), . rest
snare: ....x.......x...
hh:    o.x.o.x.o.x.o.x. @70/95      # hit/accent velocity override
ohh:   ..o...o...o...o. | ..o...o...o...x.   # | separates bars
```

A row of 16 steps repeats every bar; 32 steps cover two bars, 64 cover four.
Closed, pedal, and open hi-hat (42, 44, 46) choke each other in every kit, so
an open hat that is followed by a closed hat stops short, which is the sound
you want.

## Percussion pitches and compose aliases

Rows accept the General MIDI name (`Closed Hi-Hat`), an alias, or the pitch
number.

| Pitch | General MIDI name | Compose aliases |
| ---: | --- | --- |
| 35 | Acoustic Bass Drum | kick2 |
| 36 | Bass Drum 1 | kick, bd |
| 37 | Side Stick | rim, rimshot, sidestick |
| 38 | Acoustic Snare | snare, sd |
| 39 | Hand Clap | clap, cp, handclap |
| 40 | Electric Snare | snare2 |
| 41 | Low Floor Tom | floortom |
| 42 | Closed Hi-Hat | hh, hat, hihat, chh, closedhat |
| 43 | High Floor Tom | floortom2 |
| 44 | Pedal Hi-Hat | phh, pedalhat |
| 45 | Low Tom | lowtom |
| 46 | Open Hi-Hat | ohh, oh, openhat |
| 47 | Low-Mid Tom | midtom |
| 48 | Hi-Mid Tom | himidtom |
| 49 | Crash Cymbal 1 | crash, cy |
| 50 | High Tom | hitom |
| 51 | Ride Cymbal 1 | ride, rd |
| 52 | Chinese Cymbal | china |
| 53 | Ride Bell | ridebell |
| 54 | Tambourine | tamb |
| 55 | Splash Cymbal | splash |
| 56 | Cowbell | cowbell, cb |
| 57 | Crash Cymbal 2 | crash2 |
| 58 | Vibraslap |  |
| 59 | Ride Cymbal 2 | ride2 |
| 60 | Hi Bongo |  |
| 61 | Low Bongo |  |
| 62 | Mute Hi Conga |  |
| 63 | Open Hi Conga |  |
| 64 | Low Conga |  |
| 65 | High Timbale |  |
| 66 | Low Timbale |  |
| 67 | High Agogo |  |
| 68 | Low Agogo |  |
| 69 | Cabasa | cabasa |
| 70 | Maracas | shaker |
| 71 | Short Whistle |  |
| 72 | Long Whistle |  |
| 73 | Short Guiro |  |
| 74 | Long Guiro |  |
| 75 | Claves | claves |
| 76 | Hi Wood Block |  |
| 77 | Low Wood Block |  |
| 78 | Mute Cuica |  |
| 79 | Open Cuica |  |
| 80 | Mute Triangle |  |
| 81 | Open Triangle |  |

## The twelve kits

The sound release pins twelve PCM kits on GS program numbers, each covering
all 47 pitches with a hi-hat choke group. Compose accepts each kit's
release name (`drums House`, `drums 808`, `drums "Lo-fi"`), the Roland GS
spellings Standard, Power, Electric, TR-808, Jazz, Brush, Orchestral, and SFX,
or any program number from 0 to 127.

| Kit | Program | Character | Built from | Best for |
| --- | ---: | --- | --- | --- |
| Acoustic | 0 | dry studio kit, three velocity layers | Virtuosity Drums, VCSL | pop, jazz, anything acoustic |
| Room | 8 | the same kit with room microphones | Virtuosity Drums, VCSL | rock, boom-bap with air |
| Lo-fi | 9 | soft dusty kicks and snares | Boochi44, Sonic Pi, Virtuosity | boom-bap, lo-fi hip hop |
| Breaks | 10 | tight processed break hits | Sonic Pi, VCSL, Virtuosity | breakbeat, jungle |
| Techno | 11 | synthesized kick and noise hats | Audiophob, FreePats, Modular Hits, Sonic Pi, synth 808 | techno, minimal |
| House | 13 | punchy kick, clap, bright hats | Audiophob, Boochi44, FreePats, Modular Hits, Sonic Pi, synth 808 and 909 | house, garage |
| Rock | 16 | loud kit with a long snare | FreePats MuldjordKit, VCSL, Virtuosity | rock, power ballads |
| Electronic | 24 | Simmons-style electronic drums | FreePats, Sonic Pi, synth 808 | electro, synth pop |
| 808 | 25 | synthesized TR-808 voices; cowbell 56, claves 75, congas 62 to 64, maracas 70 | synthesized 808 (io-808) | half-time, electro, trap-style loops |
| 909 | 30 | synthesized TR-909 kick and snare with sampled cymbals | synthesized 808 and 909, VCSL | house, techno |
| Orchestra | 48 | concert bass drum and snare, timpani across 41 to 53, crash and triangle | FreePats Timpani and World Percussion, VCSL, Virtuosity | orchestral, cinematic |
| Ethnic | 49 | congas, bongos, cajón, shakers, claves, guiro | FreePats World Percussion, Sonic Pi, VCSL, Virtuosity | latin, percussion loops |

Every kit answers on every pitch, so a boom-bap row written for Lo-fi still
plays on Acoustic. The browser layers the twelve kits above the base bank and
fetches a kit the first time a document names it, so a `kit 25` loop loads
the base bank and the 808 file only. A program without a release kit (32
Jazz, 40 Brush, or 56 SFX, for example) plays the base bank's preset at that
program when it has one and the Standard kit otherwise; `analyze` marks such
a program as a base-bank kit. The CLI's `render --dry` layers the same kits
and instrument overrides above the base bank, so its stems use the sounds the
browser plays. Write the kit you mean; the address does not change with the
samples.

## Default rows per kit

The editor's drum grid starts every kit with eleven rows (kick 36, snare 38,
rim 37, clap 39, hh 42, phh 44, ohh 46, lowtom 45, hitom 50, crash 49, ride
51) plus any pitch the document already uses. Start a compose block from the
rows its kit is built around, then add rows by name; the sixteen-pad
convention is C1 to D#2 (36 to 51).

| Kit | Rows |
| --- | --- |
| Acoustic, Room, Rock, Lo-fi, Breaks | the editor's eleven rows |
| House, Techno, 909, Electronic | kick 36, snare 38, clap 39, rim 37, hh 42, ohh 46, ride 51, crash 49, shaker 70, tamb 54, cowbell 56, lowtom 45 |
| 808 | kick 36, snare 38, rim 37, clap 39, hh 42, ohh 46, cowbell 56, claves 75, maracas 70, conga 62 63 64, lowtom 45 |
| Orchestra | kick 36 (bass drum), snare 38, castanets via 39, timpani 41 to 53 (chromatic), crash 49, tamb 54, triangle 80 81, splash 55 |
| Ethnic | conga 62 63 64, bongo 60 61, cabasa 69, shaker 70, claves 75, guiro 73 74, cowbell 56, tamb 54, woodblock 76 77, kick 36 |

## Velocity and feel

- Hats need two velocities at least; `lint` flags a hat row with four or more
  hits at one velocity (`flat-hats`). Write `x` and `o` or an `@hit/accent`
  override, or run `accent <track> --pattern 100,70,85,70`, which scales every
  hit on the track by the percentage at its step and cycles the pattern.
- Ghost notes on the snare sit at 55 to 70; backbeats at 100 to 115.
- `humanize <track> --velocity 10 --seed 7` scatters velocities without moving
  time; `swing` moves time and is set on the document.
- A kick's fundamental and a bass note on the same step compete below 120 Hz.
  `analyze` lists the collisions; `duck <bass> --against <drums>` writes a
  volume dip on the bass at every kick.
