Moteur embarque temps reel pour percussion robotisee, pilote par MIDI, avec configuration via interface web sur ESP32.
- Le code firmware actif est dans
engine/. - La documentation projet est centralisee dans
docs/.
cd engine
pio run # Compiler
pio run -t upload # Flasher firmware
pio run -t uploadfs # Uploader UI web (LittleFS)L'interface web servie par le firmware est embarquee en PROGMEM. Apres toute
modification de engine/data/index.html, regenerez l'en-tete embarque :
python3 tools/gen_index_gz.py- Ouvrir
engine/engine.ino - Installer les libs requises (voir
docs/deployment-guide.md) - Board: ESP32 Dev Module
- Compiler (Ctrl+R) et flasher (Ctrl+U)
Au premier boot, l'ESP32 demarre en mode AP (MidiPerc-Setup/midiperc).
Connectez-vous et configurez le WiFi via POST /api/wifi.
# Lancer les 31 tests automatises contre l'ESP32
./tests/test_api.sh http://midipercussion.local [API_TOKEN]Le token est affiche au boot sur Serial ou via GET /api/auth-token.
Core 1 (RT 1kHz) Core 0 (App)
┌────────────────────┐ ┌──────────────────┐
│ MIDI Layer │ │ Web Server REST │
│ Event Processor │ │ Loop Engine │
│ Scheduler │ │ WiFi Manager │
│ Actuator Manager │ │ Storage LittleFS │
│ HAL Drivers │ └──────────────────┘
└────────────────────┘
Protections concurrence : spinlocks dual-core, mutex I2C, ISR atomique, ecriture LittleFS atomique.
Quand ce moteur apparait sur une liaison MIDI, General-Midi-Boop le reconnait et se configure tout seul : canal de percussion, notes reellement jouables, CC routes, polyphonie, timing, contraintes mecaniques. Aucune saisie manuelle cote Raspberry Pi.
ESP32 demarre -> charge la configuration percussion -> construit son descripteur
GMB envoie le bloc 0x01 -> handshake v2 (24 octets, identite unique par carte)
GMB telecharge le descripteur (bloc 0x10, ou GET /gmb/descriptor.json)
vous editez la configuration -> revision++ -> bloc 0x11 -> GMB se remet a jour
La configuration Drums-Engine est la seule source de verite : tout ce qui est annonce en est derive, il n'y a pas de fichier de capacites a maintenir en parallele. La revision n'augmente que si les capacites changent reellement — une edition d'interface qui ne change rien de musical ne coute ni notification ni cycle de flash.
Diagnostique : onglet Traitement MIDI de l'interface web, ou
GET /api/gmb/status. Detail complet : docs/gmb-protocol.md.
- Index documentation:
docs/README.md - Etat des lieux actuel:
docs/system-status.md - Architecture technique:
docs/architecture.md - API web:
docs/web-api.md - Reconnaissance General-Midi-Boop:
docs/gmb-protocol.md - Scheduler temps reel:
docs/realtime-scheduler.md - Guide de deploiement:
docs/deployment-guide.md - Page Cablage (branchements generes):
docs/wiring-page.md - Audit production:
docs/production-readiness.md - Roadmap:
docs/roadmap.md
Projet distribue sous licence MIT (voir LICENSE).