bluesharp-pitch-detection
v3.5.0
Published
High-accuracy pitch detection algorithms for musical applications
Downloads
9
Maintainers
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:

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
- Multiple pitch detection algorithms:
- 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
Install JDK 17 or higher on your system.
Clone the repository and navigate to the project directory.
git clone <repository-url> cd <repository-name>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:
Ensure that a JDK (version 17 or higher) and Gradle are installed on your system.
Install
debhelperand other required tools (if not already installed):sudo apt-get install -y debhelper dpkgRun the following Gradle task to generate the
.debpackage:gradle jpackageThe resulting
.debfile will be located in the/desktop/build/jpackage/directory.
Windows
To create a .msi package for Windows:
Install the WiX Toolset Version 3. You can download it here:
WiX Toolset Download Page.Ensure the WiX binaries (e.g.,
candle.exeandlight.exe) are added to your system'sPATH.Run the following Gradle task to generate the
.msipackage:gradle jpackageThe resulting
.msifile will be located in the/desktop/build/jpackage/directory.
macOS
To create a .dmg package for macOS:
Ensure you are using a machine with macOS and the necessary developer tools installed.
Add a valid Developer ID Certificate for signing the package. If the app is unsigned, macOS Gatekeeper may block the installation.
Run the following Gradle task to generate the
.dmgpackage:gradle jpackageThe resulting
.dmgfile 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.,
.dmgon macOS,.msion 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:
- Fork the repository.
- Create a new branch for your changes.
- Follow the Development Guidelines for code style, documentation, and testing requirements.
- 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!
License
This project is licensed under the MIT License. See LICENSE for details.
Contact
For questions or feedback:
- Website: letsbend.de
- Support Email: [email protected]
