Skip to content

Latest commit

 

History

232 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Drums-Engine-MIDI

Moteur embarque temps reel pour percussion robotisee, pilote par MIDI, avec configuration via interface web sur ESP32.

Base active

  • Le code firmware actif est dans engine/.
  • La documentation projet est centralisee dans docs/.

Demarrage rapide

PlatformIO (recommande)

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

Arduino IDE 2.x

  1. Ouvrir engine/engine.ino
  2. Installer les libs requises (voir docs/deployment-guide.md)
  3. Board: ESP32 Dev Module
  4. 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.

Tests API

# 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.

Architecture

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.

General-Midi-Boop automatic recognition

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.

Documentation

Licence

Projet distribue sous licence MIT (voir LICENSE).

About

Modular ESP32 real-time engine for MIDI-controlled robotic percussion, with configurable actuators, sequencing and an embedded web interface.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages