npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@cluesurf/beat

v0.0.18

Published

TypeScript MIDI engine that drives Logic Pro / Superior Drummer 3 via the macOS IAC virtual MIDI bus.

Readme

Introduction

Pro music tools sound real because real drummers don't play to grid: every hit moves a few milliseconds, every velocity drifts. This repo is a plain-text drum-tab format that compiles to humanized MIDI and streams it into Logic (or any DAW) over a virtual MIDI bus. You write five lines of K/S/H/T1/T2, save the file, and Superior Drummer plays it back through your kit: with timing jitter, velocity ranges, swing, flams and accents already baked in.

Quickstart

First, follow note/begin.md once to enable the macOS IAC virtual MIDI port and load Superior Drummer 3 in Logic. Then:

npm install -g @cluesurf/beat

Save this as calm.beat:

instrument: drumkit
tempo: 88
humanize: subtle

measure: 4*4
C|X---:----:----:----|
H|x-x-:x-x-:x-x-:x-x-|
S|----:x---:----:x---|
K|x---:--x-:--x-:----|

Run it:

beat ./calm.beat

It loops forever, reloads on save, and plays through Logic. Hit Ctrl-C to stop.

What's in here

beat/
├── code/             # the engine (parser, scheduler, MIDI export, humanize)
├── test/             # songs (each in text.beat / code.ts / data.ts forms)
├── text/             # the .beat VS Code syntax-highlighter extension
├── note/             # docs (spec, drum defaults, roadmap, syntax, etc.)
├── package.json
├── pnpm-workspace.yaml
├── tsconfig.json
└── vitest.config.ts

Examples

Test songs live at test/<name>/ and may exist in three equivalent representations:

| File | What it is | | ----------- | -------------------------------------------------------------------------------------------------------- | | text.beat | Text drum tab: see note/tab/spec.md and note/tab/drum.md | | code.ts | Imperative TypeScript DSL (NOTE constants) | | data.ts | Pure data (raw MIDI note numbers) |

pnpm play <name> picks the first format it finds (text.beat first by default). Override with --format beat | code | data | text.

# test/basic/text.beat
instrument: drumkit
tempo: 100

measure: 4*4
H|x-x-:x-x-:x-x-:x-x-|
S|----:x---:----:x---|
K|x---:----:x---:----|

Running

Prerequisite: macOS IAC bus configured + Logic Pro listening. Full setup at note/begin.md.

pnpm list:ports                              # verify "TS Drum Engine" port
pnpm try                                     # quick sanity hit
pnpm play                                    # default song
pnpm play tool/grudge                        # play a specific song
pnpm play tool/grudge --part bridge-2        # specific part
pnpm play tool/grudge --pattern bar-007      # solo one bar
pnpm play tool/grudge --from 17 --to 32      # play a region
pnpm play tool/grudge --humanize loose       # drag + jitter
pnpm export tool/grudge                      # write a .mid file

Syntax highlighter

The VS Code extension lives in text/. Top-level scripts:

pnpm text:make    # build the .vsix
pnpm text:load    # build + install into VS Code
pnpm text:login   # vsce login cluesurf (one-time)
pnpm text:host    # publish to the marketplace

See note/syntax.md for the full layout, scope table, and dev loop.

Tests

pnpm exec vitest run             # 31 tests covering the tab parser

Docs

License

MIT

ClueSurf

Made by ClueSurf, meditating on the universe ¤. Follow the work on YouTube, X, Instagram, Substack, Facebook, and LinkedIn, and browse more of our open-source work here on GitHub.