A web-based metronome.
🥁 View Demo 🪘
- Consistent clock synchronization - any two devices with synchronized clocks will play in sync for a given tempo
- Customizable meter (3/4, 4/4, 6/8, etc)
- Customizable beat patterns (straight, swing, boom-chuck, etc)
- Configurable audio (volume, mute, etc) and customizable sounds
- Customizable visualizations
npm install @chordbook/metronome
import { createMetronome } from '@chordbook/metronome'
const metronome = createMetronome({
tempo: 120.0,
// Callback to visualize the beat
onBeat: note => console.log('Beat:', note) // 0-15
})
// Request access to the web audio API and begin playing the metronome
metronome.start()
// Stop playing the metronome
metronome.stop()
Contributions are welcome!
- Clone this repository:
git clone https://github.com/chordbook/metronome.git
- Install dependencies:
npm install
- Start the development server:
npm run dev
- Open http://localhost:5173/ in your browser
The code derived from @cwilso's classic A tale of two clocks (repo). Thanks to @mattgraham for the idea to synchronize all metronomes for a given tempo using the wall clock.
This project is licensed under the GPLv3.0 license.