drum_pattern_auto_slicing:merging_8.3_renaming
This is an old revision of the document!
Table of Contents
Drum Pattern Auto Slicing/Merging & 8.3 Renaming
드럼 패턴 자동 분할·병합 및 8.3 리네이밍
이 문서는 인터넷에서 찾은 무료(?) 드럼 패턴 MIDI 파일(460 Free GM MIDI drum patterns)을 2-/4-마디로 분할하여 자동으로 이름을 붙이는 챗GPT 작업을 설명하기 위한 것이다. Ardule의 드럼 플레이어 기능에서 마이크로SD카드에 저장한 패턴을 불러들여 재생하기 위한 사전 작업이다.
이 MIDI file을 나는 운좋게 다운로드하였지만 이제 링크가 더 이상 유효하지 않다.
핵심 요약
- 목적: MIDI 드럼 패턴을 자동으로 2마디 단위 분할, 인접 2마디가 완전 동일하면 4마디로 병합, 그리고 8.3 규칙(GpppLFKV.MID)으로 일괄 리네이밍.
- 입력/출력
- 입력: SMF0/1 MIDI, 파일명에 장르 힌트 활용.
- 출력: 루프 친화 슬라이스(2B/4B), 시작에 FF58(박자)/FF51(템포) 삽입, 8.3 파일명 저장, 배치 요약/상세 표와 ZIP.
- 루프-세이프 규칙
- 슬라이스 시작에만 FF58/FF51.
- 범위 내 중간 FF58/FF51/EOT(SysEx 포함) 미복사, CC120/123(사운드/노트오프) 제거.
- 끝에서는 All Notes Off 미전송(루프 경계 자연스러움 유지).
- 병합 기준(2B→4B)
- 드럼 채널(우선 ch10)의 NOTE-ON 이벤트가 상대틱·노트번호·벨로시티까지 100% 일치하면 바로 다음 2마디와 병합.
- 마디 경계 계산: FF58과 TPQ로 마디 시작 tick 산출 → [bar i, i+2) 윈도우로 슬라이스 후보 생성.
- 드럼 채널 선택: ch10이 있으면 우선, 없으면 NOTE-ON 최다 채널.
- 느낌(F) 판정: 하이햇(42/44/46)의 오프비트 분포로 E(스트레이트)/W(스윙)/T(트리플릿·12/8·6/8) 추정.
- 장르/킷 추정(G,K): 파일명 키워드로 매핑(예: rock/pop→G=2,K=S / hiphop/rap/trap→G=3,K=E / swing/blues→G=4,K=J / latin→G=5,K=L … 실패 시 G=9,K=X).
- 파일명 스키마(8.3): GpppLFKV.MID
- G=장르(1), ppp=장르별 일련번호(000–999), L=마디수(2/4), F=E/W/T, K=S/J/L/E/X, V=버전(A).
- 장르별 전역 카운터로 ppp 충돌 방지(기존 결과 폴더 스캔 후 이어붙임).
- 산출물 구조: 배치별 결과 폴더 + ZIP, Summary(소스별 2B/4B 개수·첫 일련번호·장르/킷/느낌)와 Details(파일명·원본·마디 범위·경로) 제공.
- 제약/확장
- 정확 일치 기준은 미세 타이밍/스윙 변동에 민감 → 옵션으로 벨로시티 무시/양자화/유사도 임계치 적용 가능.
- 8마디 자동 병합은 기본 OFF(확장 가능).
- 선택 옵션: 하이햇 초크 이벤트 삽입, 중복 패턴 정리, 체인 파일(CHAINxx.CSV) 생성, 장르·킷 테이블 커스터마이즈.
8.3 파일명 규격
- 형식: GpppLFKV.MID (총 8자 + 확장자)
- G: 장르 코드(1자리 숫자)
- ppp: 장르별 일련번호(000–999)
- L: 루프 길이 마디수(2, 4, 8…) — 본 작업에서는 2 또는 4
- F: 느낌 E(Even), W(Swing), T(Triplet/12·8/6·8)
- K: 드럼 킷 S(Standard)/J(Jazz)/L(Latin/World)/E(Electronic)/X(Unknown/Neutral)
- V: 버전(초기값 A)
* 예: 20012ESA.MID → G=2(Rock/Pop), ppp=001, L=2bars, F=E, K=S, V=A
drum_pattern_auto_slicing/merging_8.3_renaming.1757321897.txt.gz · Last modified: by hyjeong