Skip to content

OpenSWProject0302/OpenSWProject03_2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 

Repository files navigation

🎼 Easheet – μŒμ› 뢄석 기반 λ“œλŸΌ 악보 μžλ™ 생성 μ„œλΉ„μŠ€

EasheetλŠ” μ‚¬μš©μžκ°€ μ—…λ‘œλ“œν•œ μŒμ›(WAV)을 μžλ™μœΌλ‘œ λΆ„μ„ν•˜μ—¬ λ“œλŸΌ 악보(PDF/MIDI)λ₯Ό μƒμ„±ν•˜λŠ” μ›Ή μ„œλΉ„μŠ€μž…λ‹ˆλ‹€.
μž₯λ₯΄ 선택 β†’ μŒμ› μ—…λ‘œλ“œ β†’ 악보 μƒμ„±κΉŒμ§€ λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€λ₯Ό μ›Ήμ—μ„œ κ°„νŽΈν•˜κ²Œ μˆ˜ν–‰ν•  수 있으며, λ³΅μž‘ν•œ μŒμ› 뢄리와 MIDI·악보 λ³€ν™˜μ€ μ„œλ²„μ—μ„œ λΉ„λ™κΈ°λ‘œ μ²˜λ¦¬λ©λ‹ˆλ‹€.


πŸ“Œ μ£Όμš” κΈ°λŠ₯ (Key Features)

βœ… 1. μž₯λ₯΄ 선택 기반 뢄석 νŒŒλΌλ―Έν„° 적용

  • ν”„λ‘ νŠΈμ—μ„œ λ‹€μ–‘ν•œ μž₯λ₯΄ μΉ΄λ“œ UI 제곡 (Ballad, Jazz, Rock λ“±)
  • μ„ νƒλœ μž₯λ₯΄μ— 따라 λ“œλŸΌ νŒ¨ν„΄ 뢄석 및 좜λ ₯ κ²°κ³Ό μ΅œμ ν™”

βœ… 2. μŒμ› μ—…λ‘œλ“œ (AWS S3 Presigned URL)

  • ν”„λ‘ νŠΈκ°€ λ°±μ—”λ“œλ‘œ presigned URL μš”μ²­
  • λ°±μ—”λ“œκ°€ S3 μ—…λ‘œλ“œ URL을 생성해 ν”„λ‘ νŠΈμ— 전달
  • ν”„λ‘ νŠΈλŠ” ν•΄λ‹Ή URL둜 μŒμ›μ„ μ•ˆμ „ν•˜κ²Œ μ—…λ‘œλ“œ (μ„œλ²„λ₯Ό κ±°μΉ˜μ§€ μ•ŠμŒ)

βœ… 3. μŒμ› 뢄리 및 λ“œλŸΌ 뢄석

  • Demucs 기반 μŒμ› 뢄리 (Source Separation)
  • Librosa 기반 ν…œν¬/λΉ„νŠΈ 뢄석
  • μ‹ ν˜Έ 처리 기반 Drum hit detection β†’ MIDI λ³€ν™˜
  • Music21으둜 MIDI β†’ MusicXML λ³€ν™˜
  • MuseScore CLI둜 MusicXML β†’ PDF 악보 λ Œλ”λ§

βœ… 4. 비동기 μž‘μ—… 처리 (Async Processing)

  • Django REST API + Celery + Redis μ‘°ν•©
  • /process μš”μ²­ β†’ Celery Queue에 μž‘μ—… 등둝
  • Workerκ°€ S3μ—μ„œ μŒμ›μ„ λ‹€μš΄λ‘œλ“œν•˜μ—¬ 뢄석 μˆ˜ν–‰
  • μž‘μ—… μƒνƒœ(PENDING, RUNNING, DONE, ERROR)λŠ” 폴링으둜 쑰회 κ°€λŠ₯

βœ… 5. κ²°κ³Όλ¬Ό λ‹€μš΄λ‘œλ“œ 지원

  • PDF, MIDI, MusicXML, Guide Audio λ“± 결과물을 S3에 μ—…λ‘œλ“œ
  • ν”„λ‘ νŠΈκ°€ /result APIλ₯Ό 톡해 λ‹€μš΄λ‘œλ“œ URL을 μ œκ³΅λ°›μ•„ ν‘œμ‹œ

πŸ—οΈ μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜

flowchart TD

    User["μ‚¬μš©μž<br/>- μž₯λ₯΄/λ‚œμ΄λ„ 선택<br/>- WAV μ—…λ‘œλ“œ"] --> FE["Frontend<br/>(React @ Vercel)"]

    FE -->|Presigned URL μš”μ²­| BE_Presign["Django API<br/>/api/uploads/presign"]
    BE_Presign --> FE

    FE -->|WAV μ—…λ‘œλ“œ| S3_Input["AWS S3<br/>Input Bucket"]

    FE -->|/api/drums/process| BE_Process["Django API<br/>DrumJob 생성(PENDING)"]

    BE_Process -->|μž‘μ—… λ©”μ‹œμ§€| Redis["Redis<br/>(Message Broker)"]

    Redis --> Worker["Celery Worker (EC2)<br/>WAV λ‹€μš΄λ‘œλ“œΒ·λΆ„μ„Β·λ³€ν™˜"]

    Worker -->|κ²°κ³Ό μ—…λ‘œλ“œ| S3_Output["AWS S3<br/>MIDI / PDF / Guide"]

    Worker -->|μƒνƒœ μ—…λ°μ΄νŠΈ| DB["SQLite DB"]

    FE -->|/api/drums/status| BE_Status["Django API<br/>Status 쑰회"]
    BE_Status --> FE
Loading

πŸ—‚οΈ API Overview

β–Ά /api/uploads/presign

WAV 파일 μ—…λ‘œλ“œμš© S3 presigned URL λ°œκΈ‰

β–Ά /api/drums/process

μ—…λ‘œλ“œλœ S3 μž…λ ₯ 파일 기반 λ“œλŸΌ 악보 생성 μž‘μ—… μ‹œμž‘

β–Ά /api/drums/status/<job_id>

비동기 μž‘μ—… μƒνƒœ 쑰회

β–Ά /api/drums/result/<job_id>

PDF, MIDI, MusicXML 파일 λ‹€μš΄λ‘œλ“œ URL λ°˜ν™˜


βš™οΈ 기술 μŠ€νƒ

Frontend

  • React (Vercel 배포)
  • Styled Components / CSS
  • λΈŒλΌμš°μ € λ‚΄μž₯ fetch APIλ₯Ό μ΄μš©ν•œ HTTP 톡신
  • AWS S3 Presigned Upload

Backend

  • Django REST Framework
  • Celery + Redis
  • Demucs / Librosa / Mido
  • Music21 / MuseScore
  • AWS S3 (Input/Output)

Infrastructure

  • AWS EC2 (Ubuntu, Celery Worker + Django API)
  • AWS S3 (파일 μ €μž₯)
  • Vercel (Frontend Hosting)

πŸ‘₯ Contributors

  • 2023112497 κ°•λͺ…μˆ˜
  • 2022113287 세바라
  • 2022111915 μ΄κ²½ν›ˆ
  • 2023112474 μ΄ν•˜λŠ˜
  • 2022113286 페이자
  • 2023112393 ν•œμˆ˜λ―Ό

πŸ“‘ λΌμ΄μ„ μŠ€ 정보 (Library Licenses)

λ³Έ ν”„λ‘œμ νŠΈλŠ” μ•„λž˜μ˜ μ˜€ν”ˆμ†ŒμŠ€ 라이브러리λ₯Ό μ‚¬μš©ν•˜λ©°, λͺ¨λ‘ 상업적/비상업적 이용이 κ°€λŠ₯ν•œ Permissive Licenseλ₯Ό λ”°λ¦…λ‹ˆλ‹€.

🧩 μ‚¬μš© 라이브러리 및 λΌμ΄μ„ μŠ€

라이브러리 λΌμ΄μ„ μŠ€
librosa ISC
mido MIT
demucs MIT
soundfile BSD 3-Clause

πŸ“˜ λΌμ΄μ„ μŠ€λ³„ κΆŒν•œ 및 의무

License 무료 이용 배포 μˆ˜μ • 2μ°¨ μ €μž‘λ¬Ό 곡개 의무 μ €μž‘κΆŒ/λΌμ΄μ„ μŠ€ ν‘œμ‹œ
ISC O O O X O
MIT O O O X O
BSD 3-Clause O O O X O (κ΄‘κ³  κΈˆμ§€ μ‘°ν•­ 포함)

πŸ“š μš©μ–΄ μ„€λͺ…

ν•­λͺ© μ„€λͺ…
무료 μ‚¬μš© 상업적/비상업적 λͺ©μ  λͺ¨λ‘ 포함해 λΉ„μš© 없이 μ‚¬μš©ν•  수 μžˆλŠ”μ§€ μ—¬λΆ€
배포 κ°€λŠ₯ 라이브러리λ₯Ό ν¬ν•¨ν•œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ‹€λ₯Έ μ‚¬λžŒμ—κ²Œ 전달할 수 μžˆλŠ”μ§€ μ—¬λΆ€
μ†ŒμŠ€μ½”λ“œ μˆ˜μ • κ°€λŠ₯ 원본 μ½”λ“œλ₯Ό 자유둭게 νŽΈμ§‘ν•˜κ±°λ‚˜ μž¬κ΅¬μ„±ν•  수 μžˆλŠ”μ§€ μ—¬λΆ€
2μ°¨ μ €μž‘λ¬Ό 곡개 의무 μˆ˜μ • 결과물을 μƒˆ μ˜€ν”ˆμ†ŒμŠ€λ‘œ κ³΅κ°œν•΄μ•Ό ν•˜λŠ”μ§€ μ—¬λΆ€ (ν•΄λ‹Ή μ—†μŒ)
μ €μž‘κΆŒ/λΌμ΄μ„ μŠ€ ν‘œμ‹œ ν•„μš” μ†Œν”„νŠΈμ›¨μ–΄ 배포 μ‹œ λΌμ΄μ„ μŠ€ 문ꡬλ₯Ό 포함해야 함

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors