User Tools

Site Tools


nano_ardule_midi_controller:add_ads_binary_stream_output_to_adc-arrtool

adc-arrtool ADS 출력 기능 추가 – 작업 맥락 프롬프트

작성일: 2026-01-10

이 문서는 NanoArdule 프로젝트adc-arrtool.pyADS 출력 기능을 추가하기 위한 맥락 전달용 프롬프트입니다.
새 대화창에서 그대로 사용하도록 설계되었습니다.

--

프로젝트 현황 요약

  • 도구: adc-arrtool.py
  • 역할: ARR → MIDI 변환 유틸리티
  • 현재 기준 버전: v10 계열 (안정 버전)
  • MIDI 출력:
    • 정상 동작 확인됨
    • 일부 HTML/Web MIDI 플레이어의 tick 0 이벤트 누락 문제를 회피하기 위해
      카운트인 및 첫 이벤트를 tick=1부터 시작하는 미세 오프셋 사용
  • ARR 처리 원칙:
    • MAIN만 사용
    • loop, repeat 등은 무시
    • 메타 정보(SECTION marker 등)는 당분간 미룸

새 작업 목표

adc-arrtool.pyADS(Ardule Data Stream) 출력 기능을 추가한다.


요구사항

1. CLI 인터페이스

  • 기존 옵션 유지
  • --format 옵션에 ads 추가
    • 기존: --format midi
    • 신규: --format ads

2. 입력 및 기본값

  • 입력 ARR 파일:
    • 예: .\patterns\SONG_001.ARR
  • 패턴 디렉토리 기본값:
    • 지정하지 않으면 .\patterns
  • Velocity map:
    • 기본값 사용
    • ADT v2.2a 기준: . - x o (4레벨)

3. ARR 처리

  • ARR의 MAIN 체인만 사용
  • 각 MAIN 엔트리는 ADT 패턴을 가리킴
  • ADT 로딩 후 MAIN 순서대로 결합

4. ADS 생성 규칙

  • 출력은 Nano Ardule 재생 엔진이 스트리밍 재생 가능한 형태
  • 연속된 이벤트/스텝 데이터 구조
  • 메모리 사용을 고려한 단순 포맷
  • 우선은 ADS v0.1 (초안) 으로 정의해도 무방

5. 카운트인 처리

  • 카운트인용 패턴 파일은 사용하지 않음
  • closed hi-hat 기준:
    • beat당 1회
    • 4/4 기준 한 마디 = 4회
  • 필요 시 기존과 동일하게 tick=1 오프셋 유지

6. Half Pattern 처리

  • half pattern (_H, _h 또는 PLAY_BARS=1)은
    • 1마디 길이로 반영
  • full pattern은 2마디 기준

7. 구현 원칙

  • 기존 MIDI 출력 코드:
    • 가급적 수정하지 말 것
  • ADS 관련 로직:
    • 별도 함수로 추가
    • if format == "ads" 분기에서 호출
  • 우선 목표:
    • 구조 명확성
    • 디버깅 가능성
    • 완전한 최적화는 나중 단계

요청 사항

  • ADS v0.1 초안 포맷 정의
  • ADS 생성 로직 제안 및 코드 패치
  • 간단한 검증 방법(출력 예시 또는 dump 방식)
nano_ardule_midi_controller/add_ads_binary_stream_output_to_adc-arrtool.txt · Last modified: by hyjeong