A MIDI clock driven metronome using the ESP32 LyraT board.
- C 97.9%
- Makefile 1.4%
- CMake 0.7%
|
|
||
|---|---|---|
| components/blemidi | Add audio playback from SD card | |
| main | Fix MIDI Start sync and add Makefile | |
| sdcard | Add audio playback from SD card | |
| .gitignore | Add LED tap tempo metronome for ESP32 LyraT | |
| CLAUDE.md | Add CLAUDE.md project documentation | |
| CMakeLists.txt | Add audio playback from SD card | |
| LICENSE | Initial commit | |
| Makefile | Fix MIDI Start sync and add Makefile | |
| partitions.csv | Add LED tap tempo metronome for ESP32 LyraT | |
| README.md | Fix license | |
| sdkconfig | Add audio playback from SD card | |
| sdkconfig.defaults | Add LED tap tempo metronome for ESP32 LyraT | |
Lyratronome - ESP32 LyraT Smart Metronome
A precision metronome for the ESP32-LyraT V4.3 audio development board with Bluetooth MIDI synchronization.
Features
- Standalone Mode: Internal clock with tap tempo
- Bluetooth MIDI Sync: Automatically syncs to DAW transport and tempo
- Audio from SD Card: Custom accent and click sounds
- Volume Control: Hardware buttons for real-time adjustment
- LINE IN Pass-through: Mix external audio with click track
Hardware
- ESP32-LyraT V4.3 board
- SD card with WAV samples
- ES8388 audio codec
Button Functions
| Button | Function |
|---|---|
| Play | Start/Stop metronome |
| Set | Tap tempo (2-4 taps) |
| Vol+ | Increase click volume |
| Vol- | Decrease click volume |
SD Card Setup
Place these files in the SD card root:
accent.wav- Downbeat sound (beat 1)click.wav- Regular beat sound (beats 2-4)
Audio Format: PCM, 16-bit, 48kHz, mono or stereo, ~50-200ms duration
BLE MIDI
The metronome appears as "Lyratronome" to BLE MIDI hosts. When connected:
- Press Play in your DAW
- Metronome syncs to MIDI clock
- Tempo follows DAW changes
Supported MIDI messages:
0xF8Clock (24 PPQ)0xFAStart0xFBContinue0xFCStop
Building
Prerequisites
Setup
# Set up ESP-IDF environment
. $IDF_PATH/export.sh
# Set up ESP-ADF
export ADF_PATH=/path/to/esp-adf
# Build
idf.py build
# Flash and monitor
idf.py -p /dev/ttyUSB0 flash monitor
Configuration
Edit settings in idf.py menuconfig under "Lyratronome Configuration":
| Setting | Default | Description |
|---|---|---|
| Default BPM | 120 | Startup tempo |
| Min/Max BPM | 30-300 | BPM range |
| Default Volume | 70 | Startup volume (0-100) |
| Volume Step | 5 | Change per button press |
| Beats per Bar | 4 | Time signature |
| Tap Timeout | 2000ms | Tap tempo reset time |
| BLE Device Name | "Lyratronome" | Bluetooth name |
Technical Details
SD Card Mode
Uses 1-bit SD mode to free GPIO13 for the Vol- button.
Audio Pipeline
[LINE IN] ─┐
├─ [audio_forge mixer] ─── [DAC output]
[clicks] ─┘
Timing
Uses esp_timer with ISR dispatch for microsecond-precision beat timing.
Core Assignment
- Core 0: BLE stack
- Core 1: Audio processing
License
GPL License - see LICENSE file