3.9 KiB
3.9 KiB
Micro Stems Approach
Ultima revision: 2026-03-30
Objetivo
Dejar de tratar la referencia como un bloque largo y pasar a leerla como una secuencia de gestos cortos.
La idea es:
- partir
ejemplo.mp3en ventanas chicas - inferir que rol cumple cada fragmento
- comparar cada fragmento contra la libreria local
- extraer familias y tokens dominantes
- usar ese resumen para sesgar la seleccion global y dejar de mezclar material "correcto" pero sin identidad
Lo que ya quedo implementado
Archivo principal:
C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\reference_listener.py
Cambios reales:
- existe
_build_micro_stem_plan(...) - existe
_apply_micro_stem_bias(...) build_arrangement_plan(...)ahora agrega:micro_stemsmicro_stem_summary
- el rerank global de
matchesahora puede recibir sesgo desde micro-fragmentos antes de elegir palette y layers
Como funciona hoy
Segmentacion
- usa el banco de segmentos ya existente de
reference_listener.py - trabaja con ventanas de hasta
4.0s - calcula importancia por:
- energia
- densidad de onsets
- balance armonico/percusivo
- tamaño de ventana
Inferencia de roles
Cada micro-fragmento intenta inferir roles como:
kicksnarehatbass_loopperc_looptop_loopsynth_loopvocal_loopvocal_shotfill_fxsnare_rollatmos_fx
La inferencia se apoya en:
harmonic_ratiopercussive_ratiospectral_centroidrms_meanonset_meansection kind
Matching
Para cada fragmento:
- toma candidatos top por rol desde
match_assets(...) - compara vector del fragmento contra bancos de segmentos de cada candidato
- combina:
- similitud de segmento
- tempo
- key
Resumen que produce
micro_stem_summary expone:
dominant_familiesdominant_tokensrole_focus- cantidad de segmentos considerados y elegidos
Lo que SI hace
- detecta familias repetidas reales dentro de la libreria
- encuentra mejor DNA ritmico que el scoring global promedio
- evita parte del ruido de "un sample bueno pero fuera de mundo"
- ayuda a que
reference_listenerprefiera material mas coherente con la referencia
Lo que TODAVIA NO hace
- no reconstruye frase por frase en Arrangement
- no materializa literalmente micro-fragmentos de la referencia
- no usa aun
MIDIni presets.fstcomo parte del matching - no decide instrumentos armonicos reales cuando esos activos existen solo en MIDI/presets
Limitacion critica actual
La libreria del usuario tiene bastante material armonico importante en:
sounds presetsMIDI PACK- subcarpetas
MIDIdentro de sample packs
El matching micro actual es audio-first.
Eso significa:
- si el piano del estilo esta representado solo como
MIDIo preset y no como loop de audio - el sistema no lo va a seleccionar como
synth_loop - por eso el usuario sigue sintiendo que faltan pianos/keys aunque el analisis audio ya haya mejorado
Bugs reales corregidos mientras se hacia esto
detect_reference_sections()ya no rompe al convertirlibrosa.feature.tempo(...)a floatsynth_loopya no acepta archivos vocales disfrazadossample_selector.record_section_selection()ya acepta dicts y no solo objetos con.name_extract_pack()ya no trata carpetas genericas como20 One Shotscomo si fueran un pack dominante
Evidencia runtime local
C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\temp\ejemplo_micro_stems_report.jsonC:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\temp\ejemplo_arrangement_plan_validation.json
Siguiente paso correcto
No es "sumar mas audio loops".
Es esto:
- indexar
MIDIy presets del mismo universo familiar - mapear familias de audio a siblings armonicos (
Piano,Keys,Rhode,Guitar,Pad,Pluck) - materializar el remake desde una
phrase plan, no solo desde loops globales