Midra: 편집 가능하고 제어 가능한 음악 생성을 위한 에이전트 기반 프롬프트-투-코드 MIDI 작곡 프레임워크
요약
Midra는 자연어 프롬프트를 구조화되고 편집 가능한 MIDI 코드로 변환하는 에이전트 기반 작곡 프레임워크입니다. 기존의 불투명한 오디오 생성 방식과 달리, Midra는 코드 우선(code-first) 접근 방식을 채택하여 사용자가 중간 아티팩트를 검사하고 수정하며 전체 과정을 제어할 수 있게 합니다.
핵심 포인트
- 프롬프트 입력 → 구조화된 코드 구현 → MIDI 파일 출력의 워크플로우를 제공합니다.
- 코드 우선 원시 요소(code-first composition primitive)를 도입하여 투명성을 높였습니다.
- 에이전트 기반 작곡과 인간 참여형 편집(human-in-the-loop editing)에 적합합니다.
- 체크포인트 네이티브 파이프라인을 통해 각 단계가 영속화되고 재개 가능합니다.
Midra는 편집 가능하고 제어 가능한 음악 생성을 위한 에이전트 기반 프롬프트-투-코드 MIDI 작곡 프레임워크입니다.
이는 자연어 프롬프트를 구조화된 음악 코드로 변환한 다음, 검사, 수정 및 재사용할 수 있는 투명한 MIDI 파일을 렌더링합니다. 이는 불투명한(opaque) 종단 간(end-to-end) AI 오디오 생성 방식과는 다릅니다.
프롬프트로 입력하고, 코드로 구현하며, MIDI 파일로 출력합니다.
대부분의 음악 생성 시스템은 프롬프트로부터 직접 오디오를 생성하는데, 이는 강력하지만 종종 불투명합니다.
Midra는 코드 우선(code-first) 작곡 원시 요소(composition primitive)를 도입합니다:
- 자연어 프롬프트를 구조화되고 검사 가능한 음악 코드로 컴파일합니다.
- 중간 계획 아티팩트(intermediate planning artifacts)를 체크포인트 JSON 파일로 유지합니다.
- 편집 가능한 MIDI를 렌더링하여 전체 제어로 작곡을 반복할 수 있게 합니다.
이러한 특징 덕분에 Midra는 에이전트 기반 작곡(agentic composition), 인간 참여형 편집(human-in-the-loop editing), 그리고 재현 가능한 프롬프트-투-MIDI 워크플로우 실험에 적합합니다.
개별 트랙의 노트 이벤트는 최대의 프롬프트 정렬 및 다양성을 위해 모델 계획(model planning)에 의해 생성됩니다.
개별 트랙의 노트 이벤트는 안정적이고 재현 가능한 출력을 위해 결정론적 생성기(deterministic generators)에 의해 생성됩니다.
프롬프트-투-코드 우선: 프롬프트를 불투명한 파형이 아닌 구조화된 기호 음악으로 변환합니다.체크포인트 네이티브 파이프라인: 각 단계가 영속화되고 재개 가능합니다.편집 가능한 아티팩트: MIDI + JSON 출력을 검사, 수정 및 재사용할 수 있습니다.에이전트 오케스트레이션: 계획(planning)과 렌더링은 명시적인 단계에서 조정됩니다.
music_agent/agents/
: 의도/곡/편성/노트 계획 에이전트(intent/song/arrangement/note planning agents)
music_agent/prompts/
: 중앙 집중식 프롬프트 템플릿(centralized prompt templates)
music_agent/generators/
: 드럼/베이스/코드/리드용 규칙 생성기(rule generators for drums/bass/chords/lead)
music_agent/core/
: 스키마, MIDI IR 어셈블리, 렌더러, 검증기(schema, MIDI IR assembly, renderer, validator)
music_agent/utils/
: 오디오 렌더링 도우미 (fluidsynth/ffmpeg)
outputs/projects/
: 프로젝트별 체크포인트 및 최종 출력물
sudo apt install ffmpeg
sudo apt install fluidsynth fluid-soundfont-gm
pip install -r requirements.txt
...
cp .env.example .env
.env.example의 기본값을 사용합니다.
OPENAI_API_KEY
OPENAI_BASE_URL
OPENAI_MODEL
Optional:
MAX_MUSIC_DURATION_SECONDS
-
backend/config.yaml에서 백엔드 런타임 값을 구성합니다. -
OpenAI 자격 증명은 셸 환경 변수(또는 Docker Compose에 의해 로드되는
.env)를 통해 제공합니다:
export OPENAI_API_KEY="your_key"
export OPENAI_BASE_URL="https://api.openai.com/v1"
export OPENAI_MODEL="gpt-5.5"
-
마운트된 데이터를 위한 호스트 경로가 존재하는지 확인합니다:
mkdir -p backend/data outputs
docker compose up --build -d -
프론트엔드:
http://localhost:5173 -
백엔드 API:
http://localhost:8000
docker compose down
midra "generate a 30 seconds cyberpunk boss battle bgm with drums bass chords and lead" --project-name demo --project-id test001
midra "generate a 30 seconds cyberpunk boss battle bgm with drums bass chords and lead" --project-name demo --project-id test001 --resume
생성된 아티팩트는 다음 위치에 저장됩니다:
outputs/projects/demo_test001/
이 폴더에는 체크포인트 JSON 단계와 최종 렌더링된 결과물이 포함되어 있습니다.
- 더 나은 장편 작곡 구조 및 모티프 일관성
- 풍부한 프롬프트 제약 조건을 통한 향상된 제어 가능성
- 개선된 트랙 수준 진단 및 관측 가능성
- 더 많은 내보내기/렌더 옵션 및 워크플로우 통합 기능
에이전트 기반, 편집 가능한 프롬프트-MIDI 생성이라는 아이디어가 공감을 불러일으킨다면 Midra에 별점을 부탁드립니다.
이는 프로젝트가 기여자들을 유치하고 제어 가능한 음악 에이전트에 대한 개방 연구를 가속화하는 데 도움이 됩니다.
LICENSE 참고.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Codex tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기