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.
-
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
- 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
- Download the latest release for your platform
- Run the installer package
- Restart your DAW
- The plugin will appear in your DAW's plugin list under "Effects > BeatIt"
- JUCE Framework (8.0.0 or later)
- C++20 compatible compiler
- CMake 3.15 or later
- Git
- Clone the repository:
git clone --recursive https://github.com/lbartoletti/BeatIt.git
cd BeatItUsing Projucer: 2. Open in Projucer:
- Launch Projucer
- Open
Metronome.jucer - Select your IDE and click "Save and Open in IDE"
- 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
-
Setting the Tempo:
- Drag the BPM slider (range: 1-500)
- Use mouse wheel for fine adjustments
- Click the tap tempo button rhythmically
-
Time Signature Configuration:
- Select beats per bar (1-16)
- Choose beat denominator (1, 2, 4, 8)
- Select subdivision pattern (simple, triplet, or with rests)
-
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
- 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
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)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)- Click Sound Generation:
- High click: 1500 Hz, 30ms duration
- Low click: 800 Hz, 20ms duration
- Applied envelope shaping for clean sound
- Timing System:
- Sample-accurate beat timing
- Adaptive sample rate handling
- Internal position tracking
- Optimized click sound generation
- Minimal CPU usage during playback
- Zero-latency operation
- Efficient state management
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch
- Implement your changes
- Add tests if applicable
- Submit a pull request
- Follow JUCE coding standards
- Use meaningful variable names
- Comment complex algorithms
- Include documentation for public methods
This project is licensed under the MIT License - see the LICENSE file for details.
- GitHub Issues: Bug reports and feature requests
© 2024 BeatIt Plugin. All rights reserved.
