nano_ardule_midi_controller:slot_reassignment_by_editor
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| nano_ardule_midi_controller:slot_reassignment_by_editor [2026/02/09 22:01] – created hyjeong | nano_ardule_midi_controller:slot_reassignment_by_editor [2026/02/09 23:02] (current) – hyjeong | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| < | < | ||
| + | |||
| + | # Slot Reassignment by Editor | ||
| _Last updated: 2026-02-09_ | _Last updated: 2026-02-09_ | ||
| + | |||
| + | 다음의 그림은 노트 번호를 잘못 기록한 곳이 있으니 수정해야 함. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | ## 설계 개념서 (Design Concept) | ||
| + | |||
| + | **문서 유형**: 설계 개념 / 편집기 동작 명확화 | ||
| + | **적용 범위**: APS (Ardule Pattern Studio) 편집기 – ADT 패턴 처리 | ||
| + | **상태**: 초안 (개념 설계) | ||
| + | |||
| + | --- | ||
| + | |||
| + | ## 1. 배경 | ||
| + | |||
| + | ADT(Ardule Drum Pattern Text)는 드럼 패턴을 **고정된 길이의 스텝 시퀀스**와 | ||
| + | **고정된 개수의 슬롯(slot, | ||
| + | ADT 헤더의 `SLOTn=CODE@NOTE, | ||
| + | |||
| + | 실제 사용 환경에서 사용자는 각 슬롯을 흔히 *악기 행(instrument row)*으로 | ||
| + | 인식한다. 그러나 스펙 및 데이터 모델 관점에서 슬롯은 **특정 악기나 사운드에 | ||
| + | 본질적으로 고정된 개념이 아니다.** | ||
| + | |||
| + | 이 구분은 MIDI 패드나 키보드와 같은 외부 컨트롤러로부터, | ||
| + | 노트 번호가 실시간으로 입력될 수 있는 상황을 지원할 때 특히 중요해진다. | ||
| + | |||
| + | --- | ||
| + | |||
| + | ## 2. 문제 정의 | ||
| + | |||
| + | 전통적인 스텝 시퀀서는 행(row)과 악기(instrument)의 고정된 대응 관계를 | ||
| + | 전제로 한다. 이 경우 다음과 같은 문제가 발생한다. | ||
| + | |||
| + | * 미리 매핑되지 않은 MIDI 노트 입력은 무시되거나 | ||
| + | * 편집기 내부 구조를 확장하여 슬롯 수를 늘려야 한다 | ||
| + | |||
| + | APS에서는 두 접근 모두 바람직하지 않다. | ||
| + | |||
| + | * 입력을 무시하면 패드 기반 연주의 표현력이 사라진다. | ||
| + | * 슬롯 수 확장은 ADT의 고정 슬롯 설계를 깨뜨리고 기존 도구와의 호환성을 | ||
| + | 저해한다. | ||
| + | |||
| + | 따라서 APS에는 다음 조건을 만족하는 메커니즘이 필요하다. | ||
| + | |||
| + | * 임의의 MIDI 노트 입력을 수용할 것 | ||
| + | * ADT가 정의한 고정 슬롯 개수를 유지할 것 | ||
| + | * 저장 시 단일 ADT 파일만을 생성할 것 | ||
| + | * ADT 포맷 자체에는 구조적 변경을 가하지 않을 것 | ||
| + | |||
| + | --- | ||
| + | |||
| + | ## 3. 핵심 설계 원칙 | ||
| + | |||
| + | > **ADT에서 슬롯은 고정 악기가 아니라 리듬적 역할(rhythmic role)이다.** | ||
| + | |||
| + | 이 원칙에 따라 다음이 성립한다. | ||
| + | |||
| + | * 슬롯의 개수는 고정되고 권위적이다. | ||
| + | * 슬롯이 어떤 악기를 의미하는지는 헤더의 매핑 정의에 의해서만 결정된다. | ||
| + | * 편집기는 패턴 본문의 구조를 유지하는 한, 슬롯 정의를 수정할 수 있다. | ||
| + | |||
| + | 따라서 슬롯 재정의(slot reassignment)는 **파일 포맷의 변경이 아니라 | ||
| + | 편집기 수준의 동작**으로 간주된다. | ||
| + | |||
| + | --- | ||
| + | |||
| + | ## 4. 슬롯 재정의 개념 | ||
| + | |||
| + | **슬롯 재정의**란, | ||
| + | 노트 매핑으로 교체하는 편집기 동작을 의미한다. | ||
| + | |||
| + | 이 동작은 다음 조건에서 발생한다. | ||
| + | |||
| + | * 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, | ||
| + | 4. 현재 스텝 위치에 노트 이벤트를 기록한다. | ||
| + | |||
| + | 재정의 가능한 슬롯이 없을 경우, 편집기는 입력을 거부하거나 사용자에게 | ||
| + | 알림을 제공할 수 있다. 데이터가 있는 슬롯을 자동으로 대체하는 동작은 | ||
| + | 본 개념서의 범위에 포함되지 않는다. | ||
| + | |||
| + | --- | ||
| + | |||
| + | ## 7. 저장 및 지속성 모델 | ||
| + | |||
| + | 슬롯 재정의는 **ADT 헤더의 직접적인 수정**으로 귀결된다. | ||
| + | |||
| + | * 보조 파일이나 사이드카 데이터는 생성되지 않는다. | ||
| + | * 저장 시, 단일 ADT 파일이 패턴 데이터와 슬롯-노트 매핑을 모두 포함한다. | ||
| + | * ADT 파일을 다시 열면, 재정의된 슬롯 상태가 그대로 복원된다. | ||
| + | |||
| + | 이는 APS 프로젝트가 항상 하나의 이식 가능한 ADT 파일로 귀결되어야 한다는 | ||
| + | 요구를 만족한다. | ||
| + | |||
| + | --- | ||
| + | |||
| + | ## 8. 사용자 경험(UX) 고려 사항 | ||
| + | |||
| + | 사용자 관점에서 슬롯 재정의는 다음과 같은 특성을 갖는다. | ||
| + | |||
| + | * 편집 세션에 따라 화면에 표시되는 악기 목록이 달라질 수 있다. | ||
| + | * 이는 파일에 정의된 슬롯 매핑이 권위적이기 때문에 발생하는 의도된 결과이다. | ||
| + | * 편집기는 슬롯 재정의 발생 시, 상태 메시지나 로그 등으로 이를 명확히 | ||
| + | 사용자에게 전달하는 것이 바람직하다. | ||
| + | |||
| + | UI 상에서는 슬롯을 악기 행으로 표현하되, | ||
| + | 슬롯/ | ||
| + | |||
| + | --- | ||
| + | |||
| + | ## 9. ADT 스펙과의 관계 | ||
| + | |||
| + | 본 설계는 다음 조건을 모두 만족한다. | ||
| + | |||
| + | * ADT 파일 구조를 변경하지 않는다. | ||
| + | * 슬롯 개수를 증가시키지 않는다. | ||
| + | * ADT v2.x 스펙과 완전히 호환된다. | ||
| + | |||
| + | 슬롯 재정의는 ADT의 비고정 악기 의미론에 기반한, 합법적이고 의도된 | ||
| + | 사용 패턴이다. | ||
| + | |||
| + | --- | ||
| + | |||
| + | ## 10. 요약 | ||
| + | |||
| + | 편집기에 의한 슬롯 재정의는, | ||
| + | 실시간 MIDI 입력의 표현력을 확보하기 위한 핵심 메커니즘이다. | ||
| + | |||
| + | 슬롯을 불변의 악기가 아닌 가변적인 리듬 역할로 취급함으로써, | ||
| + | APS는 단일 ADT 파일이라는 제약 안에서 유연성, 이식성, 하위 호환성을 | ||
| + | 동시에 달성할 수 있다. | ||
| + | |||
nano_ardule_midi_controller/slot_reassignment_by_editor.1770642069.txt.gz · Last modified: by hyjeong
