C.W.K.
Stream
Lesson 01 of 04 · published

Bonfire 가 뭔가

~13 min · identity, overview, views, engine

Level 0식은 재
0 XP0/33 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"탭 플레이어가 아냐. 이해하러 가는 곳이야."

엔진, 화면으로

이게 Bonfire v1 이야 — 한 페이지가 한 가지 일을 해: 한 곡을 네 수준에서 지금 칠 수 있을 만큼 이해하게 돕는 거.

Bonfire v1 — 음악 학습 엔진의 단일 페이지 UI. 오른쪽 위 fretboard view, 구간이 선택된 오디오 waveform, 타임라인 위에 깔린 easy-mode 노트 그리드, 아래쪽 코드 voicing 다이어그램, 그리고 멀티 채널 믹서가 달린 transport.
Bonfire v1 — fretboard, waveform, easy-mode 노트 그리드, 코드 voicing 이 전부 하나의 음악 모델을 읽고 있어.

이 한 화면에 뭐가 몇 개나 떠 있는지 세어 봐. 그리고 그게 전부 같은 곡을 설명하고 있다는 걸 봐:

  • fretboard (오른쪽 위) — 스케일과 타깃 노트를, 기타리스트 손이 보는 방식으로 깔아 놓은 것.
  • waveform (넓은 amber 띠) — 실제 오디오, 루프 걸 수 있는 더 밝은 구간 선택이 들어 있어.
  • 노트 그리드 (waveform 아래 색 블록들) — 타임라인 위의 easy-mode 노트: 뭘, 언제 칠지.
  • 코드 voicing (작은 다이어그램들) — 진행의 코드를 칠 수 있는 모양으로.
  • transport + 믹서 (아래) — 재생/정지, 템포, 그리고 원곡·solo·코드를 섞는 채널 스트립.

이 한 장에 thesis 가 통째로 들어 있어. 그리고 퀘스트 나머지가 이걸 증명하는 데 쓰여: fretboard, 그리드, voicing 다이어그램은 다섯 개 앱을 풀로 붙인 게 아냐. 하나의 음악 모델을 보는 다섯 개의 view 야. 곡을 바꾸면 모든 pane 이 같은 진실에서 다시 그려져. Track 3 이 통째로 이 아이디어 위에 서 있어.

Bonfire 가 아닌 것

모양을 또렷하게, 날카로운 부정 셋:

  • 탭 플레이어 아님. Songsterr 랑 Guitar Pro 가 이미 탭을 아름답게 그려. Bonfire 는 그 경주를 이기려는 게 아냐.
  • DAW 아님. Logic 이랑 Ableton 은 음악을 생산해. Bonfire 는 배우게 도와 — Track 6 에서 증명하듯, 어떤 DAW 도 못 품는 다른 일이야.
  • 채보 도구 아님. "이 솔로 모든 음 내놔" 는 어렵고 포화된 문제고, Bonfire 는 다시 짓는 대신 일부러 링크로 내보내.

셋 다 빼고 남는 게 진짜 제품이야: 학습 엔진. 분석(무슨 키? 무슨 코드?), 단 하나의 음악 모델, easy-mode 단순화(불가능한 원곡 대신 이걸 쳐), 이론 레퍼런스, 그리고 API 를 소유해. 위의 웹 UI 는 그냥 그 엔진한테 말 거는 첫 번째일 뿐이야.

생산 도구 아니고, 학습 도구

이 구분을 꽉 쥐고 있어 — 뒤의 거의 모든 결정을 설명해. 생산 도구의 일은 완성품을 뽑는 거야: 믹스된 트랙, export 된 탭. 학습 도구의 일은 네 머리와 손 안에 있는 걸 바꾸는 거야. Bonfire 는 두 번째야. 그래서 "오늘 네가 진짜 감당할 수 있는 단순화 버전을 쳐" 가 타협이 아니라 헤드라인 기능이고, 가끔 틀리는 것 — 그리고 네가 고치게 두는 것 — 도 결함이 아니라 기능이야.

Code

한 곡 로드 = 하나의 모델 (모양 스케치)·json
{
  "key": "E minor",
  "tempo_bpm": 132,
  "sections": [
    { "name": "Verse", "start_s": 0.0, "end_s": 18.4 }
  ],
  "chords": [
    { "roman": "i",  "symbol": "Em", "start_s": 0.0, "beats": 4 },
    { "roman": "VI", "symbol": "C",  "start_s": 2.0, "beats": 4 }
  ],
  "notes": [
    { "string": 1, "fret": 7, "start_s": 4.0, "dur_s": 0.5 }
  ]
}

// fretboard 는 `key` + `notes` 를 읽어.
// 노트 그리드는 시간 위의 `notes` 를 읽어.
// voicing 다이어그램은 `chords` 를 읽어.
// 객체 하나. view 는 여럿. 어떤 view 도 이걸 고치지 않아.

External links

Exercise

네가 실제로 쓰는 음악 도구 아무거나 열어 봐 — Songsterr, DAW, 유튜브 레슨, Spotify. 먼저 정해: 생산 도구야, 학습 도구야? 그다음 그게 한 곡에 대해 보여주는 모든 'view' 를 적고, 어려운 질문을 던져: 그 view 들이 하나의 공유 모델이야, 아니면 따로 붙인 기능들이야?
Hint
곡을 바꿨을 때 모든 view 가 한 번에 갱신되면 밑에 하나의 모델이 있을 가능성이 커. view 마다 다시 import / 다시 로드해야 하면 붙인 거고 — 그게 바로 Bonfire 가 피하려고 지어진 fragmentation 이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고
💛 by 피파warm

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.