Sobre el proyecto

Oh Sheet! es un pipeline de código abierto que convierte canciones en partituras de piano a dos manos. Los usuarios pueden pegar una URL de YouTube, subir audio MP3/WAV o proporcionar un archivo MIDI, y el sistema devuelve una partitura en PDF, MusicXML y MIDI humanizado. El backend está construido con Python y FastAPI. Utiliza yt-dlp para la ingesta de audio, Demucs para la separación opcional de pistas y Basic Pitch de Spotify para la transcripción de audio a MIDI. Una etapa de arreglo personalizada asigna la melodía a la mano derecha y el bajo/armonía a la mano izquierda. Una etapa de humanización añade micro-timing, dinámicas de velocidad, marcas de pedal y articulaciones. El grabado utiliza por defecto un pipeline en proceso con music21 y LilyPond que produce MusicXML y PDF; un servicio remoto opcional de grabado por HTTP puede usarse como respaldo. El frontend es una aplicación Flutter con un visor interactivo de partituras impulsado por OpenSheetMusicDisplay (OSMD) y reproducción con Tone.js. También incluye un piano roll personalizado basado en canvas con manos codificadas por colores y una cuadrícula de pulsos sincronizada con el tempo. Los eventos WebSocket transmiten el progreso del pipeline con animaciones de mascota para cada etapa. El proyecto expone una API REST para subir audio o MIDI, enviar trabajos, consultar el estado, transmitir eventos en vivo y descargar artefactos. También están disponibles endpoints de trabajadores por etapa para orquestación externa. El despliegue es compatible mediante Docker Compose, y el repositorio incluye flujos de trabajo de CI, herramientas de evaluación de transcripción sin conexión e integración con la plataforma colaborativa de aprendizaje musical TuneChat.