尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證흥얼거리면 악보가 되는 앱 (Next.js + Capacitor)
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗흥얼거리면 악보가 되고, 원클릭으로 전조하고, 코드 악보·피아노 악보·MIDI·MusicXML·PDF로 내보내는 앱. 풀스택 Next.js 16 (Vercel) + Supabase + Capacitor 8 — 웹은 https://humscore.vercel.app, 앱은 같은 주소를 원격 로드합니다.
npm install
npm run dev # http://localhost:3100 (마이크는 localhost 또는 https에서만 동작)
npm test # Vitest 단위 테스트
npm run test:e2e # Playwright E2E (로컬 프로덕션 빌드, desktop + mobile)
E2E_BASE_URL=https://humscore.vercel.app npm run test:e2e # 운영 배포본 대상
환경변수(.env.local): NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY — 없으면 로컬 저장 모드로 동작.
vercel env pull로 받을 수 있습니다. Supabase Auth Redirect URLs에 <도메인>/auth/callback을 등록하세요.
docker compose up -d # 빌드 후 백그라운드 실행 → http://localhost:3200
docker compose up -d --build # 코드 변경 후 다시 빌드
docker compose logs -f web # 로그 보기
docker compose down # 중지
npm run dev 기본 포트와 겹치지 않게 비워 둠).env에 NEXT_PUBLIC_SUPABASE_URL·NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY를 넣고 --build로 다시 빌드합니다(빌드 때 번들에 들어감). 비우면 이 기기 저장 모드로 동작합니다.npm run cap:android # cap sync → Android Studio 열기
npm run cap:ios # cap sync → Xcode 열기 (macOS 필요)
CAP_SERVER_URL=http://<PC IP>:3100 npx cap sync # 실기기에서 개발 서버 라이브 리로드
앱은 capacitor.config.ts의 server.url(운영 도메인)을 불러오고, 연결 실패 시 native-shell/index.html 안내 페이지를 띄웁니다.
앱 웹뷰에서는 Google OAuth가 차단되므로 이메일 6자리 코드 로그인을 사용합니다.
플랫폼을 다시 만들었다면 npx cap add android 후 npm run native:permissions를 실행하세요.
src/
├── app/
│ ├── (marketing)/ # / 랜딩 (서버 컴포넌트)
│ ├── (auth)/login/ # 이메일 코드 · Google 로그인
│ ├── auth/callback/ # Supabase OAuth 코드 교환 (Route Handler)
│ ├── (app)/ # 앱 화면 (탭바)
│ │ ├── library/ # 내 악보 목록
│ │ ├── record/ # 녹음: 메트로놈 + 실시간 음정(Hz·센트) + 궤적
│ │ ├── keys/ # 88건반 입력
│ │ └── scores/[id]/ # 악보 보기·편집·재생·전조·내보내기, perform/ 공연 모드
│ └── actions/ # Server Actions (악보 동기화, 로그아웃)
├── proxy.ts # Supabase 세션 쿠키 갱신
├── components/ # 공유 컴포넌트 (ui/ = shadcn)
├── hooks/
└── lib/
├── music/ # 순수 TypeScript 음악 코어 (UI·브라우저 의존 없음)
├── audio/ # Web Audio: 피치 추적(pitchy), 배음 합성 피아노, 메트로놈
├── platform/ # 웹/앱 차이 흡수 (파일 저장·공유 시트)
└── storage/ # localStorage 기본 저장 + Supabase 동기화(병합·삭제 기록)
supabase/migrations/ # scores(RLS·소프트 삭제·LWW 트리거), transcription_jobs
e2e/ # Playwright E2E
native-shell/ # 앱 오프라인 안내 페이지
Score), 여러 개의 뷰. 모든 출력은 Score → MusicXML/MIDI 변환으로 만듭니다.transpose 값만 저장하고 출력 시 적용 → 원키로 언제든 복귀.| 포함 | 다음 단계 |
|---|---|
| 허밍 → 단선율 악보, 메트로놈·카운트인 | 음원 파일 업로드 (Basic Pitch) |
| 조성 자동 추정, 마디별 코드 추천·수정 | 반 마디 단위 코드, 7th 화음 추천 |
| 원클릭 전조 ±12, 남성 음역 자동 옥타브 표기 | 기타 TAB, 이조악기 파트 |
| 코드 악보 / 피아노 대보표 | 오케스트라 편곡 (Python GPU 워커) |
| 배음 합성 피아노 재생 (음원 파일 0개) | 사운드폰트 실악기 음색 |
| MusicXML · MIDI(9개 악기) · PDF 내보내기 | 음성 명령 ("G키로 바꿔줘") |
| 공연 모드 (태블릿·페달) | 팀 공유, 결제·크레딧 |