Drift Arp

checkedbrowser preview
Fork

Share

About Drift Arp

Generative arpeggiator: FM bells random-walk over a gliding saw pad and a four-chord progression, with reverb.

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
arp, generative, ambient, synth, example
Added
2026-10-27
Size
47.1 KB
SHA-256
112a0f350ded146ecdb47b92b68d8952db66ecf42cef18118eb51392d0ff2015

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

  Live · Drift Arp
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.59–0.60
  • 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.15.8× real time, slowest profile
  • StateSaved state loads back into the same state (save/load round trip).
  • LevelOutput level is sane: audible, and not clipping.-16.9 to -15.6 dB RMS
  • ParamsAdditional check reported by the checker ("params").

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

Raw report (JSON)
{
  "sha256": "112a0f350ded146ecdb47b92b68d8952db66ecf42cef18118eb51392d0ff2015",
  "size": 48199,
  "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.5924,
        "pad_rms_db": -15.6,
        "play_peak": 0.4994,
        "play_rms_db": -18.5,
        "fuzz_peak": 0.866,
        "dc": 0,
        "rtf_mean": 0.0047,
        "rtf_p99": 0.0064,
        "rtf_max": 0.0659,
        "init_ms": 0.61,
        "render_mean_ms": 0.074,
        "realtime_x": 24.6,
        "frames_rendered": 542,
        "midi_out_events": 0,
        "param_count": 8,
        "state_bytes": 60
      },
      "logs": [],
      "errors": []
    },
    "kick": {
      "boots": true,
      "fuzz": true,
      "audio": true,
      "deadline": true,
      "levels": true,
      "state": true,
      "params": true,
      "effect": null,
      "metrics": {
        "pad_peak": 0.5924,
        "pad_rms_db": -15.6,
        "play_peak": 0.4994,
        "play_rms_db": -18.5,
        "fuzz_peak": 0.864,
        "dc": 0,
        "rtf_mean": 0.0048,
        "rtf_p99": 0.0066,
        "rtf_max": 0.0669,
        "init_ms": 0.95,
        "render_mean_ms": 0.088,
        "realtime_x": 15.8,
        "frames_rendered": 542,
        "midi_out_events": 0,
        "param_count": 8,
        "state_bytes": 60
      },
      "logs": [],
      "errors": []
    },
    "fire": {
      "boots": true,
      "fuzz": true,
      "audio": true,
      "deadline": true,
      "levels": true,
      "state": true,
      "params": true,
      "effect": null,
      "metrics": {
        "pad_peak": 0.6037,
        "pad_rms_db": -16.9,
        "play_peak": 0.4874,
        "play_rms_db": -18.4,
        "fuzz_peak": 0.8706,
        "dc": 0.0001,
        "rtf_mean": 0.0048,
        "rtf_p99": 0.0074,
        "rtf_max": 0.0615,
        "init_ms": 0.02,
        "render_mean_ms": 0.005,
        "realtime_x": 128.3,
        "frames_rendered": 542,
        "midi_out_events": 0,
        "param_count": 8,
        "state_bytes": 60
      },
      "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": "112a0f350ded146ecdb47b92b68d8952db66ecf42cef18118eb51392d0ff2015",
    "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 · 112a0f350ded
Run it locally
$ curl -LO https://sloppyloops.io/fw/drift-arp.wasm
$ og verify drift-arp.wasm                    # the Hub's headless checks
$ og render drift-arp.wasm --profile kick --out drift-arp.wav   # hear it offline

Needs the og CLI. CLI docs