곡 보관함과 악보 학습 기능을 보완

업로드 형식을 MIDI와 MusicXML과 MXL 및 PDF로 확장하고 파일별 검증을 추가했다.

AlphaTab 악보 자산과 Nginx MIME 설정을 보완해 운영에서 오선과 음표가 표시되도록 수정했다.

공개 도메인 클래식과 난이도별 연습 편곡 7개를 같은 제목별로 묶고 출처와 운영 검증 결과를 문서화했다.

검사: TypeScript 검사와 Vitest 67개 및 Vite 운영 빌드 통과. 운영 브라우저 악보 표시와 네 가지 업로드 검증 형식 확인.
백업: /home/syskiller/piano/backups/bach-to-basics/20261003-1545-sheet-upload
운영 반영: 완료
This commit is contained in:
이창현
2026-10-03 16:15:00 +09:00
parent c918f02685
commit 0522e48013
35 changed files with 83181 additions and 123 deletions
+27
View File
@@ -0,0 +1,27 @@
# 기본 공개 샘플 출처
곡 보관함의 기본 샘플은 Mutopia Project에서 공개 도메인으로 배포하는 MIDI 자료다. 회원이 올린 파일과 구분하기 위해 서버 시작 시 `seed_key`가 있는 기본 자료로 등록한다.
| 표시 제목 | 작곡가 | 원본 페이지 | 파일 | 권리 표시 |
| --- | --- | --- | --- | --- |
| 미뉴에트 사장조 BWV Anh. 114 | 크리스티안 페촐트 | <https://www.mutopiaproject.org/cgibin/piece-info.cgi?id=75> | `minuet-bwv-anh-114.mid` | Public Domain |
| 미뉴에트 내림마장조 WoO 82 | 루트비히 판 베토벤 | <https://www.mutopiaproject.org/cgibin/piece-info.cgi?id=904> | `menuett-woo-82.mid` | Public Domain |
| 엘리제를 위하여 WoO 59 | 루트비히 판 베토벤 | <https://www.mutopiaproject.org/cgibin/piece-info.cgi?id=931> | `fur-elise.mid` | Public Domain |
Mutopia Project의 배포 안내는 <https://www.mutopiaproject.org/legal.html>에서 확인할 수 있다. 원본 악보의 작곡 저작권과 MIDI 조판 자료의 표시를 혼동하지 않도록 각 곡의 원본 페이지도 함께 기록한다.
## 난이도별 연습 편곡
같은 곡을 단계별로 익힐 수 있도록 위 공개 도메인 MIDI에서 다음 연습 편곡을 만들었다. 원곡의 제목과 작곡가는 유지한다. 곡 보관함에서는 같은 제목 아래에 난이도와 형태가 다른 버전으로 표시한다.
| 원곡 | 단계 | 편곡 내용 | 파일 |
| --- | --- | --- | --- |
| 미뉴에트 사장조 BWV Anh. 114 | 입문 | 느린 오른손 선율 | `minuet-bwv-anh-114-beginner.mid` |
| 미뉴에트 사장조 BWV Anh. 114 | 쉬움 | 양손 원곡 | `minuet-bwv-anh-114.mid` |
| 미뉴에트 내림마장조 WoO 82 | 쉬움 | 느린 오른손 선율 | `menuett-woo-82-easy.mid` |
| 미뉴에트 내림마장조 WoO 82 | 중급 | 양손 원곡 | `menuett-woo-82.mid` |
| 엘리제를 위하여 WoO 59 | 입문 | 첫 주제 오른손 선율 | `fur-elise-beginner.mid` |
| 엘리제를 위하여 WoO 59 | 쉬움 | 첫 주제와 단순화한 왼손 근음 | `fur-elise-easy.mid` |
| 엘리제를 위하여 WoO 59 | 고급 | 전체 양손 원곡 | `fur-elise.mid` |
편곡 파일은 `node scripts/build_sample_variants.mjs`로 다시 만들 수 있다. 원본 MIDI가 바뀌면 생성 결과도 달라지므로 반영 전에 파일 크기와 음표 수와 실제 재생을 다시 검사한다.