Migración completa a librería Reggaeton

Cambios realizados:
- server.py: actualiza PROJECT_SAMPLES_DIR a reggaeton
- sample_manager.py: cambia base_dir a reggaeton + agrega género reggaeton
- health_check.py: actualiza paths a reggaeton
- scan_audio.py: actualiza path a reggaeton
- segment_rag_builder.py: actualiza default library a reggaeton
- reference_stem_builder.py: actualiza PROJECT_SAMPLES_DIR a reggaeton
- song_generator.py: agrega GENRE_CONFIG y SECTION_BLUEPRINT para reggaeton
- rebuild_index.py: actualiza para apuntar a reggaeton

Nueva estructura soportada:
- 1. MIDI CHORDS / 2. MIDI ARP (MIDI files)
- 3. ONE SHOTS / 4. DRUM LOOPS
- 5. FX / 6. IMPACT INTRO / 7. FILL
- 8. KICKS / 9. SNARE / 10. PERCS
- 11. VOCALS
- reggaeton 2/ (bass, drumloops, fx, kick, oneshots, perc, snare)
- SentimientoLatino2025/ (drums, vocals, loops, one shots)

Index rebuilt: 508 samples
This commit is contained in:
renato97
2026-03-29 16:41:20 -03:00
parent 5b804dbc8c
commit f5be1309d2
9 changed files with 302 additions and 12 deletions

View File

@@ -56,8 +56,8 @@ 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/reggaeton"), # Primary: reggaeton library
Path.home() / "embeddings" / "reggaeton",
Path("librerias/all_tracks"), # Fallback: flat structure
Path.home() / "embeddings" / "all_tracks",
]
@@ -97,8 +97,8 @@ 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/reggaeton/.sample_embeddings.json"), # Primary
Path.home() / "embeddings" / "reggaeton" / ".sample_embeddings.json",
Path("librerias/all_tracks/.sample_embeddings.json"), # Fallback
Path.home() / "embeddings" / "all_tracks" / ".sample_embeddings.json",
]

View File

@@ -33,7 +33,7 @@ PORT = 9877
MESSAGE_TERMINATOR = b"\n"
SCRIPT_DIR = Path(__file__).resolve().parent
PACKAGE_DIR = SCRIPT_DIR.parent
PROJECT_SAMPLES_DIR = PACKAGE_DIR.parent / "librerias" / "organized_samples"
PROJECT_SAMPLES_DIR = PACKAGE_DIR.parent / "librerias" / "reggaeton"
SAMPLES_DIR = str(PROJECT_SAMPLES_DIR)
TRACK_LAYOUT = (

View File

@@ -167,6 +167,7 @@ class SampleManager:
'hip-hop': ['hip hop', 'hiphop', 'trap', 'boom bap', 'lofi'],
'ambient': ['ambient', 'chillout', 'downtempo', 'meditation'],
'edm': ['edm', 'electro', 'big room', 'festival'],
'reggaeton': ['reggaeton', 'perreo', 'dembow', 'latin', 'moombahton'],
}
def __init__(self, base_dir: str, cache_dir: Optional[str] = None):
@@ -923,7 +924,7 @@ def get_manager(base_dir: Optional[str] = None) -> SampleManager:
if base_dir is None:
# FIX: Use absolute path to avoid junction/hardlink issues
PROGRAM_DATA_DIR = Path("C:/ProgramData/Ableton/Live 12 Suite/Resources/MIDI Remote Scripts")
base_dir = str(PROGRAM_DATA_DIR / "librerias" / "organized_samples")
base_dir = str(PROGRAM_DATA_DIR / "librerias" / "reggaeton")
_manager = SampleManager(base_dir)
return _manager

View File

@@ -2,7 +2,7 @@ import sample_manager
print('Iniciando escaneo de la libreria de samples con analyze_audio=True...')
try:
path = r'C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\librerias\organized_samples'
path = r'C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\librerias\reggaeton'
stats = sample_manager.scan_samples(path, analyze_audio=True)
p = stats.get('processed', 0)
a = stats.get('added', 0)

View File

@@ -16,7 +16,7 @@ logger = logging.getLogger(__name__)
def _default_library_dir() -> Path:
return Path(__file__).resolve().parents[2] / "librerias" / "organized_samples"
return Path(__file__).resolve().parents[2] / "librerias" / "reggaeton"
def main() -> int:

View File

@@ -431,7 +431,7 @@ except ImportError:
# Constantes
DEFAULT_PORT = 9877
HOST = "127.0.0.1"
PROJECT_SAMPLES_DIR = PACKAGE_DIR.parent / "librerias" / "organized_samples"
PROJECT_SAMPLES_DIR = PACKAGE_DIR.parent / "librerias" / "reggaeton"
SAMPLES_DIR = str(PROJECT_SAMPLES_DIR)
MESSAGE_TERMINATOR = b"\n"
M4L_SAMPLER_PORT = 9879

View File

@@ -84,6 +84,12 @@ GENRE_CONFIGS = {
'keys': ['Am', 'Fm', 'Gm', 'Cm'],
'styles': ['liquid', 'neuro', 'jump-up', 'jungle'],
},
'reggaeton': {
'bpm_range': (90, 100),
'default_bpm': 95,
'keys': ['Am', 'Dm', 'Gm', 'Cm', 'Fm', 'Em'],
'styles': ['dembow', 'perreo', 'moombahton', 'latin-trap', 'romantico'],
},
}
# Colores por tipo de track
@@ -512,6 +518,17 @@ SECTION_BLUEPRINTS = {
('PEAK', 8, 32, 'drop', 5),
('OUTRO DJ', 16, 8, 'outro', 1),
],
'reggaeton': [
('INTRO', 8, 12, 'intro', 1),
('PRECORO', 8, 16, 'build', 2),
('CORO A', 16, 28, 'drop', 4),
('VERSEO', 16, 20, 'break', 2),
('PRECORO B', 8, 18, 'build', 3),
('CORO B', 16, 30, 'drop', 5),
('PUENTE', 8, 15, 'break', 1),
('CORO FINAL', 16, 32, 'drop', 5),
('OUTRO', 8, 10, 'outro', 1),
],
}
SECTION_BLUEPRINT_VARIANTS = {