nano_ardule_midi_controller:adt_v2.2
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| nano_ardule_midi_controller:adt_v2.2 [2025/11/23 19:35] – [1. 사전 분석] hyjeong | nano_ardule_midi_controller:adt_v2.2 [2025/11/23 23:13] (current) – [2. Type 0 MIDI 파일을 2 bar 단위로 분할] hyjeong | ||
|---|---|---|---|
| Line 307: | Line 307: | ||
| </ | </ | ||
| 출력된 결과 샘플: {{ : | 출력된 결과 샘플: {{ : | ||
| + | </ | ||
| + | |||
| + | Triplet 여부도 이 스크립트를 통해서 판별할 수 있다. | ||
| + | < | ||
| + | grid : triplet | ||
| </ | </ | ||
| Line 323: | Line 328: | ||
| } | Sort-Object Grid, File | Export-Csv mid_triplet_report.csv -NoTypeInformation | } | Sort-Object Grid, File | Export-Csv mid_triplet_report.csv -NoTypeInformation | ||
| </ | </ | ||
| - | ===== (optional) type 1 -> type 0 MIDI file로 전환 ===== | + | |
| - | **mid_check.py**를 이용한다. 이 스크립트는 폴더 단위로 작동함에 유의하라. | + | |
| ===== 2. Type 0 MIDI 파일을 2 bar 단위로 분할 ===== | ===== 2. Type 0 MIDI 파일을 2 bar 단위로 분할 ===== | ||
| - | 다음은 .MID 파일이 위치한 폴더에서 실행하는 사례이다. 패턴의 유사도를 측정하는 일은 제법 까다롭다. 나의 경우는 곡 전체의 드럼 패턴을 연구하는 것이 아니라 재사용 목적으로 배포(? | ||
| - | < | ||
| - | > python.exe ..\tools\split_drums_2bar_save.py .\Blues10.mid --export-grid | ||
| - | Saved: BLU_P001.MID | ||
| - | Saved: BLU_P002.MID | ||
| - | Saved: BLU_P003.MID | ||
| - | Saved: BLU_P004.MID | ||
| - | Saved: BLU_P005.MID | ||
| - | Saved: BLU_P006.MID | ||
| - | === Pattern extraction report for Blues10.mid === | + | ADT 파일을 만드는 가장 중요한 입력물인 |
| - | Ticks per beat : 480 | + | |
| - | Initial time sig : 4/4 | + | |
| - | Bar ticks : 1920 | + | |
| - | Total ticks : 30722 | + | |
| - | Total bars (floor) | + | |
| - | Used bars (2-bar xN): 16 | + | |
| - | Dropped full bars : 0 | + | |
| - | Tail remainder | + | |
| - | Similarity threshold: 80.0% (hybrid; global min 35.0%) | + | |
| - | - Note: A partial tail after bar 16 was ignored. | ||
| - | Unique pattern groups: 6 | + | ^ 코드 ^ 매칭 키워드 (파일명 내) ^ 장르 풀네임 ^ |
| - | Group -> Output file: | + | | RCK | rock | Rock | |
| - | 1: BLU_P001.MID | + | | BOS | bossa, bossanova | Bossa Nova | |
| - | 2: BLU_P002.MID | + | | FNK | funk | Funk | |
| - | 3: BLU_P003.MID | + | | JZZ | jazz | Jazz | |
| - | 4: BLU_P004.MID | + | | BLU | blues, blue | Blues | |
| - | 5: BLU_P005.MID | + | | LAT | latin | Latin | |
| - | 6: BLU_P006.MID | + | | SMB | samba | Samba | |
| + | | WLZ | waltz, wlz | Waltz | | ||
| + | | SWG | swing, swg | Swing | | ||
| + | | SHF | shuffle, shf | Shuffle | | ||
| + | | REG | reggae | Reggae | | ||
| + | | MTL | metal | Metal | | ||
| + | | HHP | hip hop, hip-hop, hiphop, hhp | Hip Hop | | ||
| + | | HSE | house, hse | House | | ||
| + | | TNO | techno, tno | Techno | | ||
| + | | DRM | (기본값: 어떤 키워드에도 매칭되지 않을 때) | Generic Drum / Default | | ||
| - | Pattern classification vs group 1 (assumed main GROOVE): | + | < |
| - | Group 1: GROOVE | + | > python.exe ..\tools\split_drums_2bar_save.py .\2BALLAD.MID --print-genre-only |
| - | Group 2: GROOVE | + | [GENRE] Inferred from filename ' |
| - | Group 3: GROOVE | + | </ |
| - | Group 4: GROOVE | + | |
| - | Group 5: GROOVE | + | |
| - | Group 6: GROOVE | + | |
| - | Pattern chain by 2-bar slices (group IDs, ' | + | 실제 분할 작업에 들어가 보자. 기본 동작은 덮어쓰기이므로 동일 장르에 대하여 새로 만들어지는 패턴 번호를 지정하려면 %%--%%start START로 인덱스 번호를 주어야 한다. 장르 또한 자동 검출이 기본이나 지정해도 된다. 한 파일을 분할하여 만들어지는 모든 패턴은 동일한 장르가 된다. |
| - | 1*-2**-3**-4**-5**-6*-6-6 | + | |
| - | Slice details (index: bar_start -> group_id[mark]): | + | <code> |
| - | slice 00: bar 01 -> 1* [GROOVE] | + | > python.exe ..\tools\split_drums_2bar_save.py .\2BALLAD.MID |
| - | slice 01: bar 03 -> 2** [GROOVE] | + | Genre inferred from filename: BAL |
| - | slice 02: bar 05 -> 3** [GROOVE] | + | |
| - | slice 03: bar 07 -> 4** [GROOVE] | + | |
| - | slice 04: bar 09 -> 5** [GROOVE] | + | |
| - | slice 05: bar 11 -> 6* [GROOVE] | + | |
| - | slice 06: bar 13 -> 6 [GROOVE] | + | |
| - | slice 07: bar 15 -> 6 [GROOVE] | + | |
| - | Neighbor similarity details (adjacent slices, hybrid): | + | === 2-bar slicing report for 2BALLAD.MID === |
| - | slices 00-01 groups 1-2 global= 99.9% head= 99.9% tail= 99.9% mid_run= 50.0% | + | Ticks per beat : 240 |
| - | slices 01-02 groups | + | Initial time sig : 4/4 |
| - | | + | Bar ticks : 960 |
| - | | + | Total ticks : 28800 |
| - | | + | Total bars (floor) : 30 |
| - | + | Used bars (2-bar xN): 30 | |
| - | Similarity matrix between pattern groups | + | Dropped full bars |
| - | | + | Tail remainder |
| - | 1 100.0 99.9* 100.0* | + | |
| - | 2 99.9* 100.0 | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | Exporting grid PNGs for each pattern group... | + | Saved slice 0 (bars 1-2) -> BAL_P001.MID |
| - | Grid PNG saved: | + | Grid PNG saved: BAL_P001_grid.png |
| - | Grid PNG saved: | + | Saved slice 1 (bars 3-4) -> BAL_P002.MID |
| - | Grid PNG saved: | + | Grid PNG saved: |
| - | Grid PNG saved: | + | Saved slice 2 (bars 5-6) -> BAL_P003.MID |
| - | Grid PNG saved: | + | Grid PNG saved: |
| - | Grid PNG saved: | + | Saved slice 3 (bars 7-8) -> BAL_P004.MID |
| + | Grid PNG saved: | ||
| + | Saved slice 4 (bars 9-10) -> BAL_P005.MID | ||
| + | Grid PNG saved: | ||
| + | Saved slice 5 (bars 11-12) -> BAL_P006.MID | ||
| + | Grid PNG saved: | ||
| + | Saved slice 6 (bars 13-14) -> BAL_P007.MID | ||
| + | Grid PNG saved: | ||
| + | Saved slice 7 (bars 15-16) -> BAL_P008.MID | ||
| + | Grid PNG saved: BAL_P008_grid.png | ||
| + | Saved slice 8 (bars 17-18) -> BAL_P009.MID | ||
| + | Grid PNG saved: BAL_P009_grid.png | ||
| + | Saved slice 9 (bars 19-20) -> BAL_P010.MID | ||
| + | Grid PNG saved: BAL_P010_grid.png | ||
| + | Saved slice 10 (bars 21-22) -> BAL_P011.MID | ||
| + | Grid PNG saved: BAL_P011_grid.png | ||
| + | Saved slice 11 (bars 23-24) -> BAL_P012.MID | ||
| + | Grid PNG saved: BAL_P012_grid.png | ||
| + | Saved slice 12 (bars 25-26) -> BAL_P013.MID | ||
| + | Grid PNG saved: BAL_P013_grid.png | ||
| + | Saved slice 13 (bars 27-28) -> BAL_P014.MID | ||
| + | Grid PNG saved: BAL_P014_grid.png | ||
| + | Saved slice 14 (bars 29-30) -> BAL_P015.MID | ||
| + | Grid PNG saved: BAL_P015_grid.png | ||
| + | [grid-pdf] Saved high-res two-column PDF: BAL_grids_A4_2col_big.pdf | ||
| + | [grid-pdf] Running Ghostscript for A4 resize: | ||
| + | C:\Program Files\gs\gs10.06.0\bin\gswin64c.EXE -sDEVICE=pdfwrite -o BAL_grids_A4_2col.pdf -dDEVICEWIDTHPOINTS=595 -dDEVICEHEIGHTPOINTS=842 -dFIXEDMEDIA -dPDFFitPage -dNOPAUSE -dBATCH BAL_grids_A4_2col_big.pdf | ||
| + | GPL Ghostscript 10.06.0 (2025-09-09) | ||
| + | Copyright (C) 2025 Artifex Software, Inc. All rights reserved. | ||
| + | This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY: | ||
| + | see the file COPYING for details. | ||
| + | Processing pages 1 through 2. | ||
| + | Page 1 | ||
| + | Page 2 | ||
| + | [grid-pdf] Saved resized A4 PDF: BAL_grids_A4_2col.pdf | ||
| </ | </ | ||
| - | %%--%%export-grid 옵션은 모든 패턴에 대해 다음과 같은 그리드 이미지를 만든다. 패턴을 시각적으로 비교하기에 아주 편리할 것이다. 12개의 slot은 사전에 지정되어 있지만 이 범위를 벗어나는 것은 GM drum kit에 맞춘 노트 넘버로 표현된다. | + | %%--%%export-grid 옵션은 모든 패턴에 대해 다음과 같은 그리드 이미지를 만든다. 패턴을 시각적으로 비교하기에 아주 편리할 것이다. %%--%%grid-pdf 옵션은 모든 2-bar 패턴의 그리드를 하나로 모아서 여러 페이지의 PDF로 만들어 준다. 12개의 slot은 사전에 지정되어 있지만 이 범위를 벗어나는 것은 GM drum kit에 맞춘 노트 넘버로 표현된다. Triplet인 경우 자동으로 검출하여 12 step / bar로 만들어 준다. |
| {{ : | {{ : | ||
| Line 421: | Line 433: | ||
| | 11 | CP | 39 | Hand Clap | | | 11 | CP | 39 | Hand Clap | | ||
| - | |||
| - | **split_drums_2bar_save.py** 스크립트는 원본 .MID 파일의 이름으로부터 장르를 유추한 뒤 다음과 같이 패턴명에 삽입할 수 있는 3글자 약자를 만든다. | ||
| - | |||
| - | ^ 코드 ^ 매칭 키워드 (파일명 내) ^ 장르 풀네임 ^ | ||
| - | | RCK | rock | Rock | | ||
| - | | BOS | bossa, bossanova | Bossa Nova | | ||
| - | | FNK | funk | Funk | | ||
| - | | JZZ | jazz | Jazz | | ||
| - | | BLU | blues, blue | Blues | | ||
| - | | LAT | latin | Latin | | ||
| - | | SMB | samba | Samba | | ||
| - | | WLZ | waltz, wlz | Waltz | | ||
| - | | SWG | swing, swg | Swing | | ||
| - | | SHF | shuffle, shf | Shuffle | | ||
| - | | REG | reggae | Reggae | | ||
| - | | MTL | metal | Metal | | ||
| - | | HHP | hip hop, hip-hop, hiphop, hhp | Hip Hop | | ||
| - | | HSE | house, hse | House | | ||
| - | | TNO | techno, tno | Techno | | ||
| - | | DRM | (기본값: 어떤 키워드에도 매칭되지 않을 때) | Generic Drum / Default | | ||
| - | |||
| - | 유사한 패턴을 묶는 가장 효율적인 방법을 찾기가 매우 어렵다. 여러 .MID 파일에 대해 한꺼번에 작업을 할 때, 이미 동일한 장르의 패턴이 있는 경우 덮어쓰지 않고 번호를 새로 붙이게 만들어야 한다. | ||
| 하위 디렉토리(00_orig_MIDI_files)에 있는 모든 .MID 파일에 대하여 이 스크립트를 실행하고 화면 출력을 하나의 텍스트 파일에 담는 명령어는 다음을 참고하라. 생성된 패턴 MID 파일에 대해서는 재작업을 하지 않아야 하니 명령어가 한층 더 복잡해졌다. Bash가 그립다! 이전 단계에서 동일한 장르의 패턴이 만들어진 경우 기본 동작은 덮어쓰기이므로, | 하위 디렉토리(00_orig_MIDI_files)에 있는 모든 .MID 파일에 대하여 이 스크립트를 실행하고 화면 출력을 하나의 텍스트 파일에 담는 명령어는 다음을 참고하라. 생성된 패턴 MID 파일에 대해서는 재작업을 하지 않아야 하니 명령어가 한층 더 복잡해졌다. Bash가 그립다! 이전 단계에서 동일한 장르의 패턴이 만들어진 경우 기본 동작은 덮어쓰기이므로, | ||
| Line 498: | Line 488: | ||
| .\ADP\*.ADP 및 .\SD\SYSTEM\INDEX.TXT를 SD 카드의 \PATTERNS와 \SYSTEM으로 복사하면 된다. | .\ADP\*.ADP 및 .\SD\SYSTEM\INDEX.TXT를 SD 카드의 \PATTERNS와 \SYSTEM으로 복사하면 된다. | ||
| + | ===== 패턴 간 유사도 측정 ===== | ||
| + | 패턴을 많이 모으게 되면 그중에는 틀림없이 똑같은 것도 나타날 것이다. 패턴이 몇개 되지 않는다면 그리드로 시각화하여 눈으로 비교하는 것이 가능하나, | ||
| + | ====== 드럼 패턴 파일 입수처 ====== | ||
| + | * [[https:// | ||
| + | * 1987년에 발간된 책자의 스캔본은 [[https:// | ||
| + | * https:// | ||
nano_ardule_midi_controller/adt_v2.2.1763894118.txt.gz · Last modified: by hyjeong
