Skip to content
generated from sudara/pamplejuce

Interactive metronome audio plugin with tempo control, custom time signatures, beat visualization, and multiple click sounds for precise musical timing

License

Notifications You must be signed in to change notification settings

lbartoletti/BeatIt

Repository files navigation

BeatIt - Multi Platform Metronome Plugin

MIT License

[BeatIt Screenshot]

Overview

BeatIt is a multi-platform metronome plugin and standalone app built with JUCE framework. CI and CMake come from the incredible PampleJuce template. It offers precise timing, extensive customization options, and an intuitive interface that seamlessly integrates into any modern DAW workflow.

Key Features

  • Precise Tempo Control:

    • BPM range: 1-500
    • High-precision tap tempo functionality
    • Visual feedback for active beats
  • Advanced Time Signature Support:

    • Customizable time signatures (1-16 beats per bar)
    • Support for complex meters (1, 2, 4, 8 denominators)
    • Extensive subdivision patterns including:
      • Simple divisions (half, quarter notes)
      • Triplet patterns
      • Rest patterns
      • Complex combinations (e.g., eighth + two sixteenths)
    • Individual beat muting capabilities
  • Sound Options:

    • Distinct sound selection for first and subsequent beats
    • High-quality click sounds:
      • High Click: 1500Hz, 30ms duration
      • Low Click: 800Hz, 20ms duration
      • Mute option for silent beats
    • Rest handling options:
      • Same as Beat: Maintains beat sound pattern
      • Rest "Sound": Low frequency (200Hz) for rest identification
      • Mute: Silent rests
    • Muting capability for any beat in the pattern
  • Visual Feedback:

    • Real-time beat visualization
    • Active beat highlighting
    • Clear tempo display
  • DAW Integration:

    • Full automation support
    • Parameter saving/recall
    • Low CPU usage

Installation

System Requirements

  • Windows 10/11 or macOS 10.13+
  • VST3, LV2, AU, or AAX compatible DAW
  • 64-bit system
  • Minimum 4GB RAM
  • Any CPU from 2015 or newer

Installation Steps

  1. Download the latest release for your platform
  2. Run the installer package
  3. Restart your DAW
  4. The plugin will appear in your DAW's plugin list under "Effects > BeatIt"

Building from Source

Prerequisites

  • JUCE Framework (8.0.0 or later)
  • C++20 compatible compiler
  • CMake 3.15 or later
  • Git

Build Instructions

  1. Clone the repository:
git clone --recursive https://github.com/lbartoletti/BeatIt.git
cd BeatIt

Using Projucer: 2. Open in Projucer:

  • Launch Projucer
  • Open Metronome.jucer
  • Select your IDE and click "Save and Open in IDE"
  1. Build the project:
  • For Visual Studio: Open the solution and build in Release mode
  • For Xcode: Select the target and build
  • For Linux: Use the provided Makefile

Using CMake: 2. Open your IDE or build it with cmake -S . -B build && cmake --build build

Usage Guide

Basic Operation

  1. Setting the Tempo:

    • Drag the BPM slider (range: 1-500)
    • Use mouse wheel for fine adjustments
    • Click the tap tempo button rhythmically
  2. Time Signature Configuration:

    • Select beats per bar (1-16)
    • Choose beat denominator (1, 2, 4, 8)
    • Select subdivision pattern (simple, triplet, or with rests)
  3. Sound Customization:

    • First beat sound: Select from High/Low click or Mute
    • Other beats sound: Independent High/Low/Mute selection
    • Rest sound: Choose between Same as Beat, Rest Sound, or Mute
    • Mute specific beats by clicking their visualizers

Advanced Features

  1. Beat Pattern Customization:
    • Click on beat visualizers to mute/unmute
    • Create complex patterns by selective muting
    • Choose from various subdivision patterns:
      • Regular subdivisions
      • Patterns with rests
      • Triplet variations
    • Patterns save with your project

Technical Documentation

Core Components

MetronomeAudioProcessor

The main processing class handling:

  • Audio generation and timing
  • Parameter management
  • State persistence
  • Beat pattern processing

Key methods:

void prepareToPlay(double sampleRate, int samplesPerBlock)
void processBlock(juce::AudioBuffer<float>&, juce::MidiBuffer&)
void updateTimingInfo()
bool isBeatMuted(int beatIndex)

MetronomeAudioProcessorEditor

The UI component providing:

  • Visual interface
  • User interaction handling
  • Real-time display updates
  • Control binding

Key methods:

void paint(juce::Graphics&)
void updateBeatVisualizers()
void handleBeatVisualizerClick(int beatIndex)

Audio Architecture

  1. Click Sound Generation:
  • High click: 1500 Hz, 30ms duration
  • Low click: 800 Hz, 20ms duration
  • Applied envelope shaping for clean sound
  1. Timing System:
  • Sample-accurate beat timing
  • Adaptive sample rate handling
  • Internal position tracking

Performance Considerations

  • Optimized click sound generation
  • Minimal CPU usage during playback
  • Zero-latency operation
  • Efficient state management

Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch
  3. Implement your changes
  4. Add tests if applicable
  5. Submit a pull request

Code Style Guidelines

  • Follow JUCE coding standards
  • Use meaningful variable names
  • Comment complex algorithms
  • Include documentation for public methods

License

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

Support

  • GitHub Issues: Bug reports and feature requests

© 2024 BeatIt Plugin. All rights reserved.

About

Interactive metronome audio plugin with tempo control, custom time signatures, beat visualization, and multiple click sounds for precise musical timing

Resources

License

Stars

Watchers

Forks

Packages

No packages published