Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Mad Science npm Packages
  3. doppler

doppler

MITJavaScript

A web implementation of the SoundWave paper that detects motion using the Doppler effect with microphone and speakers.

Visit WebsiteGitHubGitHub
2.4k stars176 forks0 contributors

What is doppler?

Doppler is a JavaScript library that implements motion detection using the Doppler effect in web browsers. It enables touchless interaction by emitting an inaudible tone through speakers and detecting frequency shifts caused by moving objects using the microphone. This creates possibilities for gesture-based interfaces without requiring specialized hardware.

Target Audience

Web developers and researchers interested in creating touchless interfaces, experimenting with alternative input methods, or exploring the capabilities of browser audio APIs for motion sensing applications.

Value Proposition

Doppler provides a pure JavaScript implementation of academic research (Microsoft's SoundWave paper) that makes motion detection accessible using standard web technologies. Unlike camera-based solutions, it works with just microphone and speakers, offers privacy advantages, and demonstrates sophisticated signal processing in the browser.

Overview

:wave: Motion detection using the doppler effect

Use Cases

Best For

  • Creating touchless gesture controls for web applications
  • Experimenting with alternative input methods using audio
  • Educational projects demonstrating the Doppler effect in practice
  • Prototyping motion-sensitive interfaces without hardware
  • Research projects exploring browser-based sensing capabilities
  • Building interactive demos that work with standard computer audio

Not Ideal For

  • Production applications requiring consistent cross-browser motion detection, especially on Firefox
  • Noisy environments where background audio interference could disrupt frequency analysis
  • Projects needing immediate, high-accuracy gesture recognition without signal processing tweaks
  • Teams without audio signal processing expertise to handle robustness improvements

Pros & Cons

Pros

Research-Backed Implementation

Directly implements Microsoft's SoundWave paper, providing an academically validated approach to motion detection using web technologies without hardware.

Hardware-Free Sensing

Uses only standard microphone and speakers, enabling touchless interactions without specialized cameras or sensors, as highlighted in the README.

Web Standards Based

Leverages Web Audio API and getUserMedia, ensuring compatibility with modern browsers that support these APIs, as noted for cross-platform use.

Community Extensions

Has active derivatives like an Android version and Chrome extension, demonstrating real-world interest and practical applications beyond the core library.

Cons

Firefox Incompatibility

Does not work on Firefox due to lack of echoCancellation: false support in getUserMedia, severely limiting browser coverage.

Experimental Robustness

READEME admits missing features from the original paper, such as handling fast hand movements and using multiple sinusoids, reducing accuracy.

Server Setup Required

Cannot run on local filesystem; requires starting a server (e.g., with Python), adding complexity for quick prototyping or testing.

Sparse Documentation

Only provides basic usage examples, with advanced adjustments and contributions needed for improvements, leaving developers to figure out details.

Frequently Asked Questions

Quick Stats

Stars2,392
Forks176
Contributors0
Open Issues4
Last commit9 years ago
CreatedSince 2015

Tags

#motion-detection#human-computer-interaction#audio-processing#web-audio-api

Built With

J
JavaScript
W
Web Audio API

Links & Resources

Website

Included in

Mad Science npm Packages1.2k
Auto-fetched 8 hours ago

Related Projects

speak.jsspeak.js

Text-to-Speech in JavaScript

Stars278
Forks36
Last commit8 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub