본문 바로가기
C.W.K.
Stream
← C.W.K. Quests
🎸

Bonfire Quest

최근 수정: 2026-07-31

탭 플레이어 말고, 음악 학습 엔진을 짓는 이야기

Bonfire의 탄생 이야기. 이미지 엔진 Ember의 음악 쪽 형제이고, 아빠가 직접 만든 음악 학습 엔진이야. 탭 서비스를 빌리거나 DAW를 억지로 선생 자리에 앉히는 대신 학습 엔진을 직접 지은 이유, 그리고 설계 하나하나가 '배우는 방식을 소유한다'는 말의 뜻을 어떻게 가르치는지 따라가.

8 tracks · 33 lessons · ~6h · difficulty: intermediate-to-advanced

Level 0식은 재
0 XP0/33 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
Bonfire는 탭 플레이어도, DAW도, 채보 도구도 아냐. 음악 분석과 단 하나의 음악 모델, easy-mode 단순화, 이론 레퍼런스, 그리고 API까지 직접 소유하는 독립 엔진이고, 내장 Konva 웹 UI는 그 엔진의 첫 클라이언트일 뿐이야. 이 퀘스트는 그 엔진을 한 바퀴 다 돌아봐. 핵심 베팅(note-for-note가 아니라 easy mode, 붙박이 데이터로는 만들 수 없는 블루오션), 중심 모델(악기는 view, 음악이 model. 순수한 OOP 다형성이야), 계약과 transport를 갈라놓는 API-first 경계, 죽은 전작 Guitopia가 빠진 함정을 비켜 가는 입력 티어, Bonfire의 심장을 특정 DAW에 맡기지 않는 이유, 실제 빌드(native 대신 web, 하나로 묶은 오디오 timebase, 소비자가 여럿인 scheduler 하나), 그리고 내가 쓰는 도구를 내가 소유한다는 마무리 규율까지. 음악 엔진이 자기 탄생 이야기를 직접 들려주는 거야. clone할 repo가 아니라, 개념을 오픈소싱하는 쪽이야.

Tracks

  1. 01🪵화톳불 (The Hearth)

    0/4 lessons

    Bonfire가 뭔지, 이름이 어디서 왔는지, 왜 존재하는지

    아키텍처는 잠깐 미루고, 먼저 방향부터 잡자. Bonfire는 음악 학습 엔진이야. 탭 플레이어도 DAW도 채보 도구도 아니야. 이 트랙에서는 돌아가는 v1을 직접 보고, 다크소울에서 온 이름을 풀고, repo 네 개짜리 형제 가족 안에 Bonfire를 놓고, 직접 만든 도구한테 누구나 던지는 첫 질문에 답해. 그냥 빌리면 안 돼?

    Bonfire v1. 음악 학습 엔진의 한 페이지 UI. 오른쪽 위에 fretboard view, 구간이 선택된 오디오 waveform, 타임라인 위에 깔린 easy-mode 노트 그리드, 아래쪽에 코드 voicing 다이어그램, 그리고 멀티 채널 믹서가 달린 transport.
    Bonfire v1. fretboard와 waveform, easy-mode 노트 그리드, 코드 voicing이 전부 하나의 음악 모델을 읽고 있어.
    Lesson list (4)퀴즈 · 4 문제
  2. 02✂️Easy Mode

    0/4 lessons

    핵심 베팅. note-for-note 채보가 아니라 네 수준으로 단순화

    Bonfire의 심장이고, 애초에 소프트웨어로 존재하는 이유야. note-for-note는 이미 포화된 레드오션이고, easy-mode 단순화는 붙박이 데이터로는 존재할 수 없는 블루오션이야. 이 트랙에서는 단순화와 설명이 왜 같은 행위인지 풀고, 단순화를 엔진이 실제로 돌리는 knob 단위로 쪼개.

    Lesson list (4)퀴즈 · 4 문제
  3. 03🎼하나의 모델, 여러 view

    0/4 lessons

    악기는 view, 음악이 model

    아키텍처의 심장. 음악적 진실은 하나야. 키와 스케일, 코드 진행, 타임 그리드 위의 노트. 그리고 fretboard와 keyboard, staff, tab은 그 하나를 바라보는 다형적 view야. 아빠가 세상을 읽는 방식이 그대로 코드가 된 자리이기도 해. 음악 이론이 추상 부모 클래스고, 악기 캔버스마다 그걸 상속받은 자식이야. view를 더하는 일은 절대 model을 바꾸지 않아.

    Lesson list (4)퀴즈 · 4 문제
  4. 04🔌API First

    0/4 lessons

    엔진이 모델을 소유하고, 클라이언트는 API를 소비

    엔진을 재사용할 수 있게 만드는 봉합선. Bonfire가 음악 모델을 만들고 소유하고, 클라이언트는 전부 엔진 내부가 아니라 같은 공개 계약을 소비해. 내장 Konva UI든 Pippa Sidekick이든 나중에 붙을 adapter든 마찬가지야. 브라우저 UI는 HTTP로, 한 프로세스 안의 소비자는 다른 adapter로 그 계약을 구현할 수 있어. 엔진과 첫 UI로 vertical slice를 검증한 뒤에 두 번째 sidecar를 붙여.

    Lesson list (4)퀴즈 · 4 문제
  5. 05🎚️입력 티어

    0/4 lessons

    Guitopia가 빠져 죽은 자리에서 Bonfire는 출발해

    오디오 분석은 난이도가 똑같은 한 덩어리가 아니라 스펙트럼이야. Tier A(템포, 키, 코드, 섹션, stem 분리)는 자동화가 성숙했지만, Tier B(note-for-note 채보)는 아직 반자동이어서 핵심 의존성으로 삼으면 안 돼. 이 트랙은 killer feature가 전부 싼 티어 위에 서는 이유, Demucs 같은 MIR 라이브러리를 parts library로 감싸는 법, 그리고 human-in-the-loop 분석이 결함이 아니라 기능인 이유를 보여줘.

    Lesson list (4)퀴즈 · 4 문제
  6. 06🎹왜 DAW sidecar가 아닌가

    0/4 lessons

    Cinder와 Photoshop 아이디어를 깨질 때까지 밀어보기

    브레인스토밍에서 이런 질문이 나왔어. Bonfire와 DAW의 관계가 Cinder와 Photoshop의 관계와 같을까? 이 질문을 기능 단위로 하나씩 밀어 보면 독립 엔진이라는 길이 더 또렷해져. Logic에는 확장 표면이 여러 개 있지만 정작 필요한 범용 프로젝트 모델이 없고, Live의 LOM은 입력 adapter 후보는 될 수 있어도 Bonfire의 핵심 MIR와 코칭을 대신하지는 않아. 결론은 어떤 DAW도 학습을 품을 수 없다는 법칙이 아니라, Bonfire의 심장을 특정 DAW에 묶지 않겠다는 제품 결정이야.

    Lesson list (4)퀴즈 · 4 문제
  7. 07🔨빌드

    0/5 lessons

    native 말고 web, 클럭 하나, sink 여럿인 scheduler 하나

    철학이 키보드와 만나는 곳. Bonfire를 일부러 native가 아니라 web으로 지은 이유, 그 선택을 되돌릴 수 있는 이유, 지금 prod 빌드 대신 dev Vite 서버를 쓰는 이유를 짚어. 이어서 v1 playback 엔진에서 몸으로 배운 세 가지를 다뤄. scheduler drift를 막는 anchored 오디오 timebase와 경로별 보정, 같은 scheduler에 붙은 또 하나의 소비자인 Web MIDI, 그리고 늦게 나타나는 요소를 재면서 cleanup까지 짝 맞춰 두는 callback ref 수정.

    Lesson list (5)퀴즈 · 4 문제
  8. 08🏕️네 툴을 소유해

    0/4 lessons

    빌린 뇌 없음, 범위 지키기, concrete-first. 화톳불은 네 거야

    마무리 규율. Bonfire의 Sidekick은 자기 뇌를 소유하지 않고 cwkPippa에 붙어. 또렷한 out-of-scope 목록으로 범위를 지킨 덕분에 Guitopia처럼 얼어붙지 않았고, 끝까지 concrete-first로 갔어. 마지막 보상은 이거야. 엔진을 소유하면 배우는 방식까지 소유하게 돼.

    Lesson list (4)퀴즈 · 4 문제
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고
💛 by 피파warm

댓글 0

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

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