User Tools

Site Tools


nano_ardule_midi_controller:slot_reassignment_by_editor

This is an old revision of the document!


Slot Reassignment by Editor

Last updated: 2026 -02-09_

설계 개념서 (Design Concept)

문서 유형: 설계 개념 / 편집기 동작 명확화 적용 범위: APS (Ardule Pattern Studio) 편집기 – ADT 패턴 처리 상태: 초안 (개념 설계)


1. 배경

ADT(Ardule Drum Pattern Text)는 드럼 패턴을 고정된 길이의 스텝 시퀀스고정된 개수의 슬롯(slot, 일반적으로 12개)으로 표현한다. 각 슬롯은 ADT 헤더의 SLOTn=CODE@NOTE,LABEL 정의를 통해 특정 MIDI 노트에 매핑된다.

실제 사용 환경에서 사용자는 각 슬롯을 흔히 *악기 행(instrument row)*으로 인식한다. 그러나 스펙 및 데이터 모델 관점에서 슬롯은 특정 악기나 사운드에 본질적으로 고정된 개념이 아니다.

이 구분은 MIDI 패드나 키보드와 같은 외부 컨트롤러로부터, 사전에 정의되지 않은 노트 번호가 실시간으로 입력될 수 있는 상황을 지원할 때 특히 중요해진다.


2. 문제 정의

전통적인 스텝 시퀀서는 행(row)과 악기(instrument)의 고정된 대응 관계를 전제로 한다. 이 경우 다음과 같은 문제가 발생한다.

  • 미리 매핑되지 않은 MIDI 노트 입력은 무시되거나
  • 편집기 내부 구조를 확장하여 슬롯 수를 늘려야 한다

APS에서는 두 접근 모두 바람직하지 않다.

  • 입력을 무시하면 패드 기반 연주의 표현력이 사라진다.
  • 슬롯 수 확장은 ADT의 고정 슬롯 설계를 깨뜨리고 기존 도구와의 호환성을 저해한다.

따라서 APS에는 다음 조건을 만족하는 메커니즘이 필요하다.

  • 임의의 MIDI 노트 입력을 수용할 것
  • ADT가 정의한 고정 슬롯 개수를 유지할 것
  • 저장 시 단일 ADT 파일만을 생성할 것
  • ADT 포맷 자체에는 구조적 변경을 가하지 않을 것

3. 핵심 설계 원칙

ADT에서 슬롯은 고정 악기가 아니라 리듬적 역할(rhythmic role)이다.

이 원칙에 따라 다음이 성립한다.

  • 슬롯의 개수는 고정되고 권위적이다.
  • 슬롯이 어떤 악기를 의미하는지는 헤더의 매핑 정의에 의해서만 결정된다.
  • 편집기는 패턴 본문의 구조를 유지하는 한, 슬롯 정의를 수정할 수 있다.

따라서 슬롯 재정의(slot reassignment)는 파일 포맷의 변경이 아니라 편집기 수준의 동작으로 간주된다.


4. 슬롯 재정의 개념

슬롯 재정의란, 사용자의 입력에 반응하여 기존 슬롯 정의를 새로운 MIDI 노트 매핑으로 교체하는 편집기 동작을 의미한다.

이 동작은 다음 조건에서 발생한다.

  • MIDI Note On 이벤트가 수신되었고
  • 해당 노트 번호가 현재 어떤 슬롯에도 할당되어 있지 않으며
  • 패턴 전체에 걸쳐 완전히 비어 있는 슬롯이 하나 이상 존재할 경우

이때 편집기는 슬롯 수를 늘리거나 입력을 버리는 대신, 비어 있는 슬롯 하나를 선택하여 해당 노트로 재정의한다.


5. 적용 자격 규칙

슬롯 재정의는 예측 가능성과 안전성을 위해 엄격한 규칙을 따른다.

5.1 고정(보호) 슬롯

편집기 정책에 따라 특정 슬롯은 코어 슬롯(core slots)으로 지정될 수 있다 (예: Kick, Snare, Closed Hi-Hat, Open Hi-Hat).

  • 코어 슬롯은 재정의 대상이 아니다.
  • 이는 ADT 포맷의 요구 사항이 아니라, 편집기 구현 정책이다.

5.2 재정의 가능 슬롯

다음 조건을 모두 만족하는 슬롯만 재정의가 가능하다.

  • 보호 슬롯이 아닐 것
  • 패턴 전체 길이에 걸쳐 단 한 번도 노트 이벤트가 존재하지 않을 것

이 판단은 현재 마디나 화면 범위가 아닌, 패턴 전체를 기준으로 수행된다.


6. 재정의 절차

정의되지 않은 MIDI 노트가 입력되면, 편집기는 다음 절차를 따른다.

  1. 해당 노트가 이미 어떤 슬롯에 매핑되어 있는지 확인한다.
  2. 매핑되어 있지 않다면, 우선순위 규칙에 따라 재정의 가능한 빈 슬롯을 탐색한다.
  3. 선택된 슬롯의 SLOTn=CODE@NOTE,LABEL 정의를 새로운 노트로 갱신한다.
  4. 현재 스텝 위치에 노트 이벤트를 기록한다.

재정의 가능한 슬롯이 없을 경우, 편집기는 입력을 거부하거나 사용자에게 알림을 제공할 수 있다. 데이터가 있는 슬롯을 자동으로 대체하는 동작은 본 개념서의 범위에 포함되지 않는다.


7. 저장 및 지속성 모델

슬롯 재정의는 ADT 헤더의 직접적인 수정으로 귀결된다.

  • 보조 파일이나 사이드카 데이터는 생성되지 않는다.
  • 저장 시, 단일 ADT 파일이 패턴 데이터와 슬롯-노트 매핑을 모두 포함한다.
  • ADT 파일을 다시 열면, 재정의된 슬롯 상태가 그대로 복원된다.

이는 APS 프로젝트가 항상 하나의 이식 가능한 ADT 파일로 귀결되어야 한다는 요구를 만족한다.


8. 사용자 경험(UX) 고려 사항

사용자 관점에서 슬롯 재정의는 다음과 같은 특성을 갖는다.

  • 편집 세션에 따라 화면에 표시되는 악기 목록이 달라질 수 있다.
  • 이는 파일에 정의된 슬롯 매핑이 권위적이기 때문에 발생하는 의도된 결과이다.
  • 편집기는 슬롯 재정의 발생 시, 상태 메시지나 로그 등으로 이를 명확히 사용자에게 전달하는 것이 바람직하다.

UI 상에서는 슬롯을 악기 행으로 표현하되, 내부 모델은 본 문서에서 정의한 슬롯/역할 개념을 따른다.


9. ADT 스펙과의 관계

본 설계는 다음 조건을 모두 만족한다.

  • ADT 파일 구조를 변경하지 않는다.
  • 슬롯 개수를 증가시키지 않는다.
  • ADT v2.x 스펙과 완전히 호환된다.

슬롯 재정의는 ADT의 비고정 악기 의미론에 기반한, 합법적이고 의도된 사용 패턴이다.


10. 요약

편집기에 의한 슬롯 재정의는, ADT의 고정 슬롯 설계를 유지하면서도 실시간 MIDI 입력의 표현력을 확보하기 위한 핵심 메커니즘이다.

슬롯을 불변의 악기가 아닌 가변적인 리듬 역할로 취급함으로써, APS는 단일 ADT 파일이라는 제약 안에서 유연성, 이식성, 하위 호환성을 동시에 달성할 수 있다.

nano_ardule_midi_controller/slot_reassignment_by_editor.1770642351.txt.gz · Last modified: by hyjeong