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

audioui

v0.1.1

Published

Modern, accessible audio UI components for React applications

Readme

AudioUI

Modern, accessible audio interface components for React applications

npm version MIT License GitHub

Documentation | Components | GitHub

🎛️ What is AudioUI?

AudioUI is a comprehensive library of React components specifically designed for audio applications, digital audio workstations (DAWs), synthesizers, and music production tools. It provides professionally crafted UI elements with modern design principles and full accessibility support.

Component Gallery

📦 Installation

# npm
npm install audioui

# yarn
yarn add audioui

# pnpm
pnpm add audioui

AudioUI is compatible with React 18+ and works with frameworks like Next.js, Vite, and Create React App.

View Documentation

Overview

AudioUI is a comprehensive library of React components specifically designed for audio applications, digital audio workstations (DAWs), synthesizers, and other music production tools. It provides professionally crafted UI elements common in music software with modern design principles and full accessibility support.

✨ Key Features

  • 🎛️ Professional Audio Controls: Knobs, faders, XY pads, and other audio-specific UI components
  • 🎹 MIDI Integration: Built-in MIDI support for components like drum pads and keyboards
  • 📱 Responsive: Fully responsive components that work across desktop and mobile devices
  • Accessible: ARIA-compliant components with keyboard navigation and screen reader support
  • 🎨 Customizable: Easily themeable to match your application's design system
  • Optimized: High-performance components with minimal re-renders for low-latency audio applications
  • 🔌 Framework Agnostic: Works with any React-based project, including Next.js, Remix, and more

Quick Start

import { ADSREnvelope, Dial, MIDIPad, PitchBend } from 'audioui';

function MySynthUI() {
  return (
    <div className="synth-container">
      <Dial 
        value={75} 
        min={0} 
        max={100} 
        onChange={(value) => console.log('Dial value:', value)} 
      />
      
      <ADSREnvelope
        attack={0.1}
        decay={0.3}
        sustain={0.5}
        release={1.0}
        onValueChange={(values) => console.log('ADSR values:', values)}
      />
      
      <PitchBend 
        onChange={(value) => console.log('Pitch bend:', value)} 
      />
      
      <MIDIPad 
        note={60} 
        onTrigger={(note, velocity) => console.log('Note on:', note, velocity)}
        onRelease={(note) => console.log('Note off:', note)}
      />
    </div>
  );
}

📚 Component Documentation

Core Components

| Component | Description | Documentation | |-----------|-------------|---------------| | Dial/Knob | Rotary control for parameters | View docs | | Knob Specular | Photorealistic knob with specular highlights | View docs | | Slider - Ethereal | Linear control with ethereal visual style | View docs | | XY Pad | Two-dimensional control surface | View docs | | ADSR Envelope | Attack, Decay, Sustain, Release envelope editor | View docs | | Pitch Bend Wheel | Vertical/horizontal pitch bend control | View docs | | Modulation Wheel | Modulation wheel control | View docs | | Meter - Arc | Circular level meter display | View docs |

Additional Components

  • MIDI Provider - Context provider for MIDI functionality
  • Filter Display - Visual representation of filter curves
  • Drum Pad - Trigger pad for percussion samples
  • Preset Browser - Interface for managing and selecting presets

🔧 Advanced Usage

Theme Customization

AudioUI components can be customized to match your application's theme:

<Dial 
  value={50}
  size="lg"
  trackColor="rgba(0,0,0,0.2)"
  indicatorColor="#6366f1"
  variant="flat"
  showValue={true}
  valueFormatter={(v) => `${v}%`}
/>

Integration with Web Audio API

import { useEffect, useRef } from 'react';
import { Dial } from 'audioui';

function AudioProcessor() {
  const audioContextRef = useRef(null);
  const filterRef = useRef(null);
  
  useEffect(() => {
    audioContextRef.current = new AudioContext();
    filterRef.current = audioContextRef.current.createBiquadFilter();
    // Additional audio setup...
  }, []);
  
  const handleFilterChange = (value) => {
    if (filterRef.current) {
      filterRef.current.frequency.value = value * 100;
    }
  };
  
  return (
    <div>
      <h3>Filter Frequency</h3>
      <Dial
        min={20}
        max={20000}
        value={1000}
        onChange={handleFilterChange}
        logScale={true}
      />
    </div>
  );
}

📂 Project Structure

/
├── components/
│   ├── ui/                 # Core UI components
│   │   ├── dial.tsx        # Rotary knob component
│   │   ├── adsr-envelope.tsx
│   │   ├── XYPad.tsx
│   │   └── ...
│   ├── site-sidebar.tsx    # Documentation site components
│   └── ...
├── app/
│   ├── docs/               # Documentation pages
│   │   ├── components/     # Component documentation
│   │   ├── installation/   # Installation guide
│   │   └── introduction/   # Introduction to AudioUI
│   └── ...
└── ...

🤝 Contributing

We welcome contributions to AudioUI! Whether it's new components, bug fixes, or documentation improvements.

  1. Fork the repository
  2. Create your feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m 'Add some amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

Please see our contributing guidelines for more details.

🔄 Development Workflow

# Clone the repository
git clone https://github.com/profmitchell/AudioUI.git
cd AudioUI

# Install dependencies
pnpm install

# Start the development server
pnpm dev

# Build for production
pnpm build

# Deploy to GitHub Pages
pnpm deploy:pages

📝 License

AudioUI is MIT licensed.

🏢 Created By

Cohen Concepts - Building the future of audio software interfaces. Mitchell Cohen - Professor of Electronic Music Production and Sound Design at Berklee College of Music in Boston.