Pocket Drums

checkedbrowser preview
Fork

Share

About Pocket Drums

16-step drum machine with synthesized kick, snare, hats and clap, swing, a DJ filter and drive.

Author
OpenGroove
Kind
Portable firmware (OpenGroove ABI wasm)
Version
0.1.0
Licence
Apache-2.0 · source
Profiles
generic · kick · fire
Runs
Browser preview · native runtime in development · not hardware-tested
Tags
drums, sequencer, example
Added
2026-10-27
Size
46.6 KB
SHA-256
19fab05d13a145c0357f40993c4d0da800b6273499248bcba76bacda3e02ee63

Fork opens its C source in the editor; your fork credits OpenGroove.

  Live · Pocket Drums
Pads 1234 / Q–R / A–F / Z–V · Space play 4×4 pads (8 banks) · 4 knobs · jog · touch screen
Checks
  • BootsInstantiates with only the allowed imports, and init succeeds.
  • SoundMakes sound after pad presses; no NaN or Inf in the output.pad peak 0.52–0.52
  • FuzzRandom pads, knobs, buttons and touch for the whole run without a trap.
  • DeadlineRenders audio faster than real time, so blocks arrive before the deadline.19.3× real time, slowest profile
  • StateSaved state loads back into the same state (save/load round trip).
  • LevelOutput level is sane: audible, and not clipping.-11.7 to -11.7 dB RMS
  • ParamsAdditional check reported by the checker ("params").

sha256 19fab05d13a145c0… · checker 0.1.0+caa0c89856bd · 2026-10-28. Not a safety or quality rating. How checks work

Raw report (JSON)
{
  "sha256": "19fab05d13a145c0357f40993c4d0da800b6273499248bcba76bacda3e02ee63",
  "size": 47689,
  "kind": "wasm",
  "firmware_kind": "instrument",
  "manifest": null,
  "abi": "0.1",
  "caps": [
    "params",
    "state",
    "transport",
    "rack"
  ],
  "exports": [
    "memory",
    "og_abi_version",
    "og_caps",
    "og_device_ptr",
    "og_process_ctx_ptr",
    "og_instance_ptr",
    "og_init",
    "og_reset",
    "og_activate",
    "og_deactivate",
    "og_event",
    "og_midi_in",
    "og_process",
    "og_render",
    "og_audio_out_ptr",
    "og_audio_in_ptr",
    "og_framebuffer_ptr",
    "og_pad_leds_ptr",
    "og_button_leds_ptr",
    "og_param_count",
    "og_param_info_ptr",
    "og_param_set",
    "og_param_get",
    "og_state_size",
    "og_state_ptr",
    "og_state_save",
    "og_state_load"
  ],
  "imports": [],
  "runtime": "og-runtime-node@0.3.0",
  "profiles": {
    "generic": {
      "boots": true,
      "fuzz": true,
      "audio": true,
      "deadline": true,
      "levels": true,
      "state": true,
      "params": true,
      "effect": null,
      "metrics": {
        "pad_peak": 0.5225,
        "pad_rms_db": -11.7,
        "play_peak": 0.5649,
        "play_rms_db": -11,
        "fuzz_peak": 0.723,
        "dc": 0.0027,
        "rtf_mean": 0.0039,
        "rtf_p99": 0.0053,
        "rtf_max": 0.0619,
        "init_ms": 0.52,
        "render_mean_ms": 0.071,
        "realtime_x": 30.7,
        "frames_rendered": 486,
        "midi_out_events": 0,
        "param_count": 5,
        "state_bytes": 120
      },
      "logs": [],
      "errors": []
    },
    "kick": {
      "boots": true,
      "fuzz": true,
      "audio": true,
      "deadline": true,
      "levels": true,
      "state": true,
      "params": true,
      "effect": null,
      "metrics": {
        "pad_peak": 0.5225,
        "pad_rms_db": -11.7,
        "play_peak": 0.5649,
        "play_rms_db": -11,
        "fuzz_peak": 0.7451,
        "dc": 0.0027,
        "rtf_mean": 0.0038,
        "rtf_p99": 0.0055,
        "rtf_max": 0.0617,
        "init_ms": 0.94,
        "render_mean_ms": 0.095,
        "realtime_x": 19.3,
        "frames_rendered": 470,
        "midi_out_events": 0,
        "param_count": 5,
        "state_bytes": 120
      },
      "logs": [],
      "errors": []
    },
    "fire": {
      "boots": true,
      "fuzz": true,
      "audio": true,
      "deadline": true,
      "levels": true,
      "state": true,
      "params": true,
      "effect": null,
      "metrics": {
        "pad_peak": 0.5225,
        "pad_rms_db": -11.7,
        "play_peak": 0.5649,
        "play_rms_db": -11,
        "fuzz_peak": 0.7646,
        "dc": 0.0027,
        "rtf_mean": 0.0038,
        "rtf_p99": 0.0054,
        "rtf_max": 0.0597,
        "init_ms": 0.01,
        "render_mean_ms": 0.004,
        "realtime_x": 181.1,
        "frames_rendered": 495,
        "midi_out_events": 0,
        "param_count": 5,
        "state_bytes": 120
      },
      "logs": [],
      "errors": []
    }
  },
  "passing_profiles": [
    "generic",
    "kick",
    "fire"
  ],
  "outcomes": [
    "audio"
  ],
  "checked": {
    "boots": true,
    "audio": true,
    "fuzz": true,
    "deadline": true,
    "levels": true,
    "state": true,
    "params": true,
    "effect": null,
    "sha256": "19fab05d13a145c0357f40993c4d0da800b6273499248bcba76bacda3e02ee63",
    "abi": "0.1",
    "runtime": "og-runtime-node@0.3.0",
    "checked_at": "2026-10-28"
  },
  "ok": true,
  "errors": []
}
Versions
  • 0.1.0· 2026-10-27 · 19fab05d13a1
Run it locally
$ curl -LO https://sloppyloops.io/fw/pocket-drums.wasm
$ og verify pocket-drums.wasm                    # the Hub's headless checks
$ og render pocket-drums.wasm --profile kick --out pocket-drums.wav   # hear it offline

Needs the og CLI. CLI docs