본문으로 건너뛰기
cccskills
무료GitHub에 공개

midi-compose

Genera archivos MIDI (.mid) desde un spec JSON con scripts Python stdlib-only. Sin dependencias: escribe el Standard MIDI File binario directo. Usar para: exportar una composicion a MIDI, bocetar stems, generar loops o capas para middleware.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

SebastianLuser/claude-code-arcane스타 3(GitHub 3 + cccskills 0)

실행 점수 미검증

설치 방법 보기

포함된 파일(4)

  • SKILL.md5.1 KB
  • references/smf-format.md4.3 KB
  • scripts/compose_midi.py11.5 KB
  • templates/example-composition.json2.9 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

midi-compose — Composición a MIDI

Baja decisiones musicales a un .mid real. Las decisiones las toma /music-composition; esta skill las escribe.

Sin dependencias. El Standard MIDI File es un formato binario documentado y scripts/compose_midi.py lo emite con la stdlib de Python. No hay que instalar midiutil, music21 ni nada. Corre en la máquina del usuario tal como se copia.

Alcance

Sí: escribir .mid multipista con tempo, compás, tonalidad, programas General MIDI, velocities y percusión.

No: renderizar a audio (requiere FluidSynth + soundfonts, dependencias de sistema fuera de scope), tomar decisiones musicales (→ /music-composition), notación.

Cuándo usar

  • Ya hay material decidido (progresión, melodía, groove) y hace falta el archivo
  • Bocetar stems para un sistema de capas de /adaptive-music
  • Generar variantes de un tema por transformación (aumentación, cambio de modo)
  • Entregar MIDI a un compositor o importarlo a un DAW/middleware

Modos

ModoQué hace
spec-pathGenera el .mid desde un spec JSON existente
newArma el spec desde cero a partir de material musical, y después genera
validateSolo valida el spec y reporta, sin escribir nada

Workflow

1. Armar el spec

Un objeto JSON. Todos los tiempos están en beats (negras), no en ticks — el script convierte.

{
  "name": "Explore Calm",
  "tempo": 84,
  "ppq": 480,
  "time_signature": [4, 4],
  "key": "D",
  "mode": "minor",
  "tracks": [
    {
      "name": "Bed (strings)",
      "channel": 0,
      "program": 48,
      "notes": [
        { "pitch": "D3", "start": 0, "duration": 4, "velocity": 62 }
      ]
    }
  ]
}

Hay un ejemplo completo de tres pistas en templates/example-composition.json.

Campos del spec

CampoDefaultNotas
name"untitled"Va al meta de nombre de secuencia
tempo120BPM, 1-600
ppq480Ticks por negra, 24-32767
time_signature[4, 4]Denominador potencia de 2
key / mode"C" / "major"Solo para el meta de tonalidad; no transpone
tracks[].channelíndice del track0-15, único por track
tracks[].program0Programa General MIDI 0-127
tracks[].drumsfalseDeclaralo en el track del canal 9
notes[].pitch—60, "C4", "F#3", "Bb5". C4 = 60
notes[].start0En beats desde el inicio
notes[].duration1En beats, > 0
notes[].velocity901-127

2. Validar antes de escribir

python skills/midi-compose/scripts/compose_midi.py spec.json --validate

Salida [PASS] con el resumen, más [WARN] por cada problema no fatal. Un [FAIL] nombra el track y la nota exactos.

3. Generar

python skills/midi-compose/scripts/compose_midi.py spec.json -o salida.mid

Antes de escribir el .mid o el spec a disco, preguntar al usuario "¿Escribo esto a <path>?" — sobre todo si el archivo ya existe.


Límites de MIDI que importan

  • 16 canales. El canal 9 (10 en base 1) está reservado a percusión por General MIDI, así que quedan 15 pistas melódicas. Si necesitás más, son varios archivos.
  • Un programa por canal a la vez. Cambiar de instrumento a mitad de pista pide otro canal.
  • Velocity no es volumen. Es intensidad de ataque; el sampler decide qué hacer con ella.
  • MIDI no lleva timbre. El programa GM es una sugerencia; cómo suena depende del soundfont o del instrumento del DAW.
  • pitch en el canal de percusión es el instrumento, no una altura: 36 = bombo, 38 = redoblante, 42 = hi-hat cerrado, 46 = hi-hat abierto.

Feel y microtiming

El spec acepta start fraccional, así que el feel se escribe directo: para atrasar un backbeat 15 ms a 84 BPM, 15 / (60000 / 84 / 1) ≈ 0.021 beats. Un desvío de 10-30 ms es feel; arriba de ~50 ms se percibe como error. Ver references/smf-format.md para la relación tick/ms.

Formato

→ Read references/smf-format.md para la estructura binaria del SMF, el encoding VLQ y la tabla de programas GM más usados


Verdict

  • COMPLETE — el .mid se escribió y la verificación de estructura pasa
  • CONCERNS — se escribió pero hay [WARN]: contenido melódico en el canal de percusión, o pistas cerca del límite de 15
  • FAIL — el spec no valida; el mensaje nombra el track y la nota

Verificación rápida de que el archivo es un SMF:

python -c "print(open('salida.mid','rb').read(4) == b'MThd')"   # True

Next steps

  • /music-composition si el material musical todavía no está decidido
  • /adaptive-music para armar el sistema de capas que consume estos stems
  • /middleware-integration para importar los segmentos a Wwise/FMOD

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Plan, design, and implement A/B tests and experiments with statistical rigor. Covers hypothesis frameworks, sample sizing, metrics, and result analysis.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

SebastianLuser/claude-code-arcane32026년 10월 27일 업데이트

Web/mobile accessibility decision guide: WCAG 2.2 AA, ARIA, keyboard nav, focus management, contrast, testing. Use for: a11y, accessibility, wcag, aria, screen reader, keyboard, contrast.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

SebastianLuser/claude-code-arcane32026년 10월 27일 업데이트

Generate, iterate, and scale ad creative for paid advertising across Google, Meta, LinkedIn, and X. Covers platform specs, creative frameworks, and quality validation.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

SebastianLuser/claude-code-arcane32026년 10월 27일 업데이트

Musica interactiva para juegos: layering vertical, re-secuenciacion horizontal, stingers, reglas de transicion con sync points, y mapeo de estados de gameplay a musica. Usar para: musica adaptativa, sistema de musica dinamica, transiciones musicales, combat music.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

SebastianLuser/claude-code-arcane32026년 10월 27일 업데이트

Design multi-agent systems, create agent architectures, define communication patterns, and build autonomous agent workflows with structured evaluation frameworks.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

SebastianLuser/claude-code-arcane32026년 10월 27일 업데이트

Inter-agent communication protocol for C-suite agent teams. Defines invocation syntax, loop prevention, isolation rules, response formats, and quality loops.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

SebastianLuser/claude-code-arcane32026년 10월 27일 업데이트

SebastianLuser의 스킬 모두 보기

이 스킬의 문제 신고