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

@aurio/soundbank

v0.1.1

Published

Simple HTTP soundbank server for serving a Strudel soundbank

Readme

@aurio/soundbank

A tiny HTTP server for serving local audio samples to Strudel.

Inspired by @strudel/sampler but with a few changes I needed to make.

  • No dependencies (not even cows).
  • No PostgreSQL default port conflicts.
  • No Directory traversal
  • No re-scan on each request by default. The whole point is to have as close to zero latency as possible. Index rebuild is opt-in and based on file-watching, so it's still better.

Installation

Run directly with npx:

npx @aurio/soundbank

Or install globally:

npm install -g @aurio/soundbank
soundbank

Usage

Serve samples from the current directory:

soundbank

Serve samples from a specific directory:

soundbank --dir ~/Samples

Use a custom port:

soundbank --port 9000

Generate a strudel.json file and exit:

soundbank --json

Watch the directory and automatically rebuild the sample index when files change:

soundbank --watch

Strudel

After starting the server:

Serving soundbank:

  /Users/alice/Samples

- http://localhost:8787
- http://192.168.1.143:8787

Use the displayed URL directly in Strudel:

await samples("http://localhost:8787");

If another device on your local network needs access, use the LAN URL printed by the server.

Supported Formats

  • WAV (.wav)
  • MP3 (.mp3)
  • OGG (.ogg)

Bank Naming

Given the following directory structure:

Samples/
├── drums/
│   ├── kick.wav
│   └── snare.wav
└── bass/
    └── sub.wav

The generated banks are:

{
  "drums": [
    "/drums/kick.wav",
    "/drums/snare.wav"
  ],
  "bass": [
    "/bass/sub.wav"
  ]
}

With --flat, paths are flattened into unique names:

{
  "drums_kick": [
    "/drums/kick.wav"
  ],
  "drums_snare": [
    "/drums/snare.wav"
  ],
  "bass_sub": [
    "/bass/sub.wav"
  ]
}

Security

@aurio/soundbank only serves files located under the configured root directory.

Path traversal attempts such as:

../../etc/passwd

are rejected.

Why?

This package started as a clean-room replacement for another sample server whose implementation had accumulated several design issues:

  • unnecessary runtime dependencies
  • repeated filesystem scans on every request
  • synchronous filesystem operations inside asynchronous handlers
  • lack of path traversal protection
  • poor defaults

The goal of @aurio/soundbank is simple:

Serve audio files to Strudel with as little code and as few surprises as possible.

License

MIT