Skip to content

Building the next generation of BPM analysis: from browser extensions to AI-powered detection - help us revolutionize music tempo analysis.

License

Notifications You must be signed in to change notification settings

dlepaux/allegro-project

Repository files navigation

🎡 Allegro - Professional BPM Analysis Showcase

GitHub realtime-bpm-analyzer Next.js

Allegro is a comprehensive showcase application demonstrating the power of the realtime-bpm-analyzer library. This Next.js application provides professional-grade BPM analysis tools for music producers, DJs, and audio enthusiasts.

🌐 Live Demo: allegro-project.com

✨ Features

  • πŸ“ File Analysis - Upload and analyze BPM from audio files (MP3, WAV, FLAC)
  • 🎀 Real-time Microphone - Live BPM detection from your microphone input
  • πŸ“» Audio Stream Analysis - Analyze BPM from online radio streams and URLs
  • πŸ“Š Visual Analytics - Real-time audio visualization and BPM tracking
  • πŸ“± Mobile Responsive - Fully optimized for mobile devices with touch-friendly UI
  • 🎨 Modern UI - Beautiful glassmorphic design with smooth animations

πŸš€ Powered by realtime-bpm-analyzer

This application showcases the capabilities of the realtime-bpm-analyzer library:

npm install realtime-bpm-analyzer

Key Library Features:

  • ⚑ Real-time processing - Analyze BPM as audio streams
  • 🎯 High accuracy - Advanced algorithms for precise BPM detection
  • πŸ”„ Multiple input sources - Files, streams, microphone, audio nodes
  • 🌐 Web Audio API - Leverages modern browser capabilities
  • πŸ“¦ Zero dependencies - Lightweight and performant
  • πŸŽ›οΈ Configurable - Customizable analysis parameters

Quick Usage Example:

import { createRealtimeBpmAnalyzer } from 'realtime-bpm-analyzer';

// Create audio context and processor
const audioContext = new AudioContext();
const analyzer = await createRealtimeBpmAnalyzer(audioContext);

// Connect to audio source
source.connect(analyzer);

// Listen for BPM events with typed listeners
analyzer.on('bpm', (data) => {
  console.log('Current BPM:', data.bpm[0].tempo);
});

analyzer.on('bpmStable', (data) => {
  console.log('Stable BPM detected:', data.bpm[0].tempo);
});

πŸ› οΈ Installation & Development

Prerequisites

  • Node.js 22+
  • npm or yarn or pnpm

Quick Start

  1. Clone the repository

    git clone https://github.com/dlepaux/allegro.git
    cd allegro
  2. Install dependencies

    npm install
    # or
    yarn install
    # or
    pnpm install
  3. Start development server

    npm run dev
    # or
    yarn dev
    # or
    pnpm dev
  4. Open your browser

    http://localhost:3000
    

🎯 Use Cases & Applications

For Music Producers

  • Track Analysis - Quickly determine BPM of samples and loops
  • Tempo Matching - Find tracks with similar BPMs for mashups
  • Live Recording - Real-time BPM monitoring during performances

For DJs

  • Beatmatching - Precise BPM detection for seamless mixing
  • Set Preparation - Batch analyze music libraries
  • Live Analysis - Real-time BPM detection during sets

For Developers

  • Integration Examples - See how to implement realtime-bpm-analyzer
  • Best Practices - Learn optimal Web Audio API usage patterns
  • Performance Optimization - Understand efficient audio processing

🀝 Contributing

We welcome contributions! This project serves as both a showcase for realtime-bpm-analyzer and a testing ground for new features.

Development Guidelines

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Follow the existing code style (ESLint + TypeScript)
  4. Test thoroughly across different audio sources
  5. Update documentation if needed
  6. Submit a pull request

Areas for Contribution

  • 🎨 UI/UX improvements - Enhance the user interface
  • πŸ“Š New visualizations - Create audio analysis charts
  • πŸ”§ Performance optimizations - Improve audio processing
  • πŸ“± Mobile enhancements - Better touch interactions
  • 🌐 Accessibility - Improve screen reader support
  • πŸ§ͺ Testing - Add unit and integration tests

πŸ“– realtime-bpm-analyzer Documentation

Official Resources

Advanced Usage Patterns

// File analysis - Offline/synchronous analysis
import { analyzeFullBuffer } from 'realtime-bpm-analyzer';
const tempos = await analyzeFullBuffer(audioBuffer);
console.log('BPM:', tempos[0].tempo);

// Custom filtering for better bass detection
import { getBiquadFilter } from 'realtime-bpm-analyzer';
const filter = getBiquadFilter(audioContext);
source.connect(filter).connect(analyzer);

// Real-time stream processing with typed events
analyzer.on('bpm', (data) => {
  console.log('Analyzing...', data.bpm[0].tempo);
});

analyzer.on('bpmStable', (data) => {
  console.log('Stable BPM detected:', data.bpm[0].tempo);
  console.log('Confidence:', data.bpm[0].count);
});

// Continuous analysis for streams (auto-resets)
const streamAnalyzer = await createRealtimeBpmAnalyzer(audioContext, {
  continuousAnalysis: true,
  stabilizationTime: 20000 // Reset every 20 seconds
});

streamAnalyzer.on('analyzerReset', () => {
  console.log('Analyzer reset - starting fresh analysis');
});

πŸ“„ License

This project is licensed under the Apache License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • realtime-bpm-analyzer - The core BPM detection engine
  • Web Audio API - Modern browser audio processing capabilities
  • Next.js Team - Amazing React framework
  • Tailwind CSS - Utility-first CSS framework

🌐 Visit Live Demo β€’ πŸ“¦ NPM Package β€’ πŸ™ GitHub

Built with ❀️ for the audio development community

About

Building the next generation of BPM analysis: from browser extensions to AI-powered detection - help us revolutionize music tempo analysis.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages