Nari

LevelUp Piano — MIDI 피아노 연습 앱 · 블로그

선생님을 위한 도구 — 곡 업로드부터 코칭까지

블로그 목록
기능 소개2026-07-03
프로덕트선생님 기능FlutterKotlin
선생님 대시보드
선생님 대시보드 — 오늘 처리할 일(배정·연락·미연습)과 학생 목록을 한눈에

LevelUp Piano에서 선생님은 단순한 사용자가 아니라 콘텐츠 제작자이자 코치입니다. 곡을 만들고, 학생을 잇고, 진도를 보고, 응원합니다. 이 글은 선생님에게 특화된 기능들을 한 줄로 꿰어봅니다.

4업로드 자동 단계
초대코드학생 연결
레슨·출석수업 관리
코치응원·진단·테스트

MIDI 한 파일에서 연습 곡으로

곡 업로드 화면
곡 업로드 — MIDI 파일을 고르면 파싱 → 오디오 렌더 → 업로드가 자동으로 이어진다

선생님의 출발점은 MIDI 파일 업로드입니다. 파일 하나가 연습 가능한 곡이 되기까지, 앱은 여러 단계를 자동으로 처리합니다.

  1. 파싱 — MIDI를 앱이 이해하는 노트 차트(어떤 음이 언제·얼마나·어느 손인지)로 변환합니다.
  2. 난이도 자동 추정 — 초당 노트 밀도로 Easy/Normal/Hard/Expert를 추천합니다. 선생님은 그대로 쓰거나 바꿉니다.
  3. 온디바이스 렌더링 — 반주 오디오를 1x·0.75x·0.5x 세 속도로 기기 안에서 만듭니다. (이 과정 자체가 흥미로워 별도 글로 풀었습니다.)
  4. 업로드·저장 — 노트 차트와 오디오는 파일 저장소로, 곡 메타데이터는 서버로.

업로드 화면은 진행 상태(분석 → 렌더링 → 업로드)를 그대로 보여주고, 만들어진 오디오를 그 자리에서 들어보며 검수할 수 있습니다.

네 단계는 어디서든 실패할 수 있습니다 — 깨진 파일의 파싱 실패, 렌더 실패, 저장소 업로드 실패, 서버 저장 실패. 그래서 각 단계를 상태로 노출해 실패한 지점에서 멈추고 재시도하게 했고, "절반만 만들어진 곡"이 카탈로그에 남지 않도록 노트 차트·오디오·메타데이터가 모두 자리 잡은 뒤에야 곡을 활성화합니다.

곡 배정과 학생 관리

선생님 로그인 → 대시보드 진입 (무음 자동재생·루프)

선생님과 학생은 초대 코드로 이어집니다. 선생님이 코드를 발급하면(기본 30일 만료), 학생이 가입 시 그 코드를 입력해 반에 들어옵니다. 공개 검색이나 친구 추가가 아니라 코드 기반이라, 실제 레슨 관계만 깔끔하게 연결됩니다. 만료·오입력 코드는 서버가 거부하고, 관계는 나중에 해제할 수 있습니다.

연결된 뒤 선생님은:

  • 만든 곡을 특정 학생에게 배정하고,
  • 학생의 연습 세션·진도를 확인하며,
  • 학생 목록에서 각자의 상태를 한눈에 봅니다.
📝 권한 경계

선생님은 연결된 학생의 연습 데이터(점수·마디별 정확도·진도)만 봅니다 — 계정 이메일이나 결제 같은 개인정보는 보지 않습니다. "누가 무엇을 보는가"는 화면 조건문이 아니라 서버 인가로 정해집니다.

레슨과 출석

레슨·출석 관리
레슨·출석 — 날짜별 수업의 출석 상태(출석·결석·지각·보강…)와 피드백을 기록

수업 자체도 앱 안에서 관리합니다. 학생별 레슨 일정을 잡고, 출석을 월 단위로 기록합니다. 온라인 연습 데이터와 오프라인 수업 흐름이 한 앱에서 이어지도록 한 부분입니다.

코치 루프: 응원·진단·테스트 플레이

코치 뷰 — 곡별 점수·코멘트
코치 뷰 — 학생의 곡별 최근 점수와 선생님 코멘트("손가락 독립을 더 신경쓰세요")

가장 공들인 곳은 코칭입니다. 데이터를 보는 데서 끝나지 않고, 선생님이 개입할 수 있게 했습니다.

  • 응원(Cheer) — 학생에게 짧은 격려를 보냅니다. 프리셋 문구를 두되 다국어로 관리해, 학생의 언어로 도착합니다.
  • 마디 단위 진단 열람 — 학생이 어느 마디에서 어느 손을 자주 틀리는지를 선생님도 봅니다. "다음 시간엔 3~7마디만" 같은 구체적 처방이 가능해집니다.
  • 테스트 플레이(프리뷰 모드) — 업로드한 곡을 점수 미제출 상태로 직접 쳐보며 검수합니다. 배정 전에 곡이 제대로 도는지 선생님이 먼저 확인합니다.
💡 Insight

곡을 만든다 → 학생을 잇는다 → 진도를 본다 → 응원한다. 선생님 기능은 이 하나의 루프로 설계됐다 — 학생용이 "혼자서도 즐겁게"라면, 선생님용은 "가르치는 손이 닿게".

마치며

선생님 기능은 "곡을 만든다 → 학생을 잇는다 → 진도를 본다 → 응원한다"는 하나의 루프로 설계했습니다. 업로드 파이프라인이 콘텐츠를 만들고, 초대 코드가 관계를 잇고, 진단과 응원이 그 관계를 살아 있게 합니다. 학생용 게임플레이가 "혼자서도 즐겁게"를 노린다면, 선생님용 도구는 "가르치는 사람의 손이 닿게"를 노렸습니다.