Skip to content

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

 
 
 

Contributors

Languages