drum_pattern_auto_slicing:merging_8.3_renaming
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
drum_pattern_auto_slicing:merging_8.3_renaming [2025/09/08 16:52] – hyjeong | drum_pattern_auto_slicing:merging_8.3_renaming [2025/09/08 18:01] (current) – [Drum Pattern Auto Slicing/Merging & 8.3 Renaming] hyjeong | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Drum Pattern Auto Slicing/ | + | ====== Drum Pattern Auto Slicing/ |
** 드럼 패턴 자동 분할·병합 및 8.3 리네이밍 ** | ** 드럼 패턴 자동 분할·병합 및 8.3 리네이밍 ** | ||
- | 이 문서는 인터넷에서 찾은 무료(?) 드럼 패턴 MIDI 파일을 2-/ | + | 이 문서는 인터넷에서 찾은 무료(?) 드럼 패턴 MIDI 파일([[https:// |
+ | 이 MIDI file을 나는 2024년쯤 운좋게 다운로드하였지만 이제 링크가 더 이상 유효하지 않다. [[https:// | ||
- | ===== 개요 (Overview) ===== | + | 전체 |
- | 이 문서는 업로드된 MIDI 드럼 패턴(표준 SMF)을 **2마디 단위로 자동 분할**하고, | + | |
- | * 적용 대상: 단일 파일(예: < | + | |
- | * 산출물 예: < | + | |
- | ---- | + | ===== 핵심 요약 ===== |
- | ===입력 (Inputs) ===== | + | * **목적:** MIDI 드럼 패턴을 자동으로 2마디 단위 분할, 인접 2마디가 완전 동일하면 4마디로 병합, 그리고 **8.3 규칙(GpppLFKV.MID)**으로 일괄 리네이밍. |
- | * 표준 | + | * 입력/ |
- | * 파일명에 | + | * 입력: SMF0/1 MIDI, 파일명에 장르 힌트 활용. |
- | + | | |
- | ===출력 | + | * 루프-세이프 규칙 |
- | * 루프 | + | * 슬라이스 시작에만 |
- | * 각 슬라이스 | + | * 범위 내 중간 |
- | * 슬라이스 끝에는 **All Notes Off 미삽입**(루프 자연스러움 유지) | + | * 끝에서는 All Notes Off 미전송(루프 경계 |
- | * 8.3 규격 | + | |
- | * 배치 요약/ | + | * 드럼 채널(우선 ch10)의 NOTE-ON 이벤트가 상대틱·노트번호·벨로시티까지 100% 일치하면 |
- | + | * 마디 경계 계산: FF58과 TPQ로 마디 | |
- | ---- | + | |
- | + | * 느낌(F) 판정: | |
- | ====리 파이프라인 (Processing Pipeline) ===== | + | * 장르/킷 추정(G,K): 파일명 키워드로 |
- | | + | * 파일명 스키마(8.3): GpppLFKV.MID |
- | - **파싱(Parse)**: | + | * G=장르(1), ppp=장르별 일련번호(000–999), L=마디수(2/4), F=E/W/T, K=S/J/L/E/X, V=버전(A). |
- | - **마디 경계 계산(Bar Bounds)**: < | + | * 장르별 전역 카운터로 ppp 충돌 방지(기존 결과 폴더 스캔 후 이어붙임). |
- | - **2마디 윈도우 구성**: < | + | * 산출물 구조: 배치별 결과 폴더 + ZIP, Summary(소스별 2B/4B 개수·첫 일련번호·장르/킷/느낌)와 Details(파일명·원본·마디 범위·경로) 제공. |
- | - **정확 일치 검사(Exact Match)**: 인접 2마디의 **드럼 NOTE-ON(채널, | + | * 제약/ |
- | - **슬라이스 기록(Write)**: | + | * 정확 일치 기준은 미세 타이밍/스윙 변동에 민감 → 옵션으로 벨로시티 무시/양자화/유사도 임계치 적용 가능. |
- | | + | |
- | - **일련번호 관리(Serials)**: | + | * 선택 옵션: 하이햇 초크 이벤트 삽입, 중복 패턴 정리, 체인 파일(CHAINxx.CSV) 생성, 장르·킷 테이블 커스터마이즈. |
- | + | ===== 8.3 파일명 규격 | |
- | ---- | + | * **형식**: GpppLFKV.MID (총 8자 + 확장자) |
- | + | ||
- | ====프-세이프(Loop-Safe) 내보내기 규칙 ===== | + | |
- | * **삽입**: | + | |
- | * **제거/ | + | |
- | * 슬라이스 | + | |
- | * < | + | |
- | * **하지 않음**: 슬라이스 **끝에서 All Notes Off 전송 | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | ====B→4B | + | |
- | * 동일성 정의(정확 매칭): 같은 | + | |
- | * 상대 | + | |
- | * 음높이(note number) | + | |
- | * 벨로시티(velocity) | + | |
- | 가 **완벽히 | + | |
- | * 위 조건으로 **바로 다음 2마디**가 동일하면 **4마디 슬라이스**로 | + | |
- | * (옵션) 완화 가능: 벨로시티 무시, 서브틱 양자화 후 비교, 유사도 임계값 방식 등 | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | == 감지추론 | + | |
- | === 드럼 채널 선택 | + | |
- | * ch10(=9)이 존재하면 우선 | + | |
- | * 아니면 NOTE-ON 최다 채널 | + | |
- | + | ||
- | === 스윙/ | + | |
- | * 하이햇(42/ | + | |
- | * 판정: | + | |
- | * < | + | |
- | * < | + | |
- | * < | + | |
- | + | ||
- | === 장르/킷 추정 | + | |
- | * 파일명 키워드로 | + | |
- | * < | + | |
- | * < | + | |
- | * < | + | |
- | * < | + | |
- | * < | + | |
- | * < | + | |
- | * 매칭 실패 → G=9 / K=X | + | |
- | + | ||
- | ^ G ^ 장르(예) ^ 기본 킷(K) ^ | + | |
- | | 2 | Rock/Pop | S (Standard) | | + | |
- | | 3 | HipHop/Funk(랩/트랩 등) | E (Electronic) | | + | |
- | | 4 | Swing/ | + | |
- | | 5 | Latin(보사/삼바/차차…) | L (Latin) | | + | |
- | | 6 | EDM(하우스/테크노/디스코) | + | |
- | | 8 | Reggae/ | + | |
- | | 9 | 기타(Unknown/ | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | == 8.3 파일명 규격 == | + | |
- | * **형식**: | + | |
* **G**: 장르 코드(1자리 숫자) | * **G**: 장르 코드(1자리 숫자) | ||
* **ppp**: 장르별 일련번호(000–999) | * **ppp**: 장르별 일련번호(000–999) | ||
* **L**: 루프 길이 마디수(2, | * **L**: 루프 길이 마디수(2, | ||
- | * **F**: 느낌 | + | * **F**: 느낌 E(Even), W(Swing), T(Triplet/ |
- | * **K**: 드럼 킷 < | + | * **K**: 드럼 킷 S(Standard)/J(Jazz)/L(Latin/ |
- | * **V**: 버전(초기값 | + | * **V**: 버전(초기값 A) |
- | * 예: < | + | * 예: 20012ESA.MID → G=2(Rock/ |
- | + | ||
- | === 일련번호(ppp) 관리 === | + | |
- | * 생성 전, 결과 폴더 집합을 스캔해 **장르별 최대 ppp+1**을 시작값으로 사용 | + | |
- | * 같은 배치에서도 파일 간 순차 증가 → **충돌 없음** | + | |
- | * 스캔 대상(예): | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | == 폴더 구조 & 산출물 (Artifacts) == | + | |
- | * 대량 처리 예시 | + | |
- | * < | + | |
- | * < | + | |
- | * 각 배치에 대해 | + | |
- | * **Summary 표**: 소스별 2B/4B 개수, 첫 일련번호, | + | |
- | * **Details 표**: 슬라이스 파일명, 원본, 마디 범위, 경로 | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | == 의사코드 (Pseudocode) == | + | |
- | < | + | |
- | for each MIDI file: | + | |
- | parse header/ | + | |
- | bars = compute_bar_bounds(FF58, | + | |
- | drum_ch = choose_drum_channel() | + | |
- | F = detect_feel() | + | |
- | (G, K) = infer_genre_from_title() | + | |
- | i = 0 | + | |
- | while i < num_2bar_windows: | + | |
- | w1 = [bars[i], bars[i+2]) | + | |
- | if i+1 < num_2bar_windows: | + | |
- | w2 = [bars[i+2], bars[i+4]) | + | |
- | if signature(w1) == signature(w2): | + | |
- | L = 4; write_slice(w1.start, | + | |
- | i += 2; continue | + | |
- | L = 2; write_slice(w1.start, | + | |
- | i += 1 | + | |
- | // write_slice inserts FF58/FF51 at start, drops mid FF58/ | + | |
- | // name as GpppLFKV.MID with per-genre serials | + | |
- | </ | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | == 한계/ | + | |
- | * **정확 일치** 기준은 *양자화/ | + | |
- | * 옵션: 벨로시티 무시, 서브틱 양자화 후 비교, 코사인 유사도 기반 임계치 비교 | + | |
- | * 트랙에 드럼 외 채널 이벤트가 섞여 있어도 루프-세이프 규칙으로 대부분 안전하나, | + | |
- | * 2/4마디 외 8마디(8B) 자동 병합은 현재 OFF(확장 가능) | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | == 확장 옵션 (Recommended Options) == | + | |
- | * **중복 패턴 정리**: 동일 시그니처 슬라이스 중 대표만 보관 | + | |
- | * **하이햇 초크 삽입**: 루프 시작에 < | + | |
- | * **체인 파일(CHAINxx.CSV)** 자동 생성: 선호 슬라이스를 순서·반복수로 조합 | + | |
- | * **장르/ | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | == 변경 이력 (Change Log) == | + | |
- | * 2025-09-08 (KST): 대량 배치(< | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | == 빠른 체크리스트 == | + | |
- | * [x] 2B 분할, 인접 2B **정확일치→4B 병합** | + | |
- | * [x] 시작에만 **FF58/ | + | |
- | * [x] **CC120/123 제거**, **SysEx/ | + | |
- | * [x] 파일명 < | + | |
- | * [x] 장르별 일련번호 **충돌 방지** | + | |
drum_pattern_auto_slicing/merging_8.3_renaming.1757317933.txt.gz · Last modified: by hyjeong