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

bluesharp-pitch-detection

v3.5.0

Published

High-accuracy pitch detection algorithms for musical applications

Downloads

9

Readme

Bluesharp Bending App

Bluesharp Bending App is a software tool designed to help beginners learn to bend notes on a harmonica by visualizing the notes being played.

Or download the latest APK from the Releases Section.


🎥 Live Demo

See how Let's Bend detects and visualizes bent notes in real time:

Let's Bend – Demo


Project Goal

The main goals of the Bluesharp Bending App are:

  • Learn Note Bending: Create a user-friendly application that helps beginners practice and master bending notes on the harmonica.
  • Scale Training: Provide an effective tool for scale training to improve musical knowledge and harmonica technique.
  • Multi-Platform Support: Make the app available on all common operating systems (macOS, Debian Linux, Windows, and Android).
  • Scalable UI: Ensure a scalable application window for flexible use, allowing users to practice comfortably even while multitasking or using devices with different screen sizes.
  • Support for Different Tunings and Keys: Include support for all harmonica keys and the most common special tunings.

Versions Overview

The Bluesharp Bending App includes two main versions:

Desktop Version:

  • Supported operating systems: macOS, Debian Linux, Windows.

Android Version:

  • Developed specifically for mobile devices.

Project Structure

The project is divided into several subprojects to keep development modular and maintainable. Below is an overview:

1. Base (base)

  • A shared Gradle project for both the desktop and Android versions.
  • Developed using the Model-View-Controller (MVC) pattern.
  • Contains all platform-independent components of the application.

2. Desktop (desktop)

  • Gradle project for the desktop version (macOS, Debian, Windows).
  • Uses the standard classes from javax.sound.sampled.* to access the microphone.
  • Microphone data is not persisted; instead, the following is computed in real-time:
    • Frequency,
    • Volume.
  • User interfaces are implemented using JavaFX, providing a modern, platform-independent GUI framework.

3. Android (android)

  • Gradle project developed for Android.
  • Leverages the MediaRecorder standard library for microphone access.
  • Similar to the desktop version, the audio stream is analyzed in real-time for frequency determination without persisting the data.

4. WebApp (webapp)

  • A Spring Boot-based responsive website accompanying the app.
  • Key functionalities:
    • Hosting the required privacy policy for the Android app.
    • Language switching based on the AcceptHeaderLocaleResolver.
    • Automatically displays content in English or German based on browser settings.
    • WebVersion: Includes a web-based version of the application, allowing users to practice bending notes on harmonicas directly in their browser without requiring any installation. This version features:
      • Real-time microphone access for frequency detection.
      • Temporary analysis of audio data without storing it, ensuring privacy.
      • Support for understanding and improving note bending techniques.

5. NPM Package (npm)

  • A JavaScript package published on npm as bluesharp-pitch-detection.
  • Provides high-accuracy pitch detection algorithms for musical applications, with a focus on harmonica and other instruments.
  • Key features:
    • Multiple pitch detection algorithms:
      • YIN: Excellent for vocal and monophonic instrument detection
      • MPM: Modified Phase Matching for improved accuracy
      • FFT: Fast Fourier Transform-based detection
      • Hybrid: Combines multiple algorithms for optimal results
    • Chord detection capabilities
    • Note utilities for frequency-to-note conversion
    • Web Audio API integration with AudioWorklet support
    • Optimized for real-time applications
  • Used by the web version of the application and can be integrated into other web-based music applications.
  • Automatically published to npm after successful releases via GitHub Actions workflow.

Live Demos & Example Usage:
Try the pitch detection algorithms directly in your browser:


Build Instructions

The build process for the desktop variants no longer requires platform-specific Maven projects or jpackage configurations. Instead, Gradle is now used to provide a unified and simplified build configuration for all platforms.

General Build Instructions

  1. Install JDK 17 or higher on your system.

  2. Clone the repository and navigate to the project directory.

    git clone <repository-url>
    cd <repository-name>
  3. Build the project using Gradle:

    gradle clean build

The build artifacts will be found in the build directories of the respective subprojects.


Building Platform-Specific Installation Files

The creation of operating system-specific installation files (e.g., deb, .dmg, or .msi) for the desktop variant is now handled using Gradle and integrated build tools. Below are instructions for each platform:

Debian Linux

To create a .deb package for Debian-based systems:

  1. Ensure that a JDK (version 17 or higher) and Gradle are installed on your system.

  2. Install debhelper and other required tools (if not already installed):

    sudo apt-get install -y debhelper dpkg
  3. Run the following Gradle task to generate the .deb package:

    gradle jpackage
  4. The resulting .deb file will be located in the /desktop/build/jpackage/ directory.


Windows

To create a .msi package for Windows:

  1. Install the WiX Toolset Version 3. You can download it here:
    WiX Toolset Download Page.

  2. Ensure the WiX binaries (e.g., candle.exe and light.exe) are added to your system's PATH.

  3. Run the following Gradle task to generate the .msi package:

    gradle jpackage
  4. The resulting .msi file will be located in the /desktop/build/jpackage/ directory.


macOS

To create a .dmg package for macOS:

  1. Ensure you are using a machine with macOS and the necessary developer tools installed.

  2. Add a valid Developer ID Certificate for signing the package. If the app is unsigned, macOS Gatekeeper may block the installation.

  3. Run the following Gradle task to generate the .dmg package:

    gradle jpackage
  4. The resulting .dmg file will be located in the /desktop/build/jpackage/ directory.


Notes:

  • Cross-Platform Builds: Platform-specific builds must be executed on the respective operating system (e.g., .dmg on macOS, .msi on Windows). Cross-compilation for different platforms is not supported.
  • All Gradle tasks apply the same project structure and configurations, ensuring consistency across platforms.

Contribution Guidelines

Contributions to this project are welcome! Follow these steps to contribute:

  1. Fork the repository.
  2. Create a new branch for your changes.
  3. Follow the Development Guidelines for code style, documentation, and testing requirements.
  4. Submit a Pull Request with a clear description of your changes.

⭐ Support the Project

If you find this app helpful, please consider giving it a ⭐ on GitHub – it helps others discover it too!

GitHub stars


License

This project is licensed under the MIT License. See LICENSE for details.


Contact

For questions or feedback: