Communitygithub.com

TuneTrack

Compone, arregla, mezcla y renderiza música de juegos (temas de menú, loops de exploración/batalla/jefe, temas de pueblo y tienda, jingles, capas adaptativas) con las herramientas MCP de TuneTrack. Úsalo siempre que el usuario pida música, banda sonora, tema, loop, jingle, stinger o ambientación para un juego o cualquier proyecto, o mencione TuneTrack.

¿Qué es TuneTrack?

TuneTrack es una estación de trabajo musical personal que funciona a través de herramientas MCP. Te permite componer, arreglar, mezclar y masterizar música para juegos directamente desde el código, utilizando teoría musical, análisis de informes y una imagen de piano roll para guiar tus decisiones. Soporta instrumentos VST3 con parches guardados, librerías SFZ y sintetizadores Faust integrados, y está diseñado para producir archivos listos para loop. El skill cubre todo el flujo de trabajo: desde entender el proyecto del juego y seleccionar instrumentos, hasta planificar la forma musical, escribir notas con notación TTN, mezclar con buses y efectos, revisar el resultado con análisis de audio, y entregar el archivo en el formato adecuado (OGG, WAV, MP3) según el motor del juego (Godot, Unity, Unreal, web). También incluye pautas para música adaptativa con capas verticales, paletas de géneros predefinidas (orquestal, synthwave, chiptune, ambient, etc.) y una amplia gama de conceptos de teoría musical para crear melodías, armonías y arreglos efectivos.

Compatible con✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/raffataff/TuneTrack/tree/HEAD/skill

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

TuneTrack: música de juegos con las herramientas MCP tunetrack

TuneTrack es la estación de trabajo musical del usuario. Tú escribes la música como notas, acordes, patrones y curvas de CC; TuneTrack las reproduce a través de instrumentos reales (los plugins VST3 del usuario mediante parches guardados, librerías de muestras SFZ o sintetizadores Faust integrados), mezcla, masteriza y renderiza archivos listos para loop. No puedes oír, así que trabajas a partir de la teoría musical, los informes de análisis de la herramienta y la imagen del piano roll. Cada decisión debe ser deliberada. Nada de loops de relleno, ni improvisaciones genéricas.

Si faltan las herramientas, el servidor MCP no está registrado: claude mcp add --scope user tunetrack -- C:\Users\Owner\Documents\TuneTrack\.venv\Scripts\tunetrack-mcp.exe.

1. Comprende el proyecto primero

Antes de escribir una nota, averigua para qué es la música:

  • Lee el proyecto del juego: README, documentos de diseño, texto de la historia/ambientación, nombres de escenas/niveles, estilo artístico (mira algunas imágenes), colores del tema de la interfaz, carpetas de audio existentes y nombres de archivos, el motor (Godot project.godot, Unity Assets/, Unreal .uproject, web).
  • Decide: género/paleta, estado de ánimo (2-3 adjetivos), energía, tempo, tonalidad/modo, tipo de cue, duración, forma del loop, formato de entrega y ruta. Si el usuario dio una intención ("menú synthwave oscuro, 100 bpm"), esta prevalece sobre tu inferencia. Pregunta solo si el proyecto no da ninguna pista.
  • Registralo: project_new(nombre, tempo, tonalidad, compás, brief={género, estado_de_ánimo, uso, juego, referencias, notas}).

2. Revisa la librería de instrumentos

status() lista instrumentos VST3, parches (un plugin más un sonido guardado, con etiquetas), instrumentos SFZ y sintetizadores integrados.

  • Las partes acústicas/orquestales necesitan muestras reales: usa patch:<id> (p. ej., HALion, BBC Symphony Orchestra, Spitfire LABS patches) o sfz:<ruta>. Los sintetizadores integrados son excelentes para música electrónica, synthwave, chiptune, ambient y lo-fi, y funcionan bien como capas de apoyo.
  • Los instrumentos VST3 como HALion Sonic y Groove Agent se cargan vacíos: sin un parche renderizan silencio (el renderizado te lo advierte). MODO DRUM funciona sin parche.
  • Si la paleta que necesita el brief falta (por ejemplo, cuerdas orquestales sin un parche de cuerdas o SFZ), dilo claramente y ofrece: (a) el usuario captura parches (patch_capture abre la ventana del plugin; solo mientras él esté en el ordenador), (b) instalar una librería gratuita (el README enumera algunas), o (c) una versión sintetizada estilizada. No hagas pasar un sintetizador por una orquesta.
  • audition("patch:<id>") comprueba que un instrumento suene e informa de su brillo. sfz_info muestra el rango y los keyswitches.
  • Los parches con dynamics_cc (1 o 11) obtienen su volumen de ese CC, no de la velocity: escribe siempre curvas cc() para ellos.

3. Planifica la forma (antes de las notas)

Establece markers() para las secciones y project_set(loop="5:1-21:1") para la región de loop. Formas típicas:

CueDuraciónForma y notas
Menú principal45-120 s loopOpcional intro de 2-4 compases (se reproduce una vez) luego un loop A(8) B(8) o A A' B A. Motivo memorable, densidad media, deja espacio para sonidos de la interfaz.
Exploración / mundo abierto1.5-3 min loopArcos largos, textura dispersa, espacio para respirar, ritmo armónico lento (1-2 compases por acorde).
Pueblo / tienda40-90 s loopCálido, rítmico, conjunto pequeño, pegadizo.
Batalla60-120 s loop130-170 bpm, ostinato impulsivo, bajo fuerte, acentos y golpes, frases cortas; la sección B aumenta la intensidad.
Jefe final90-180 s loopModo más oscuro, graves más pesados, un motivo que es una versión retorcida del tema principal.
Stinger de victoria / derrota2-8 s, one-shotVictoria: línea ascendente a un acorde mayor brillante + platillo. Derrota: línea descendente a un acorde menor o disminuido, fundido. loop="off".
Cama de ambientación1-3 min loopPads/drones, movimiento lento, sin pulso fuerte, poca melodía.
Créditos2-4 min, one-shotPopurrí de los motivos del juego.

Reglas del loop: el loop es un número entero de compases; su último compás debe llevar de vuelta al primero (dominante, o un anacrusa hacia la primera nota de la melodía). No dejes que las notas crucen el final del loop a menos que quieras que lo hagan. Las colas de liberación y reverberación se pliegan automáticamente en el inicio del loop mediante render(loop="auto").

Música adaptativa: pon cada capa en la misma tonalidad, tempo y duración, etiqueta las pistas con layer (base, tension, combat), y renderiza con layers=True para stems en capas verticales que el juego crossfadea.

4. Escribe la música

Orden: motivo, luego armonía, bajo, frases melódicas, contralínea y partes interiores, sección rítmica, dinámicas, luego variación.

Melodía

  • Constrúyela a partir de un motivo de 1-2 compases con un ritmo y contorno reconocibles. Desarróllalo con repetición, secuencia (movido un paso hacia arriba), inversión, aumentación rítmica. Estructura las frases como pregunta (termina abierta, en el 2 o 5) y respuesta (termina en el 1).
  • Un clímax claro por sección (la nota más alta, el tiempo más fuerte). Movimiento gradual con saltos ocasionales; resuelve los saltos paso a paso en la dirección opuesta. Mantenlo cantable (aproximadamente una octava y una quinta) a menos que sea una pieza instrumental de lucimiento.
  • Deja espacio: los silencios y las notas largas dan forma a las frases y espacio para respirar. No cada tiempo necesita una nota.
  • Notas del acorde en tiempos fuertes; notas de paso y floreos en tiempos débiles. Las notas largas en disonancias son elecciones deliberadas.

Armonía

  • chords() conduce las voces por ti. Elige progresiones que sirvan al estado de ánimo. Varía el ritmo armónico: 1 acorde por compás, más rápido en las cadencias.
  • Movimientos útiles: i-VI-III-VII menor (épico/heroico), i-iv-VII-III (nostálgico), I-V-vi-IV (brillante), ii-V-I y IVmaj7-iii7-vi7 (jazz/acogedor), bVI-bVII-I (triunfante), Lidio I-II (maravilla/magia), Frigio i-bII (amenaza), Dorio i-IV (aventurero, folk), median tes cromáticos (bIII, bVI mayor en tonalidad mayor) para color cinematográfico, pedales bajo acordes cambiantes para tensión.
  • Termina las secciones con cadencias reales (V-i, iv-V, bVI-bVII-I). Las dominantes secundarias (V/V, V7/vi) añaden movimiento hacia adelante.

Bajo

  • Fundamentales en tiempos fuertes, quintas y notas de aproximación (paso o sensible) hacia los cambios de acorde. Dale un ritmo que encaje con el bombo. Mantenlo por debajo de C3 y solo en su registro.

Arreglo

  • Registros: bajo por debajo de C3, armonía C3-C5, melodía arriba o claramente separada del acompañamiento. Los intervalos menores de una quinta por debajo de C3 suenan embarrados (el análisis lo señala).
  • Un elemento focal a la vez; las contralíneas responden en los silencios de la melodía (llamada y respuesta).
  • Construye secciones añadiendo y quitando capas. B debe contrastar con A: diferente registro, densidad, ritmo o color armónico.
  • Orquestal: melodía en violines (doblada por flauta una octava arriba o trompa una octava abajo para calidez), armonía en violas/cellos/trompas, bajo en contrabajos/cellos. Las trompas suenan mejor en quintas y octavas en su registro medio; las trompetas para picos de fanfarria; los timbales en fundamentales y quintas al final de las frases. Usa role en las pistas para que se apliquen las comprobaciones de rango. theory(range="trompa").
  • Batería: un groove con variación cada 4 compases y un fill en los cambios de sección (el último tiempo o dos del compás 8). Crash en el tiempo fuerte de las nuevas secciones. Las notas fantasma (o) y el swing añaden vida.

Dinámicas y sensación

  • Da forma a cada frase: notes_edit(op="velocity", ramp_from, ramp_to) para crescendos, acentos con >.
  • Parches orquestales controlados por CC: cc(pista, 1, inicio, fin, 40, 100, shape="swell") en notas largas, y niveles base por sección.
  • notes_edit(op="humanize", timing_ms=5-15, velocity=4-8) para partes acústicas. Mantén el chiptune y las partes electrónicas ajustadas en la rejilla.
  • Staccato (') y legato (notes_edit(op="legato")) cambian mucho el carácter. Úsalos a propósito.

Reutiliza sin monotonía de copiar y pegar: arrange(op="copy") una sección, luego varía la copia (nueva contralínea, cambio de octava, cadencia rearmonizada, batería más abierta).

5. Paletas de género (nombres de sintetizadores integrados entre corchetes; prefiere parches reales cuando el género sea acústico)

GéneroTempoModos / armoníaPaleta y ritmo
Orquestal fantasía / aventura80-120Mayor/Dorio/Lidio, i-VI-III-VIICuerdas, trompas, maderas, arpegios de arpa, timbales; [pluck], [bell] para color
Épico / batalla130-170Menor, Frigio, i-bVI-bVIIOstinato de cuerdas en corcheas/semicorcheas, stabs de metales, taiko/toms, pads de coro; [brass_synth], [reese_bass] híbrido
Acogedor / pueblo / granja85-110Mayor, acordes add9 y maj7Nylon/pluck, e-piano, mazos, shaker ligero; [nylon_pluck], [epiano], [mallet]
Synthwave / retro90-118Menor (Eolio/Dorio)[supersaw] pads, [analog_bass] bajo de corcheas, [lead], caja con gate, gran reverberación
Chiptune (estilo NES)120-180Mayor o menor, arpegios rápidos para acordesExactamente 2 voces [chip_pulse]/[chip_square], 1 bajo [chip_triangle], batería [chip_noise]; sin reverberación o una muy pequeña; cuantizado
Horror / tensión50-80 o sin pulsoClústeres cromáticos, tritonos, pedalDrones [dark_pad], notas agudas [bell] dispersas, pulsos graves, el silencio como herramienta
Ambient / espacio60-90Lidio, acordes sus, cambios lentos[pad], [dark_pad], [bell], envíos largos de reverberación, automatización de volumen lenta
Lo-fi / chill70-90, swingii7-V7-Imaj7, acordes m9[epiano], batería suave con swing 0.3-0.5, [saturator] y [filter] en el máster
Acción / EDM120-150Menor, four-on-the-floor[drums] o un kit, [reese_bass]/[analog_bass], arpegios [saw_pluck], leads [supersaw], automatización de volumen tipo sidechain
Puzzle / casual100-130Mayor, notas de paso cromáticas juguetonas[mallet], [pluck], parches pizzicato, bajo staccato

6. Mezcla y masteriza

  • Escalonado de ganancia: comienza las pistas alrededor de -6 a -12 dB; la melodía se sitúa encima y los pads debajo. El renderizado informa de los niveles por pista.
  • Añade una reverberación compartida en un bus (track_add("Reverb", kind="bus", fx=["builtin:reverb"]) o un VST3 como ValhallaSupermassive con Mix al 100%), y envía a él por pista. Más seco para música rápida o ocupada, más húmedo para ambient.
  • Pasa el filtro de paso alto a todo lo que no sea bajo o bombo (builtin:eq hpf 100-200 Hz), corta 250-500 Hz en los pads si el informe dice que está embarrado.
  • Pan para anchura (arpa a la izquierda, segundos violines a la derecha, charles ligeramente descentrados). Mantén el bajo y el bombo centrados.
  • Sonoridad: el máster se normaliza a target_lufs (por defecto -16). Las pistas de fondo/menú suelen estar en -18 a -20; las de batalla en -14 a -16.
  • Los efectos VST3 del usuario (SSL, TDR Nova, Waves, Valhalla) pueden ir en pistas, buses o el máster mediante fx_add; establece los parámetros por nombre con texto de visualización ({"Mix": "100 %", "LowCut": "200 Hz"}).

7. Bucle de revisión (siempre)

  1. notes_read(pista) para comprobar tus líneas como TTN. analyze() da comprobaciones de tonalidad/rango/superposición/embarrado más una imagen PNG del piano roll. Lee el PNG para comprobar la forma, densidad y extensión del registro.
  2. render(). Actúa sobre cada advertencia: pista silenciosa (sin parche cargado), embarrado, extremo agudo apagado o áspero, picos, limitador trabajando duro, costura del loop. Las pistas sin cambios se almacenan en caché, así que itera libremente.
  3. listen(): tus oídos. Mide el audio renderizado, no las notas, y capta lo que las notas no pueden mostrarte:
    • energy_arc, sections, bar_lufs: ¿hace cada sección lo que dice la forma? B debe diferir de A en nivel, brillo, densidad o quién lidera (tracks_db, most_present); los builds suben compás a compás; el último compás del loop fluye hacia el primero.
    • masking: el vs_rest_db de cada pista en su banda principal. Mantén la pista principal en 0 o por encima. Las partes por debajo de aproximadamente -10 apenas se oyen: súbelas, haz un corte de EQ en la pista covered_by allí, cambia de registro, o elimínalas. pairs son partes que compiten por una banda (bombo vs bajo a 63 Hz: deja que una domine los graves, o haz un ducking en los golpes).
    • verify: renders de prueba de cada tono que usa cada parte. Muestran tonos silenciosos o mucho más silenciosos (fuera del rango del instrumento), partes que suenan transpuestas, ataques lentos en notas cortas, compases con notas pero sin sonido (¿CC en 0?), y drum_notes: cómo suena realmente cada nota de batería y qué tan fuerte es a igual velocity. Confía en esto por encima de los nombres y descripciones de parches. Arregla, vuelve a renderizar, escucha de nuevo hasta que cada advertencia esté arreglada o sea deliberada. La primera ejecución prueba cada instrumento (segundos por pista de plugin, almacenado en caché después). reference="<archivo>" compara la mezcla con una pista que el usuario quiere igualar.
  4. Dile al usuario lo que has hecho y cómo está construido (forma, tonalidad, tempo, instrumentos, el motivo), dale la ruta del archivo, y ofrece play() o el editor (ui_open()) para que pueda escuchar. Sus oídos son el juez final, así que pregunta qué cambiar.

8. Entrega

render(out="<juego>/<directorio de audio>/<nombre>.<ogg|wav>", loop="auto"), coincidiendo con las carpetas y nombres del proyecto.

  • Godot: .ogg. Establece Loop en el panel de importación; para intro+loop usa loop_offset = loop_start_sec del archivo .loop.json.
  • Unity: .ogg o .wav. Marca Loop en el AudioSource; intro+loop mediante dos clips o reproducción programada usando .loop.json.
  • Unreal: .wav de 16 bits a 48 kHz (bits=16); el WAV lleva un chunk de loop smpl.
  • Web: .ogg más .mp3. Usa stems=True / layers=True para sistemas adaptativos y midi=True para entregar el arreglo a un DAW (Cubase).

Notación TTN (para write)

D4:q!mf F4 A4:h | (D3 A3 F4):w | r:h C5:e. B4:s A4:q' G4:q> | E4:h~ E4:q r:q

Pitch C4 = Do central (MIDI 60), F#3, Bb5, o r para un silencio. Acordes (C4 E4 G4). Duraciones w h q e s t (redonda a fusa), con puntillo q., tresillo e3, pulsos 1.5 o 3/2, sumas h+e; se mantienen hasta que cambian. Velocity !pp !p !mp !mf !f !ff o !0-127, se mantiene. ' staccato, > acento, ~ ligadura a la misma nota siguiente. | barra de compás, comprobada contra el compás (los desajustes vuelven como advertencias, así que corrígelos). @6.5 mueve el cursor al tiempo 6.5 del ámbito escrito, para una segunda voz en una sola llamada. O usa mode="merge".

Tokens de patrón (para pattern): grados de acorde 1 3 5 7 9, 8 10 12 una octava arriba, 5-/3+ cambios de octava, b7/#4 grados alterados por encima de la fundamental, . silencio, - sostener, 1> acento. Ejemplos de bajos: "1 - - 1 . 1 5- ." (pop), "1 . 1 . 1 . 1 ." (corcheas, synthwave), "1 - 5- - 8 - 5- -" (sensación de walking). Arpegios: "1 5 8 10 12 10 8 5", "1 3 5 8" con rate 0.25 para semicorcheas.

Skills relacionados