Table of Contents

Ardule microSD MIDI Player

2025년 10월 28일 본격 착수하였다. 하드웨어 및 주변부 회로 설정은 Nano Ardule MIDI Controller를 그대로 따른다. 현재 사용 중인 아두이노 나노 호환 보드는 아두이노 나노 '에브리'로 바뀔 가능성이 있다.

2025일 11월 3일 현재 아두이노 나노에서 v1.2f_hotfix4가 잘 작동 중이다. 이 버전은 마이크로SD카드의 /SONGS와 /DRUMS 폴더에 있는 INDEX.TXT 파일을 읽어서 그 안에 수록된 type 0 MIDI 파일을 재생한다.

패턴 기반 드럼 재생을 위해 2-bar 단위의 드럼 패턴을 추출하는 파이썬 스크립트를 만들어서 테스트를 마쳤다. 드럼 패턴 파일(.mid)는 마이크로SD카드에 저장하여 둔다.

단순 MIDI 파일 재생 기능과 드럼 패턴 재생 기능을 전부 스케치에 올려서 아두이노 나노에 업로드하기에는 쉽지 않았다. 메모리가 부족하기 때문이다. 따라서 아두이노 나노에서는 단순 MIDI 파일 재생 기능을 제거한 뒤 드럼 패턴 플레이 기능을 넣어 보려고 노력 중이다. 메모리가 충분한 아두이노 나노 에브리에서는 달라질 수도 있을 것이라고 기대한다.

MIDI 파일 단순 재생기 설계안

1. MicroSD 카드의 최상위에는 DRUMS와 SONGS 폴더가 있음

2. 인코더를 돌려서 LCD에 표시된 DRUMS와 SONGS중 하나를 선택한 뒤 인코더 버튼(D4)를 클릭하여 진입

3. 진입 후 해당 폴더내의 INDEX.TXT를 페이지 단위(16개 파일)로 읽어서 LCD에 표시

4. 인코더를 돌려서 재생할 파일로 이동한 뒤 클릭하면 곡 기본 정보(BPM, 전체 마디 수, 2마디 단위의 패턴 분포 등)를 LCD에 표시

5. A3(Play/Pause)를 클릭하여 재생 및 일시정지

⇒ SAM9703은 Program Change만으로 드럼킷이 변경됨(PC 1: Standard, 9: Room, 17: Power, 25: Electronic, 26: TR-808, 33: Jazz, 41: Brush, 49: Orchestra, 57: SFX, 127: CM-64/32)

6. 재생 또는 일시정지 상태에서 D6(Stop/Exit)를 클릭하면 현재 파일을 닫고 다음 파일을 로드

추가 기능

2025년 10월 29일 요청 사항

  1. /DRUMS나 /SONGS 어디로 진입하든 MIDI 파일 로드 후 play 동작(A3, D6 버튼 클릭)에서는 차이가 없도록 해 줘.
  2. 단,/DRUMS의 MIDI 파일을 선택했을 때에는 A6와 D5 버튼에 특별한 기능을 추가해 줘
    • A6: 드럼킷 선택 모드 진입(인코더를 돌려 드럼킷을 고름; LCD에서는 실제 드럼킷 이름을 표시할 것; 인코더 회전 후 일정 시간이 지나면 PC 명령으로 전송; 이전 모드 복귀는 D6 버튼; 따라서 드럼 연주 모드에서 인코더 버튼을 연속 눌러서 드럼킷 선택으로 진입하는 기능은 제거)
    • (드럼 패턴 분석 후 반복 재생) D5 버튼은 드럼 MIDI 파일의 패턴 분석을 개시함. 즉, 2-bar마디 단위로 데이터를 잘라 분석하여 출현 빈도가 많은 것부터 번호를 붙여 나열함(1: 12, 2: 10…). 만약 4마디 패턴이라면 2마디로 잘라서 2회 출현으로 간주함. 이를 '패턴 목록 및 빈도'라고 부르겠음. 인코더를 돌려 패턴 번호를 선택한 뒤 A3으로 재생 및 일시정지. D6을 클릭하면 다시 패턴 목록 및 빈도 화면으로 돌아감. 재생할 때에는 hihat count-in을 먼저 주되 카운트인 비트 수는 코드 내에서 2 또는 4 중에 선택하게 함.
  3. 재생 중에는 A2 LED를 매 비트마다 점멸시켜 줘
  4. D9 LED는 MIDI activity를 나타내 줘
  5. A3과 D6을 동시에 누르면 SAM9703 도터보드를 리셋
  6. 1~2 비트의 카운트인 지연(START_DELAY_BEATS) 기능 추가: 초반 note burst 현상 완화