프로젝트 소개
Oh Sheet!은 노래를 양손 피아노 악보로 변환하는 오픈소스 파이프라인입니다. 사용자는 YouTube URL을 붙여넣거나 MP3/WAV 오디오를 업로드하거나 MIDI 파일을 제공할 수 있으며, 시스템은 PDF 악보, MusicXML, 그리고 인간적인 느낌의 MIDI를 반환합니다.
백엔드는 Python과 FastAPI로 구축되었습니다. 오디오 수집에는 yt-dlp, 선택적 스템 분리에는 Demucs, 오디오-투-MIDI 변환에는 Spotify의 Basic Pitch를 사용합니다. 커스텀 편곡 단계에서 멜로디는 오른손에, 베이스/하모니는 왼손에 할당합니다. 휴먼화 단계에서는 마이크로 타이밍, 벨로시티 다이내믹, 페달 표시, 아티큘레이션을 추가합니다. 악보 조판은 기본적으로 프로세스 내 music21 및 LilyPond 파이프라인을 사용하여 MusicXML과 PDF를 생성하며, 선택적으로 원격 HTTP 조판 서비스를 폴백으로 사용할 수 있습니다.
프론트엔드는 Flutter 애플리케이션으로, OpenSheetMusicDisplay(OSMD)와 Tone.js 재생 기반의 인터랙티브 악보 뷰어를 갖추고 있습니다. 또한 색상으로 구분된 손과 템포 동기화 비트 그리드를 지원하는 커스텀 캔버스 기반 피아노 롤도 포함합니다. WebSocket 이벤트는 각 단계별 마스코트 애니메이션과 함께 파이프라인 진행 상황을 스트리밍합니다.
이 프로젝트는 오디오 또는 MIDI 업로드, 작업 제출, 상태 폴링, 라이브 이벤트 스트리밍, 아티팩트 다운로드를 위한 REST API를 제공합니다. 외부 오케스트레이션을 위한 단계별 워커 엔드포인트도 사용할 수 있습니다. 배포는 Docker Compose를 통해 지원되며, 저장소에는 CI 워크플로, 오프라인 전사 평가 도구, 그리고 TuneChat 협업 음악 학습 플랫폼과의 통합이 포함되어 있습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.