비슷한 임시 연습곡 다섯 개를 교체했다. 부르크뮐러와 슈만 원본 30곡의 출처와 권리 정보를 보존했다. 각 MIDI에 양손 연습용 도입부와 마무리를 넣고 난이도를 음표 밀도로 분류했다. MIDI 구조 검사 30개와 서버 격리 테스트 5개를 통과했다. 운영 백업: /home/syskiller/piano/backups/bach-to-basics/20261009-practice-30-intro-ending. 백엔드만 운영에 반영했고 HTTPS 공개 목록과 30개 다운로드를 확인했다. 회원 업로드 2건은 보존됐다. 실제 건반 연주감 검사는 남아 있다.
This commit is contained in:
+16
-50
@@ -108,56 +108,6 @@ def delete_session(token: str | None) -> None:
|
||||
|
||||
|
||||
SAMPLES = (
|
||||
{
|
||||
"storage_name": "starlight-steps-beginner.mid",
|
||||
"title": "별빛 계단",
|
||||
"artist": "ITOSM 피아노 학습실",
|
||||
"description": "약 76초 분량의 직접 만든 입문곡입니다. 오른손은 간단한 선율을 치고 왼손은 근음과 5도를 번갈아 누릅니다. 분산 화음 기법 참고: Bill Hilton의 유튜브 강좌(8AMZph76kqM).",
|
||||
"difficulty": "beginner",
|
||||
"genre": "연습곡",
|
||||
"arrangement": "piano_solo",
|
||||
"tags": ["양손", "입문", "분산 화음", "근음", "5도", "자체 제작"],
|
||||
},
|
||||
{
|
||||
"storage_name": "starlight-steps-easy.mid",
|
||||
"title": "별빛 계단",
|
||||
"artist": "ITOSM 피아노 학습실",
|
||||
"description": "같은 선율의 약 69초 분량 쉬운 버전입니다. 왼손 네 음을 차례로 펼쳐 소리를 풍성하게 만듭니다. 분산 화음 기법 참고: Bill Hilton의 유튜브 강좌(8AMZph76kqM).",
|
||||
"difficulty": "easy",
|
||||
"genre": "연습곡",
|
||||
"arrangement": "piano_solo",
|
||||
"tags": ["양손", "쉬움", "분산 화음", "단계별 연습", "자체 제작"],
|
||||
},
|
||||
{
|
||||
"storage_name": "evening-waltz-beginner.mid",
|
||||
"title": "저녁빛 왈츠",
|
||||
"artist": "ITOSM 피아노 학습실",
|
||||
"description": "약 64초 분량의 직접 만든 왈츠입니다. 왼손은 낮은 음 하나와 같은 음 두 번을 반복하고 오른손은 한 박에 한 음씩 연주합니다.",
|
||||
"difficulty": "beginner",
|
||||
"genre": "왈츠",
|
||||
"arrangement": "piano_solo",
|
||||
"tags": ["양손", "입문", "3박자", "왈츠", "자체 제작"],
|
||||
},
|
||||
{
|
||||
"storage_name": "sunrise-arpeggio-easy.mid",
|
||||
"title": "해돋이 아르페지오",
|
||||
"artist": "ITOSM 피아노 학습실",
|
||||
"description": "약 67초 분량의 직접 만든 연습곡입니다. 오른손 네 음을 차례로 누르는 동안 왼손은 낮은 근음 하나만 유지합니다. 아르페지오 기법 참고: Bill Hilton의 유튜브 강좌(8AMZph76kqM).",
|
||||
"difficulty": "easy",
|
||||
"genre": "연습곡",
|
||||
"arrangement": "piano_solo",
|
||||
"tags": ["양손", "쉬움", "아르페지오", "근음", "자체 제작"],
|
||||
},
|
||||
{
|
||||
"storage_name": "black-key-pentatonic-beginner.mid",
|
||||
"title": "검은 건반 산책",
|
||||
"artist": "ITOSM 피아노 학습실",
|
||||
"description": "약 74초 분량의 직접 만든 입문곡입니다. 검은 건반 다섯 음만으로 선율을 만들고 왼손은 두 음을 번갈아 누릅니다.",
|
||||
"difficulty": "beginner",
|
||||
"genre": "연습곡",
|
||||
"arrangement": "piano_solo",
|
||||
"tags": ["양손", "입문", "검은 건반", "5음 음계", "자체 제작"],
|
||||
},
|
||||
{
|
||||
"storage_name": "minuet-bwv-anh-114-beginner.mid",
|
||||
"title": "미뉴에트 사장조 BWV Anh. 114",
|
||||
@@ -230,11 +180,27 @@ SAMPLES = (
|
||||
},
|
||||
)
|
||||
|
||||
# 별도 목록은 원본 MIDI와 권리 표시를 함께 보관한다. 화면에 쓰는 필드만 기본 샘플에 합친다.
|
||||
PRACTICE_COLLECTION = json.loads(
|
||||
(Path(__file__).with_name("sample_midi") / "practice_collection.json").read_text(encoding="utf-8")
|
||||
)
|
||||
SAMPLES += tuple(
|
||||
{key: item[key] for key in (
|
||||
"storage_name", "title", "artist", "description", "difficulty", "genre", "arrangement", "tags"
|
||||
)}
|
||||
for item in PRACTICE_COLLECTION
|
||||
)
|
||||
|
||||
LEGACY_SAMPLE_KEYS = (
|
||||
"first-snow-melody.mid",
|
||||
"first-snow-accompaniment.mid",
|
||||
"blue-breeze-walk.mid",
|
||||
"little-morning-waltz.mid",
|
||||
"starlight-steps-beginner.mid",
|
||||
"starlight-steps-easy.mid",
|
||||
"evening-waltz-beginner.mid",
|
||||
"sunrise-arpeggio-easy.mid",
|
||||
"black-key-pentatonic-beginner.mid",
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user