Skip to content

[DONE] 정리 3단계 PR 10 — MIDI 페이지가 손잡이 한 바퀴를 24칸으로 센다 - #46

Merged
patternflow-bot merged 2 commits into
devfrom
claude/patternflow-cleanup-step3-pr10-wqzj3a
Oct 15, 2026
Merged

patternflow-bot merged 2 commits into
devfrom
claude/patternflow-cleanup-step3-pr10-wqzj3a

Conversation

@patternflow-bot

@patternflow-bot patternflow-bot commented Oct 15, 2026 •

Copy link
Copy Markdown

studio / https://claude.ai/code/session_014rEhCHkHjw1FZQfKrHprFn

정리 3단계 계획서 표의 PR 10 이고, 정리가 아니라 고침이다. 콘솔 MIDI 페이지의 감도 칸이 손잡이 한 바퀴를 20칸으로 셈해서 1 : 1 이 「20/turn · 6.4 turns」로 보였는데, 엔코더 PEC11R-4220F-S0024 는 24칸이다. 머지하면 「24/turn · 5.3 turns」처럼 실제와 맞는 숫자가 보이고, 패널이 DAW 로 보내는 값은 그대로다.

좋아지는 것: MIDI 감도 칸이 한 바퀴를 맞게 센다 — 적힌 바퀴 수대로 돌리면 끝까지 간다

할 일

  • 계획서 표의 PR 10 행(k10), 발견 9, docs/rfc-cleanup.md §2.1·§2.5·§2.9·§2.11, docs/voice.md 를 읽는다
  • 표가 PR 10 에 적은 네 파일만 고친다: midi.html, midi_index.h(생성), core_midi.h, docs/midi-spec.md
  • console_pages.py build 로 midi_index.h 를 다시 짓고 check, check_boundaries.py, check_midi.py 를 돌린다
  • typecheck, lint, check:ci, 잠금, 글투 검사, doc-map 을 돌린다(CSV 는 되돌린다)
  • 미리보기 서버로 바뀌기 전과 뒤 페이지의 감도 칸을 읽는다
  • 이 PR 의 CI 9개가 fd7f83f 에서 모두 success(펌웨어 다섯 구성 포함)
  • dev 를 merge 한다(ef4864a 그대로라 이미 최신)

한 일

  • firmware/patternflow/console/midi.html: rowText 가 perTurn=24*g[0]/g[1] 로 센다. 그 위 주석은 「24 detents a turn (PEC11R-4220F-S0024)」. 읽기 칸 너비를 설명하는 CSS 주석의 가장 긴 읽기도 29(1/16, 101.6 turns)에서 28(1/16, 84.7 turns)로 고쳤다. 너비 32ch 는 그대로다.
  • firmware/patternflow/features/midi/midi_index.h: console_pages.py build 가 다시 지었다. 손으로 고친 줄은 없다. 바뀐 891줄 가운데 881줄은 gzip 쌍둥이 바이트 배열이고, 나머지는 위 세 줄과 gzip 크기 주석이다(18973→18993 바이트, gzip 7026→7047).
  • firmware/patternflow/features/midi/core_midi.h: outDiv 설명 주석이 「24 detents a turn, so at 1 a full turn is 24 steps and at 4 it is 6」. 코드는 그대로다.
  • docs/midi-spec.md: outDiv 행이 「1 is 24 steps per turn and 4 is 6」.
  • outDiv·outMul 의 범위와 기본값, 바이트로 나가는 CC 는 바뀌지 않았다.

증거

GitHub, 이 PR 의 fd7f83f: Firmware builds(default·audio·midi·performance·clock), Drift checks, Console pages in sync, Core knows no features, Docs point at files that exist 모두 success. Web CI 는 경로 필터 밖이라 돌지 않았다.

로컬:

$ python3 firmware/toolchain/console_pages.py build
1 header(s) updated
$ python3 firmware/toolchain/console_pages.py build      # 두 번째: midi_index.h sha1 286dcf7… 그대로
already up to date
$ python3 firmware/toolchain/console_pages.py check
all 12 console headers match their HTML, stamped with chrome h=efffd505; all 14 gzip twins decompress to their literals
$ python3 firmware/toolchain/check_boundaries.py
boundary holds: 73 core files know none of 42 feature namespaces across 9 features
$ python3 firmware/toolchain/check_midi.py
PASS: 200000 ordered cross-thread events, bounded overflow, absolute/relative/note no-echo, physical output

# web/, npm ci 뒤
$ npm run typecheck          # exit 0
$ npm run lint               # exit 0
$ npm run check:ci           # exit 0 (check:panels, check:sandbox-sync, check:modcache 포함)
passed   bom
passed   bom-schematic
passed   changelog
passed   editions
passed   features
passed   links-absolute
passed   presets
skipped  roadmap             # 이 세션은 원래 레포를 못 읽는다. CI 는 strict 로 돌고 success
$ npm run check:human-lock
this diff touches 0 locked files
check:human-lock: no locked words changed
$ npm run check:voice
read: 453 added lines in 4 files
check:voice: nothing found
$ git fetch --tags && npm run doc-map
1074 links from 215 files → docs/investigations/2026-10-doc-map.csv
0 do not resolve
1366 Korean/English pairs → docs/investigations/2026-10-doc-parity.csv
7 en-short, 18 ko-short, 1 missing-ko, 1340 ok

doc-map 이 커밋된 CSV 와 다르게 쓴 줄은 둘이고 둘 다 dev 에 이미 있는 docs/investigations/2026-10-panel-geometry.md 에서 나가는 링크다. 이 PR 의 줄은 없고, 두 CSV 는 git checkout 으로 되돌렸다.

미리보기 서버(console_serve.py, 모의 장치는 K1 1:1 · K2 ×2 · K3 1/4 · K4 1:1)로 /midi 를 열어 Playwright 로 감도 칸 네 줄을 읽었다:

전 (ef4864a)  1 : 1 · 20/turn · 6.4 turns | ×2 · 40/turn · 3.2 turns | 1/4 · 5/turn · 25.4 turns  | 1 : 1 · 20/turn · 6.4 turns
뒤 (fd7f83f)  1 : 1 · 24/turn · 5.3 turns | ×2 · 48/turn · 2.6 turns | 1/4 · 6/turn · 21.2 turns  | 1 : 1 · 24/turn · 5.3 turns

열두 단계 전부를 같은 식으로 셈하면 가장 긴 읽기는 「1/16 · 1.5/turn · 84.7 turns」 28자다.

실행법

python firmware/toolchain/console_serve.py     # http://localhost:8322/midi
# 감도 칸 오른쪽 읽기: 1 : 1 이 24/turn · 5.3 turns
python firmware/toolchain/console_pages.py check

패널에서는 MIDI 구성(./firmware/bundles/build.sh midi)을 올리고 콘솔의 MIDI 페이지를 연다.

가정

  • 기준 브랜치는 dev(머리말). 표가 PR 10 에 적은 네 파일만 고쳤다. CHANGELOG.md, docs/rfc-cleanup-progress.md, doc-map CSV 는 안 고쳤다. 라벨 cleanup·step-3 은 포크에 없어서 달지 않았다.
  • §2.13 질문 22(이 창에서 MIDI 페이지가 보이는 것을 바꿔도 되나)는 계획서 기본값대로 「고침으로 본다」.
  • midi.html 의 CSS 주석은 계획서에 따로 적혀 있지 않지만, 24로 세면 「가장 긴 읽기 29, 1/16 at 101.6 turns」가 틀린 말이 되어 같이 고쳤다. 칸 너비 32ch 는 28자에 여유가 더 생길 뿐이라 바꾸지 않았다. 너비를 줄이는 건 레이아웃 변경이다.
  • docs/midi-spec.md 의 버전 기록에는 줄을 더하지 않았다. 선로로 오가는 값이 바뀐 게 아니고, 바퀴당 칸 수를 적은 문장이 틀렸던 것이다.
  • try-out 이미지 midi-v0.1.0 은 건드리지 않았다. 그 이미지의 MIDI 페이지는 계속 20/turn 으로 보인다(계획서 k10 「stays frozen」).
  • midi_index.h 의 891줄은 생성물이라 300줄 셈에서 뺐다(계획서 D8). 손으로 고친 줄은 7줄이다.
  • 스크린샷은 레포에 PNG 를 커밋해야 대시보드에 보이는데, 그러면 표가 적은 네 파일 밖을 고치게 되어 붙이지 않았다. 대신 렌더된 페이지에서 읽은 글을 위에 그대로 적었다.
  • 커밋 영역은 firmware: 로 썼다. 바뀐 것이 MIDI 구성의 콘솔 페이지다.

Changelog

Firmware

  • The MIDI page counts 24 detents a turn, as the encoder has. The Sensitivity readout worked out its per-turn figure from 20, so 1 : 1 read 20/turn and 6.4 turns end to end, where a turn of the PEC11R-4220F-S0024 sends 24 steps and the sweep takes 5.3. What the panel sends did not change.

Docs

  • docs/midi-spec.md says 24 detents a turn. outDiv=1 is 24 steps a turn and 4 is 6, where it said 20 and 5.

Upstream

  • What: Count 24 detents a turn on the MIDI console page, as the PEC11R-4220F-S0024 has, where its per-turn readout used 20; midi_index.h regenerated, and core_midi.h and docs/midi-spec.md say 24. A fix, not a cleanup: what the panel sends is unchanged.
  • Checks: firmware/bundles/build.sh all in CI, five compositions green; console_pages.py check, check_boundaries.py, check_midi.py; npm run typecheck, npm run lint, npm run check:ci (includes check:panels), npm run check:human-lock, npm run check:voice pass.
  • Docs map: none

🤖 Generated with Claude Code

https://claude.ai/code/session_014rEhCHkHjw1FZQfKrHprFn

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014rEhCHkHjw1FZQfKrHprFn
The PEC11R-4220F-S0024 has 24; the page, core_midi.h and midi-spec.md said 20.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014rEhCHkHjw1FZQfKrHprFn
@patternflow-bot patternflow-bot changed the title [WIP] Patternflow 정리 3단계 PR 10 [DONE] 정리 3단계 PR 10 — MIDI 페이지가 손잡이 한 바퀴를 24칸으로 센다 Oct 15, 2026
@patternflow-bot
patternflow-bot marked this pull request as ready for review October 15, 2026 05:44
@patternflow-bot
patternflow-bot merged commit c836203 into dev Oct 15, 2026
9 checks passed
@patternflow-bot
patternflow-bot deleted the claude/patternflow-cleanup-step3-pr10-wqzj3a branch October 15, 2026 05:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants