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:
@@ -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",
|
||||
]
|
||||
|
||||
@@ -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 = (
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
Reference in New Issue
Block a user