Fix library diversity and auto-automation issues

Problem: System was stuck using single all_tracks folder, causing:
- No bucket sampling diversity (all files in 1 folder)
- Repetitive sample selection
- No coherence between sections
- Fades/volumes not auto-applied

Fixes:
1. Changed DEFAULT_LIBRARY from all_tracks to organized_samples
   - server.py: Updated SAMPLES_DIR
   - sample_manager.py: Updated base_dir
   - health_check.py: Added organized_samples as primary paths

2. organized_samples structure enables T013 bucket sampling:
   - loops/bass: 34 samples
   - loops/synth: 43 samples
   - loops/vocal: 24 samples
   - oneshots/kick: 20 samples
   - oneshots/perc: 35 samples
   - Each subfolder < 15 files = perfect for bucket sampling

3. Added auto-automation to generate_song():
   - Fade-in 4 bars for kick/bass/hat (intro)
   - Build curve: music tracks 0.5 -> 0.9 (32-40 bars)
   - Reverb automation: 0% -> 40% -> 0% on atmos/pad/vocal
   - apply_automation parameter (default True)

4. Each track now gets diverse samples from different subfolders:
   - Bass from loops/bass (34 options)
   - Synth from loops/synth (43 options)
   - Drums from oneshots/ (kick, perc, snare)

Coverage wheel will now track usage across 20+ subfolders instead of 1.
Diversity memory will work correctly with proper family tracking per folder.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
renato97
2026-03-29 01:22:23 -03:00
parent b2924b9c88
commit 5b63d38945
4 changed files with 121 additions and 12 deletions

View File

@@ -56,8 +56,10 @@ class AbletonMCPHealthCheck:
def check_sample_library(self) -> bool:
"""Verifica librería de samples."""
lib_paths = [
Path("librerias/organized_samples"), # Primary: organized with subfolders
Path.home() / "embeddings" / "organized_samples",
Path("librerias/all_tracks"), # Fallback: flat structure
Path.home() / "embeddings" / "all_tracks",
Path("librerias/all_tracks"),
]
for path in lib_paths:
@@ -95,8 +97,10 @@ class AbletonMCPHealthCheck:
def check_vector_index(self) -> bool:
"""Verifica índice de vectores."""
index_paths = [
Path("librerias/organized_samples/.sample_embeddings.json"), # Primary
Path.home() / "embeddings" / "organized_samples" / ".sample_embeddings.json",
Path("librerias/all_tracks/.sample_embeddings.json"), # Fallback
Path.home() / "embeddings" / "all_tracks" / ".sample_embeddings.json",
Path("librerias/all_tracks/.sample_embeddings.json"),
]
for path in index_paths: