nano_ardule_midi_controller:ardule_microsd_midi_player
Table of Contents
Ardule microSD MIDI Player
2025년 10월 28일 본격 착수함. 하드웨어 및 주변부 회로 설정은 Nano Ardule MIDI Controller를 그대로 따름. 현재 사용 중인 아두이노 나노 호환 보드는 아두이노 나노 '에브리'로 바뀔 가능성이 있음.
설계안
1. MicroSD 카드의 최상위에는 DRUMS와 SONGS 폴더가 있음
- 각 하위에는 8.3 파일명 포맷의 type 0 MIDI 파일이 들어 있으며, DRUMS/INDEX.TXT 및 SONGS/INDEX.TXT는 파일 목록을 수록함(1 라인 = 1 파일)
- 만약 INDEX.TXT 파일 내의 줄바꿈 문자를 인식하는데 문제 발생 소지가 있다면, 어떤 편집기를 써야 하는지(또는 후처리가 필요한지) 정확히 알려줄 것
2. 인코더를 돌려서 LCD에 표시된 DRUMS와 SONGS중 하나를 선택한 뒤 인코더 버튼(D4)를 클릭하여 진입
3. 진입 후 해당 폴더내의 INDEX.TXT를 페이지 단위(16개 파일)로 읽어서 LCD에 표시
- 페이지를 바꾸려면 D7(+) 또는 D8(-) 버튼을 클릭
- D6(Stop/Exit)를 클릭하면 상위 모드, 즉 DRUMS와 SONGS 폴더 선택 화면으로 이동
4. 인코더를 돌려서 재생할 파일로 이동한 뒤 클릭하면 곡 기본 정보(BPM, 전체 마디 수, 2마디 단위의 패턴 분포 등)를 LCD에 표시
- 이 상태에서는 D7(+) 또는 D8(-) 버튼으로 BPM 조절
- 패턴 선택 후 반복 플레이하는 기능은 나중에 추가(예: 특정 버튼을 눌러서 인코더를 돌려서 패턴 1, 2, 3…을 이동한 뒤 클릭하여 선택)
5. A3(Play/Pause)를 클릭하여 재생 및 일시정지
- 재생 중에 인코더를 돌리면 볼륨 조절
- 인코더를 클릭하면 BPM 조절 모드로 이동(인코더를 돌려서 수치 변경)
- 인코더를 재차 클릭하면 Reverb 조절 모드로 이동(인코더를 돌려서 수치 변경; 기본값은 40)
- 인코더를 재차 클릭하면 드럼킷 변경 모드로 이동(인코더를 돌려서 변경)
⇒ 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)를 클릭하면 현재 파일을 닫고 다음 파일을 로드
- 이 상태에서 D6(Stop/Exit)를 또 클릭하면 페이지뷰 화면으로 이동
- 재생 중에 인코더 버튼(D4)를 길게 누르면 All notes off 메시지 전송
추가 기능
- MIDI IN 신호는 그대로 MIDI OUT으로 보냄. 채널 10으로 들어오는 것은 그대로 전송, 채널 1로 들어오는 것(예: 키보드 컨트롤러)은 채널 10으로 보냄. 드럼 전용 플레이어라서 그렇게 설계함. 멀티채널 재생이 필요하면 것은 SD카드에 MIDI 파일을 담아서 재생할 것.
2025년 10월 29일 요청 사항
- /DRUMS나 /SONGS 어디로 진입하든 MIDI 파일 로드 후 play 동작(A3, D6 버튼 클릭)에서는 차이가 없도록 해 줘.
- 단,/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 중에 선택하게 함.
- 재생 중에는 A2 LED를 매 비트마다 점멸시켜 줘
- D9 LED는 MIDI activity를 나타내 줘
- A3과 D6을 동시에 누르면 SAM9703 도터보드를 리셋
- 1~2 비트의 카운트인 지연(START_DELAY_BEATS) 기능 추가: 초반 note burst 현상 완화
nano_ardule_midi_controller/ardule_microsd_midi_player.txt · Last modified: by hyjeong
