User Tools

Site Tools


nano_ardule_midi_controller:drum_pattern_player_design

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
nano_ardule_midi_controller:drum_pattern_player_design [2025/10/22 13:20] – [2. 시스템 개요(System Overview)] hyjeongnano_ardule_midi_controller:drum_pattern_player_design [2025/11/05 08:37] (current) – [13. 요약] hyjeong
Line 6: Line 6:
  
 그려놓고 보니 전혀 말이 되지 않는 드럼 패턴이다. 그려놓고 보니 전혀 말이 되지 않는 드럼 패턴이다.
 +
 +Nano Ardule Drum Pattern Player의 설계 개념은, **저사양 마이크로컨트롤러 환경에서도 완전한 리듬 프로그래밍과 드럼 패턴 재생을 가능하게 하는 초경량 드럼 머신 아키텍처**를 구현하는 데 있다. 중심 철학은 **“MIDI 파일 수준의 표현력, 아두이노 수준의 단순성”**이다. 이를 위해 음악 제작 도구에서 사용되는 복잡한 MIDI 이벤트 구조를 간결한 2마디 단위의 **ADT(Ardule Drum Text)** 포맷으로 정규화하고, 이를 장치에서 빠르게 읽을 수 있는 **ADP(Ardule Drum Pattern)** 바이너리 캐시로 변환하는 방식을 채택했다.
 +
 +ADT는 사람이 읽고 편집할 수 있는 텍스트 기반 리듬 표기법으로, 12개의 드럼 슬롯과 24/32/48스텝의 다양한 시간 해상도, 그리고 트리플렛(8T/16T) 그리드를 지원한다. ADP는 이 데이터를 압축된 바이너리 형태로 저장하여 마이크로컨트롤러(ATmega328P, Nano 등)가 실시간으로 불러와도 지터 없이 재생할 수 있도록 설계되었다. 이러한 구조 덕분에, SD카드에 수백 개의 패턴을 저장하고도 빠른 로딩과 스무스한 전환이 가능하다.
 +
 +사용자는 PC에서 Python 기반의 전처리 툴체인(midi2adt.py, adt2adp.py, mkindex.py, arr_make.py)을 이용해 MIDI 리듬 데이터를 자동 변환하고, 장르별 인덱스와 곡 구성 파일(ARR)을 생성한다. 하드웨어 단에서는 LCD와 버튼, 엔코더만으로도 패턴 미리듣기, 반복 재생, 템포 및 드럼 킷 변경을 수행할 수 있다.
 +
 +결국 이 프로젝트의 목적은 **대형 워크스테이션의 일부 기능을 손바닥 크기의 오픈소스 드럼 시퀀서로 축약**하는 것이다. “Nano Ardule”이라는 이름은 아두이노의 단순함과 인간적인 ‘수공예 리듬’을 결합한 정신을 상징하며, 음악 창작의 접근성을 극대화하는 것이 이 시스템의 가장 큰 취지이다.
  
 ---- ----
Line 206: Line 214:
  
 **파일 확장자:** `.APT`   **파일 확장자:** `.APT`  
-**표준 헤더 문자열:** `# Ardule Pattern Text v1.0`+**표준 헤더 문자열:** `# Ardule Pattern Text v2.1`
  
 **기본 구조(Basic Layout) - 8 비트 Rock 예시** **기본 구조(Basic Layout) - 8 비트 Rock 예시**
  
 <code> <code>
-# Ardule Pattern Text v1.0 +STEPS=32 BPM=109 MIDI_CH=9 TIME_SIG=4/
-GENRERock +SLOTS=Kick:36,Snare:38,CHH:42,OHH:46,Crash:49,HighTom:50,LowTom:45,Ride:51 
-BPM112 +Ride:     .... .... .... .... || .... .... .... ...
-KIT0 +HighTom .... .... .... .... || .... .... .... .... 
-SLOTS8 +Crash   .... .... .... .... || .... .... .... .... 
-ACCENTS4  # 0~3 단계 (pp, mp, mf, ff)+OHH     .... .... .... .... || .... .... .... .... 
 +LowTom  .... .... .... .... || .... .... .... .... 
 +CHH     o.o. o.o. o.o. o.o. || o.o. o.o. o.o. o.o. 
 +Snare:    .... o... .... o... || .... o... .... o... 
 +Kick:     o.o. ..o. o.o. ..o. || o.o. ..o. o.o. ..o.
  
-[NOTE MAP] 
-0: 36  Kick 
-1: 38  Snare 
-2: 42  Closed HH 
-3: 46  Open HH 
-4: 49  Crash 
-5: 50  High Tom 
-6: 45  Low Tom 
-7: 51  Ride 
- 
-[PATTERN GRID] 
 # row = 파트(악기), column = 스텝(시간) # row = 파트(악기), column = 스텝(시간)
 # 32스텝 = 2마디 (4/4 × 2) # 32스텝 = 2마디 (4/4 × 2)
 # 기호(대소문자 무시): # 기호(대소문자 무시):
-#   X/x = ACC3 (강박) +#   ^   = ACC3 (강박) 
-#   O/= ACC2 (중간강) +#   X/= ACC2 (중간강) 
-#   .   = ACC1 (약박) +#   O/o = ACC1 (약박) 
-#     = ACC0 (무음)+#     = ACC0 (무음)
  
-Crash: X------------------------------- 
-Kick : X-----o-X---o---X-----o-X---o--- 
-Snare: ----X-------X-------X-------X--- 
-CHH  : x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x- 
-OHH  : ------------------------------o- 
 </code> </code>
  
Line 249: Line 245:
  
 ^ 기호(Symbol) ^ ACC ^ Velocity 예시 ^ 의미(Meaning) ^ ^ 기호(Symbol) ^ ACC ^ Velocity 예시 ^ 의미(Meaning) ^
-X / x | 3 | 112 | 강박 (forte) | +| 3 | 112 | 강박 (forte) | 
-| 2 | 96  | 중간강 (mezzo forte) | +| 2 | 96  | 중간강 (mezzo forte) | 
-.     | 1 | 64  | 약박 (mezzo piano) |+O / o | 1 | 64  | 약박 (mezzo piano) |
 | -     | 0 | — | 무음 (rest) | | -     | 0 | — | 무음 (rest) |
  
Line 292: Line 288:
  
  
-{{ :nano_ardule_midi_controller:drum_pattern_format_v1_1_with_diagram.docx |}} <- 위 본문보다 이전에 작성되었음+  * {{ :nano_ardule_midi_controller:drum_pattern_format_v1_1_with_diagram.docx |}} <- 위 본문보다 이전에 작성되었음 
 +  * {{ :nano_ardule_midi_controller:adx_tools.zip |}} 
 +  * {{ :nano_ardule_midi_controller:apt_v2.1_specification.docx |}} 
 +  * {{ :nano_ardule_midi_controller:adx_v2.2_specification.pdf |}} 
 +  * {{ :nano_ardule_midi_controller:sse_v2.2_specification.pdf |}} 
  
nano_ardule_midi_controller/drum_pattern_player_design.1761106807.txt.gz · Last modified: by hyjeong