Sound packs

15 keyboard sound packs for Mac, from real recordings

Clicky, tactile, linear, Topre, buckling springs, a Rainy 75, a MacBook and two typewriters. Every pack is cut from a real CC0 recording on Freesound (the typewriters add a second one for the bell on Return), credited below, and you can add packs of your own.

Updated

Leopold keycap

Short answer: Keyslam, the keyboard sound app for Mac, comes with 15 sound packs, each cut from a real CC0 recording on Freesound: MX Blue, MX Brown, MX Red, MX Black, Gateron Red, Topre, Leopold, WhiteFox, Rainy 75, Unicomp, Model F, Vintage Technics, Laptop, Selectric and Olivetti. Every pack's regular keys have four strength bands of real strikes; 13 of the 15 have separate takes for Space, Return and Delete, and 13 have key-up sounds. You can add your own with a folder of audio files and a pack.json.

Every pack and where it came from

PackTypeRecorded onRecorded byTakesHear it
MX Blue keycap MX BlueClickyCherry keyboard, model not namedEricsSoundschmiede46
MX Brown keycap MX BrownTactileBoard not namedmajod42
MX Red keycap MX RedLinearCorsair K95handygaber46
MX Black keycap MX BlackLinearLeopold FC980M PDujonathan43
Gateron Red keycap Gateron RedLinearGMMK TKLIRF1010N42
Topre keycap TopreElectro-capacitiveHHKB Professional Hybridgrcekh30
Leopold keycap LeopoldTactileLeopold FC660Mstu55643
WhiteFox keycap WhiteFoxTactileWhiteFox (Hako Violet)grcekh45
Rainy 75 keycap Rainy 75MechanicalRainy 75 (switches not stated)Techrul42
Unicomp keycap UnicompBuckling springUnicomp buckling-spring board (model not named)SamsterBirdies46
Model F keycap Model FBuckling springIBM Model F XT, early 1980sFractal_39
Vintage Technics keycap Vintage TechnicsLinear, moddedTechnics-branded board, Gateron Yellowszrrion42
Laptop keycap LaptopButterfly2018 MacBook Prokhenshom39
Selectric keycap SelectricTypewriterIBM Correcting Selectric IIsecretmojo20
Olivetti keycap OlivettiTypewriterOlivetti Lettera 22keithpeter25

Takes are the single keystrokes in each pack, counted from the app's own pack files. Each pack has its own page with the recording details, measurements and a sound test.

Pick by sound

  • Clicky: MX Blue, a crisp click on every press.
  • Buckling springs: Unicomp, a big, springy click-clack from a Model M-style board; Model F, a loud, deep clack from capacitive buckling springs.
  • Tactile: MX Brown, a soft bump and a muted clack; Leopold, close-miked, crisp and detailed; WhiteFox, punchy and even from soft to hard.
  • Linear: MX Red, smooth, light and quick; MX Black, heavy, smooth and full-bodied; Gateron Red, dark and smooth, with a hollow note under each key; Vintage Technics, lubed Gateron Yellows, short and muted.
  • Topre (electro-capacitive): Topre, a deep, rounded thock.
  • Mechanical, switches not named: Rainy 75, a dark, even, creamy thock from an aluminum 75% board.
  • Laptop: Laptop, a short, flat tap.
  • Typewriters: Selectric, a steady electric strike, with a bell and carriage return on Return; Olivetti, snappy manual typebars, with a ding on Return.

Not sure? Play them all with the same phrase in the side-by-side keyboard sound test.

How the packs are made

Nobody typed softly, then hard, then as hard as they could for these packs. Each one starts as a normal typing session, and the four strengths are sorted out of it afterwards. Keyslam's pack builder does this for every pack:

  1. Find every keystroke. It looks for sharp rises in a high-passed energy envelope, then pairs each press with the quieter key-up that follows 30–250 ms later.
  2. Set aside the wide keys. The darkest, longest-ringing presses of decent strength, up to about 14% of them, become Space, Return and Delete. Typewriters skip this step.
  3. Throw out the messy ones. Clipped hits, hits that start inside the previous key's ring and takes with a second keystroke in the tail are dropped.
  4. Sort by natural loudness. Soft is the 8th–30th percentile of strikes, medium the 38th–62nd, hard the 70th–88th and slam the hardest ~8%. The strikes between bands aren't used, which keeps the bands distinct.
  5. Pick the takes. Up to six per band for regular keys, four for wide keys and six key-ups, spread across each band. By default takes are capped at 230 ms (380 ms for wide keys, 120 ms for key-ups) and faded out.
  6. Level them. Each take moves 70% of the way, in dB, toward its band's target: soft 0.55×, medium 1×, hard 1.45× and slam 2× the medium level. Then the whole pack is set so a standard medium-strength typing passage measures −28 LUFS.

So the bands are real strikes from one recording, kept in order of their natural loudness, then pulled toward four set levels. The typewriters add a second recording for the bell on Return. In the app, each key keeps its own take and a fixed pitch offset of up to about 1.2%, so fast typing doesn't sound like one sample on repeat.

Credits: the people who recorded these keyboards

Every source recording is CC0 1.0 (public domain) on Freesound. CC0 doesn't require credit, but these recordings are why Keyslam exists, so here they are.

Want the originals? Free keyboard and typewriter sound effects lists each recording with its length and format.

Make your own pack

A Keyslam pack is a folder of audio files plus a pack.json that says which file plays for which key and strength. Put the folder in ~/Library/Application Support/Keyslam/Packs (choose Packs Folder… at the bottom of the Keyslam menu to open it), then open the menu again. Keyslam rescans the folder every time the menu opens.

  1. Start with recordings you're allowed to use. Your own keyboard, or CC0 recordings from Freesound.
  2. Cut one keystroke per file. Start each file just before the strike: the sound starts when the key goes down, so leading silence sounds like lag.
  3. Sort the strikes into soft, medium, hard and slam. The built-in packs use up to six takes per band for regular keys and up to four for Space, Return and Delete. One band is enough to start.
  4. Write pack.json next to the files, drop the folder into Packs and pick your pack from the menu.
{
  "formatVersion": 1,
  "id": "my-board",
  "name": "My Board",
  "kind": "Tactile",
  "summary": "Hand-cut takes from my own keyboard.",
  "author": "Your name",
  "license": "CC0 1.0",
  "groups": {
    "alpha": {
      "down": {
        "soft":   ["key-soft-1.wav", "key-soft-2.wav"],
        "medium": ["key-medium-1.wav", "key-medium-2.wav"],
        "hard":   ["key-hard-1.wav", "key-hard-2.wav"],
        "slam":   ["key-slam-1.wav"]
      },
      "up": ["up-1.wav", "up-2.wav"]
    },
    "space": {
      "down": { "medium": ["space-1.wav"], "hard": ["space-2.wav"] }
    }
  }
}

Fields

FieldRequiredWhat it does
formatVersionYesUse 1.
idYesA unique id. A pack you add with the same id as a built-in pack replaces it.
nameYesThe name in the menu.
kindYesThe short label under the name, such as “Tactile”.
summaryNoThe tooltip when you hover the pack in the menu.
author, licenseNoCredit lines kept with the pack. The built-in packs name the Freesound recordist and link the CC0 source here.
groupsYesKey groups, each with “down” (bands to files) and an optional “up” list of key-up files.

Key groups

GroupKeys
alphaLetters, numbers, punctuation, arrows, function keys and every key not listed below
spaceSpace bar
enterReturn and keypad Enter
backspaceDelete and Forward Delete
modifierShift, Control, Option, Command, Caps Lock, Tab and Fn

Rules worth knowing

  • Fallbacks. A group you leave out uses alpha. A band you leave out uses the nearest band you did provide, scaled 1.6× per step (about 4 dB), so soft still sounds softer. A group without “up” uses alpha's key-up sounds; if alpha has none either, those keys are silent on release.
  • Files. WAV, AIFF or FLAC work best, and anything Core Audio can read loads, including CAF, M4A and MP3. Mono or stereo, any sample rate: Keyslam converts to 48 kHz stereo when it loads the pack.
  • Paths. File names are relative to the pack folder. Subfolders are fine; names containing “..” or starting with “/” are rejected.
  • Size. A pack can decode to at most 96 MB, about four minutes of 48 kHz stereo audio. Single keystrokes are tiny, so this only matters if you include long files.
  • Consistent keys. Each key always picks the same position in a band's list, so bands with the same number of takes keep every key's character steady as strength changes.
  • Loudness. Keyslam plays your files at the level you give them. To switch between your pack and the built-in ones without a jump, aim for about the same level as the built-in medium takes.
  • Mechvibes packs (a config.json plus audio) don't load directly. Convert them by exporting each key's sound to its own file and listing the files in a pack.json.

Sound pack questions

Can I import Mechvibes sound packs?

Not directly. Keyslam doesn't read Mechvibes' config.json. To bring a pack over, export each key's sound to its own file, list the files in a pack.json and check the pack's license first. For a wider look at the two apps, see how Keyslam compares with Mechvibes.

Where is the Keyslam Packs folder?

In ~/Library/Application Support/Keyslam/Packs. Choose Packs Folder… at the bottom of the menu to open it; Keyslam creates it if needed and rescans it each time you open the menu.

Why do all the built-in packs play at the same volume?

Each one is leveled so the same medium-strength typing passage, played through the real engine, measures −28 LUFS. Switching packs changes the tone, not the loudness. Packs you add play at the level of your files.

Can I share a pack I made?

Only if you have the rights to the recordings. CC0 recordings from Freesound are a safe start; put the recordist and source in the pack's author and license fields, the way the built-in packs do.

Keep exploring

Hear any of them on every keystroke.

$3.99 once after a 7-day free trial, every current and future pack included.