Easheetλ μ¬μ©μκ° μ
λ‘λν μμ(WAV)μ μλμΌλ‘ λΆμνμ¬ λλΌ μ
보(PDF/MIDI)λ₯Ό μμ±νλ μΉ μλΉμ€μ
λλ€.
μ₯λ₯΄ μ ν β μμ μ
λ‘λ β μ
보 μμ±κΉμ§ λͺ¨λ νλ‘μΈμ€λ₯Ό μΉμμ κ°νΈνκ² μνν μ μμΌλ©°, 볡μ‘ν μμ λΆλ¦¬μ MIDIΒ·μ
보 λ³νμ μλ²μμ λΉλκΈ°λ‘ μ²λ¦¬λ©λλ€.
- νλ‘ νΈμμ λ€μν μ₯λ₯΄ μΉ΄λ UI μ 곡 (Ballad, Jazz, Rock λ±)
- μ νλ μ₯λ₯΄μ λ°λΌ λλΌ ν¨ν΄ λΆμ λ° μΆλ ₯ κ²°κ³Ό μ΅μ ν
- νλ‘ νΈκ° λ°±μλλ‘ presigned URL μμ²
- λ°±μλκ° S3 μ λ‘λ URLμ μμ±ν΄ νλ‘ νΈμ μ λ¬
- νλ‘ νΈλ ν΄λΉ URLλ‘ μμμ μμ νκ² μ λ‘λ (μλ²λ₯Ό κ±°μΉμ§ μμ)
- Demucs κΈ°λ° μμ λΆλ¦¬ (Source Separation)
- Librosa κΈ°λ° ν ν¬/λΉνΈ λΆμ
- μ νΈ μ²λ¦¬ κΈ°λ° Drum hit detection β MIDI λ³ν
- Music21μΌλ‘ MIDI β MusicXML λ³ν
- MuseScore CLIλ‘ MusicXML β PDF μ 보 λ λλ§
- Django REST API + Celery + Redis μ‘°ν©
/processμμ² β Celery Queueμ μμ λ±λ‘- Workerκ° S3μμ μμμ λ€μ΄λ‘λνμ¬ λΆμ μν
- μμ
μν(
PENDING,RUNNING,DONE,ERROR)λ ν΄λ§μΌλ‘ μ‘°ν κ°λ₯
- PDF, MIDI, MusicXML, Guide Audio λ± κ²°κ³Όλ¬Όμ S3μ μ λ‘λ
- νλ‘ νΈκ°
/resultAPIλ₯Ό ν΅ν΄ λ€μ΄λ‘λ 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
WAV νμΌ μ λ‘λμ© S3 presigned URL λ°κΈ
μ λ‘λλ S3 μ λ ₯ νμΌ κΈ°λ° λλΌ μ 보 μμ± μμ μμ
λΉλκΈ° μμ μν μ‘°ν
PDF, MIDI, MusicXML νμΌ λ€μ΄λ‘λ URL λ°ν
- React (Vercel λ°°ν¬)
- Styled Components / CSS
- λΈλΌμ°μ λ΄μ₯ fetch APIλ₯Ό μ΄μ©ν HTTP ν΅μ
- AWS S3 Presigned Upload
- Django REST Framework
- Celery + Redis
- Demucs / Librosa / Mido
- Music21 / MuseScore
- AWS S3 (Input/Output)
- AWS EC2 (Ubuntu, Celery Worker + Django API)
- AWS S3 (νμΌ μ μ₯)
- Vercel (Frontend Hosting)
- 2023112497 κ°λͺ μ
- 2022113287 μΈλ°λΌ
- 2022111915 μ΄κ²½ν
- 2023112474 μ΄νλ
- 2022113286 νμ΄μ
- 2023112393 νμλ―Ό
λ³Έ νλ‘μ νΈλ μλμ μ€νμμ€ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ©°, λͺ¨λ μμ μ /λΉμμ μ μ΄μ©μ΄ κ°λ₯ν 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μ°¨ μ μλ¬Ό κ³΅κ° μ무 | μμ κ²°κ³Όλ¬Όμ μ μ€νμμ€λ‘ 곡κ°ν΄μΌ νλμ§ μ¬λΆ (ν΄λΉ μμ) |
| μ μκΆ/λΌμ΄μ μ€ νμ νμ | μννΈμ¨μ΄ λ°°ν¬ μ λΌμ΄μ μ€ λ¬Έκ΅¬λ₯Ό ν¬ν¨ν΄μΌ ν¨ |