Piano adapt est une application permet de convertir des partitions PDF en format interactif pour apprendre le piano de manière ludique, soit via un navigateur, soit via le logiciel desktop (Electron).
Logiciel à télécharger avant tout : https://github.com/Audiveris/audiveris/releases
- Frontend : React + Tailwind CSS (Interface de jeu & Rendu SVG)
- Backend : FastAPI + SQLite (Gestion des partitions & API Eye-tracking)
- OMR Engine : Audiveris (Conversion PDF vers MusicXML)
- IA Logic : Music21 (Analyse de la structure musicale)
- Desktop : Electron (Encapsulation logicielle)
Le frontend interroge le backend toutes les 150ms. Ton script doit envoyer les états en POST à l'adresse suivante :
http://localhost:8000/api/update-eye-data
Format attendu :
{
"looking_at_keyboard": boolean,
"is_distracted": boolean,
"is_fixation": boolean
}Tu peux changer mais faudra adapter à toi de voir
- Node.js (v18 ou +)
- Python (3.9 ou +)
- WSL2 (Ubuntu) installé
- Audiveris installé sur Windows (Chemin par défaut :
C:\Program Files\Audiveris\Audiveris.exe)
Note : Ce terminal gère le serveur API et la conversion des partitions.
cd piano-adapt/backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --reloadÀ la racine du projet :
npm install # (si c'est pas installé)
npm startAttendre que l'application s'ouvre dans le navigateur sur le port 3000.
Si vous souhaitez la version desktop Electron :
À la racine du projet, une fois le frontend lancé
npm run electronComme Mac n'utilise pas WSL, il faut modifier ces deux points dans backend/main.py :
-
Il faut modifier AUDIVERIS_BIN pour pointer vers : /Applications/Audiveris.app/Contents/MacOS/Audiveris.
-
et remplacer la fonction de conversion de chemin WSL par une fonction qui retourne le chemin absolu :
def wsl_path_to_windows(linux_path: str) -> str:
return os.path.abspath(linux_path)Terminal 1 (Backend) : cd backend && source venv/bin/activate && uvicorn main:app --reload Terminal 2 (Frontend) : npm install (que la premiere fois) && npm start Terminal 3 (Logiciel) : npm run electron