AdaptiveMetronome is a JUCE MIDI-effect plug-in for studying adaptive timing in ensemble performance. It loads a multi-track MIDI score, turns each note-bearing track into a player, and lets those players perform together using a linear phase-correction timing model. Players can be virtual, human-operated, or a mix of both.
The plug-in was developed as part of the EPSRC-funded Augmented Reality Music Ensemble (ARME) project, with project context on the ARME Adaptive Metronome demo page. ARME's immersive rehearsal work is also connected with the University of Birmingham Virtual Reality Lab. It is useful for demonstrations, experiments, and teaching around musical synchronisation, human-machine ensemble interaction, and timing variability in chamber music.
- Runs as an Audio Unit MIDI effect on macOS and as a VST3 MIDI effect on Windows.
- Loads a MIDI score and creates one player per MIDI track that contains notes.
- Supports 0-4 human-operated players, with the remaining players simulated.
- Lets the user set per-player MIDI channel, volume, delay, motor-noise standard deviation, timekeeper-noise standard deviation, and pairwise alpha/beta timing correction values.
- Starts each performance with four guide tones, then plays the loaded score in time with the host DAW.
- Records onset timing, intervals, delays, model parameters, and user-input flags to CSV files in the user's Documents folder.
- Download a packaged build from the repository's GitHub Releases.
- Install the plug-in for your DAW:
- macOS Audio Unit:
Macintosh HD/Library/Audio/Plug-Ins/Components - Windows VST3:
C:\Program Files\Common Files\VST3
- macOS Audio Unit:
- Download the example Haydn MIDI file from maxdiluca/haydn_midi.
- Add AdaptiveMetronome as a MIDI effect before a software instrument.
- Set the number of human players, press Load MIDI, and choose the score.
- Start DAW playback. After the four guide tones, tap along to trigger the human player's notes.
Detailed DAW walkthroughs are in Installation And DAW Setup.
- Prepare a MIDI file with one note-bearing track per ensemble player.
- Load the file into AdaptiveMetronome.
- Choose how many players are human-operated. Human players are assigned to the first note-bearing tracks in the MIDI file.
- Set the timing parameters for each virtual player and the pairwise alpha/beta matrices.
- Run the performance from the DAW transport.
- Collect the generated
Log_HH-MM-SS_DDMonYYYY.csvfile from the Documents folder and analyse onset timing, asynchronies, and model settings.
See User Guide for parameter definitions and log-column notes, and Timing Model for equations, defaults, units, and citations.
AdaptiveMetronome is a JUCE project defined by AdaptiveMetronome.jucer. To build it yourself:
- Install JUCE and open the project in Projucer.
- Check that the JUCE module paths match your local JUCE installation.
- Save the project to generate the IDE files.
- Build the Release target in Xcode on macOS or Visual Studio 2022 on Windows.
More detailed build notes are in Building.
If you use AdaptiveMetronome in a publication, performance study, teaching resource, or derived software project, please cite the software and the exact version or commit you used.
This repository includes CITATION.cff, so GitHub can generate a citation from the Cite this repository button. Additional wording for papers and methods sections is in Citing AdaptiveMetronome.
This repository also includes a local copy of the related RPPW19 workshop abstract: Adaptive Metronome: A MIDI Plug-In for Modelling Cooperative Timing in Music Ensembles. Full citation wording is in Citing AdaptiveMetronome.
- Sean Enderby
- Ryan Stables
- Massimiliano Di Luca (m.diluca@bham.ac.uk)
- ARME project
- ARME Adaptive Metronome demo
- University of Birmingham Virtual Reality Lab
- Virtual Reality Lab research-portal entry
- University of Birmingham ARME/virtual orchestra rehearsal news
- Massimiliano Di Luca
- Massimiliano Di Luca at the University of Birmingham
- Installation And DAW Setup: Logic Pro and REAPER setup.
- User Guide: controls, MIDI preparation, and log output.
- Timing Model: equations, defaults, units, and citations.
- Building: source-build workflow for JUCE, Xcode, and Visual Studio.
- Troubleshooting: common installation, audio, MIDI, tapping, logging, and build issues.
- Contributing: what to include in issues and pull requests.
- Authors: software authors and project cross-references.
- Maintainer Checklist: steps that would make the project easier to redistribute, archive, and cite.
No software license is currently declared in this repository. Until a license is added, assume that redistribution and modification require permission from the maintainers or the relevant institution. The maintainer checklist includes this as a high-priority repository task.
AdaptiveMetronome was developed by the ARME project team. The project describes and supports simulation of synchronisation among musicians, including quartet performance scenarios based on a Haydn MIDI score. Related immersive rehearsal research is supported by the University of Birmingham Virtual Reality Lab.