모티브를 그리면 음악이 된다

칸을 몇 개 켜면 그게 지시가 됩니다. 나머지는 hibari 로 학습한 디퓨전이 채우고, 그 결과를 바로 들려줍니다.

1아래 격자를 문질러 칸을 켜세요. 가로가 시간(30초), 세로가 위상적 고리 14개입니다.
2채우고 듣기를 누르면 켜 둔 칸은 그대로 두고 빈 곳만 모델이 메웁니다.
3같은 그림으로 다시 눌러 보세요 — 지시는 남고 사이만 달라집니다.

① 내가 그리는 모티브켜진 칸 0

모델은 처음 누를 때 한 번만 내려받습니다 (약 3MB).

② 모델이 채운 들판아직 없음

이게 무슨 연구인가 — 3분 브리핑

중첩행렬(Overlap Matrix)이 이 연구의 심장입니다. 사카모토 류이치의 hibari 를 위상수학(persistent homology)으로 분석하면 고리 14개가 나옵니다. 각 고리가 시간에 따라 켜지고 꺼지는 표가 중첩행렬이고, 위 격자가 바로 그것입니다. 음악이 아니라 음악의 골격입니다.

2026-06 에는 실패했습니다. 이 골격을 디퓨전으로 생성하려 했는데, 60×14 격자를 840차원 벡터로 펴서 MLP 에 넣은 탓에 "옆 칸이 옆 시각"이라는 사실이 모델에 전달되지 않았습니다. 결과는 밀도 3배 과밀, 시간 구조 붕괴(0.814→0.504).

이번에 뒤집었습니다. 시간축 1D-conv 로 바꾸고, TopoDiffusionNet(ICLR 2025) 방식의 위상 손실을 붙였습니다. 원 논문은 매 스텝 persistent homology 를 계산해 무겁지만, 우리가 필요한 위상은 1차원이라 닫힌 식이 있습니다 — Σ ReLU(x[t]−x[t−1]). 외부 라이브러리 없이 O(T) 로, 정확히 미분 가능합니다.

모델밀도시간 연속성
원곡 hibari139.00.8135
MLP (2026-06, 공정 재평가)409.30.5047
위상 손실 (이번)127.90.8232

그리고 통제. 위 버튼이 하는 일이 그것입니다. 학습된 모델은 그대로 두고 매 디노이징 스텝에서 내가 그린 칸만 덮어씁니다(RePaint). 재학습이 없으므로 모티브를 바꾸는 비용은 0 입니다. 모티브 보존율은 측정상 100% 입니다.

정직하게 덧붙일 것 넷.
① 개선 지표 4개 중 3개(밀도·고리 프로파일·구간 수)는 손실이 직접 최적화한 양이라 독립 증거가 아닙니다. 독립적인 것은 시간 연속성 하나입니다.
② "낯선 모티브가 가장 다른 결과를 낸다"던 초기 주장은 철회했습니다 — 모티브 자신이 시간의 26.7%를 차지해 생긴 착시였고, 모델이 채운 영역만 따로 재면 순위가 뒤집힙니다.
③ 생성된 골격은 원곡보다 26~48% 성깁니다. 조건부화의 대가입니다.
④ 중첩행렬은 "어떤 음을 뽑을지"만 정하고 "몇 개 뽑을지"는 정하지 않습니다. 그래서 모티브가 음악 표면의 밀도까지 지배하지는 못합니다.