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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@deskthing/microphone

v0.11.2

Published

A simple microphone daemon and websocket wrapper for streaming audio chunks to and from the Car Thing. Some ADB configuration is required as well as access to SupervisorCTL.

Downloads

260

Readme

DeskThing-Mic

A lightweight NPM package for configuring and utilizing a microphone on the Car Thing device or other websites.

Getting Started

Installation

To install the package, run:

npm install @deskthing/microphone

Daemon Configuration

After installation, configure the daemon on your Car Thing device. This can be accomplished by executing the install script from @deskthing/microphone/utils. Ensure that ADB is installed and available in your system's PATH. If ADB is already in your PATH, you may omit the adbPath option.

Example Implementation

import { install, InstallConfig } from '@deskthing/microphone/utils';

const config: InstallConfig = {
  adbPath: 'C:/path/to/adb.exe',
  clientId: 'ADBclientIdString'
};

const loggingCallback = (message: string) => {
  console.log(message);
};

install(config, loggingCallback);

Note:
It is recommended to run this script as part of a postinstall.js process to automate Car Thing configuration after package installation.

  • If adbPath is omitted, the program will attempt to use the system environment variables.
  • If clientId is omitted, the default ADB device will be used. This may fail if multiple clients are connected.

Usage

Below are basic usage examples for the @deskthing/microphone package.

Importing the Package

import { audioManager, MicConfig } from '@deskthing/microphone';

Configuring and Starting the Microphone

const micConfig: MicConfig = {
  sampleRate: 16000,
  channelCount: 1,
  bytesPerSample: 2,
  secondsPerChunk: 1,
};

// Configure the microphone
audioManager.configureMic(micConfig);

// Start capturing audio
audioManager.openMic();

// Stop capturing audio
audioManager.closeMic();

Listening for Audio Packets

Audio packets are provided as ArrayBuffer objects. The first 44 bytes contain WAV headers with channel, rate, and other metadata.

audioManager.onAudioPacket((packet: ArrayBuffer) => {
  // Handle the raw audio packet (e.g., send to server, analyze, etc.)
  console.log('Received audio packet:', packet);
});

Listening for Microphone State Changes

audioManager.onMicStateChange((state) => {
  console.log('Mic state changed:', state);
});

Retrying the Audio Backend

This may be necessary for debugging purposes.

await audioManager.retryBackend();

These examples demonstrate how to configure the microphone, manage audio capture, and listen for audio data or state changes. For advanced usage, refer to the API documentation or review the source code.

Features

  • [x] Web microphone fallback
  • [x] Daemon support
  • [x] Supervisor configuration
  • [x] Post-install process
  • [x] Automatic reconnection
  • [ ] Additional features coming soon

Publishing

This project uses a CI workflow to build artifacts and publish the package to npm when a GitHub release matching the package version is created.

# Bump patch / minor / major version
npm version patch -m "Release v%s"
git push origin main
git push --tags