À propos du projet

Oh Sheet ! est un pipeline open source qui convertit des chansons en partitions de piano à deux mains. Les utilisateurs peuvent coller une URL YouTube, importer un fichier audio MP3/WAV ou fournir un fichier MIDI, et le système renvoie une partition PDF, du MusicXML et un MIDI humanisé. Le backend est construit avec Python et FastAPI. Il utilise yt-dlp pour l'ingestion audio, Demucs pour la séparation optionnelle des pistes et Basic Pitch de Spotify pour la transcription audio vers MIDI. Une étape d'arrangement personnalisée attribue la mélodie à la main droite et la basse/l'harmonie à la main gauche. Une étape d'humanisation ajoute des micro-timings, des dynamiques de vélocité, des indications de pédale et des articulations. La gravure utilise par défaut un pipeline interne music21 et LilyPond qui produit du MusicXML et du PDF ; un service de gravure HTTP distant optionnel peut être utilisé comme solution de repli. Le frontend est une application Flutter avec une visionneuse de partitions interactive propulsée par OpenSheetMusicDisplay (OSMD) et la lecture Tone.js. Il comprend également un piano roll personnalisé basé sur canvas avec des mains codées par couleur et une grille de temps synchronisée au tempo. Des événements WebSocket diffusent la progression du pipeline avec des animations de mascotte pour chaque étape. Le projet expose une API REST pour importer de l'audio ou du MIDI, soumettre des tâches, interroger l'état, diffuser des événements en direct et télécharger les artefacts. Des points de terminaison de travailleurs par étape sont également disponibles pour une orchestration externe. Le déploiement est pris en charge via Docker Compose, et le dépôt comprend des workflows CI, des outils d'évaluation de transcription hors ligne et une intégration avec la plateforme collaborative d'apprentissage musical TuneChat.