🎵 Major Additions: 📁 2000s Pop Project Templates: - Chords & melody patterns - Drum patterns and rhythms - Synth bass configurations - Effects and mixing guides - Complete project structure documentation 🧬 ALS Generation System: - Fixed ALS generator with enhanced capabilities - Setup scripts for easy deployment - Comprehensive README and documentation - Quick start guide for users - Utility commands reference 🎼 Musical Projects: - Salsa project (Hector Lavoe inspired) with full documentation - 2000s Pop project with complete production guide 🔧 Utility Scripts: - generate_salsa_project.py: Salsa-specific generator - generate_versioned_als.py: Versioned project generation - register_project.py: Project registration system This significantly expands MusiaIA's capabilities with pre-built project templates and production-ready examples for multiple genres! Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
220 lines
6.1 KiB
Plaintext
220 lines
6.1 KiB
Plaintext
===============================================================================
|
|
COMANDOS ÚTILES - GENERADOR .ALS
|
|
===============================================================================
|
|
|
|
🎵 GENERACIÓN DE PROYECTOS
|
|
-------------------------------------------------------------------------------
|
|
|
|
# Generar proyecto básico (crea generated_project.als)
|
|
python3 als_generator.py
|
|
|
|
# Generar proyecto y mostrar información
|
|
python3 als_analyzer.py generated_project.als info
|
|
|
|
# Generar 3 proyectos en lote
|
|
for i in {1..3}; do
|
|
python3 -c "
|
|
from als_generator import ALSGenerator
|
|
g = ALSGenerator()
|
|
g.create_full_als('Proyecto_$i', 5, 8)
|
|
g.save_als(g.create_full_als('Proyecto_$i', 5, 8), 'proyecto_$i.als')
|
|
"
|
|
done
|
|
|
|
🔍 ANÁLISIS DE PROYECTOS
|
|
-------------------------------------------------------------------------------
|
|
|
|
# Ver información completa del proyecto
|
|
python3 als_analyzer.py archivo.als info
|
|
|
|
# Exportar información a archivo de texto
|
|
python3 als_analyzer.py archivo.als export info.txt
|
|
|
|
# Analizar estructura detallada
|
|
python3 -c "
|
|
from als_analyzer import ALSAnalyzer
|
|
a = ALSAnalyzer('archivo.als')
|
|
a.load_als()
|
|
tracks = a.get_tracks_info()
|
|
clips = a.get_clips_info()
|
|
print(f'Tracks: {len(tracks)}')
|
|
print(f'Clips: {len(clips)}')
|
|
for track in tracks:
|
|
print(f' - {track[\"name\"]} ({track[\"type\"]})')
|
|
"
|
|
|
|
✏️ MODIFICACIÓN DE PROYECTOS
|
|
-------------------------------------------------------------------------------
|
|
|
|
# Randomizar velocidades (rango: 70-127)
|
|
python3 als_analyzer.py archivo.als randomize-vel 70 127
|
|
|
|
# Transponer +5 semitonos
|
|
python3 als_analyzer.py archivo.als transpose 5
|
|
|
|
# Transponer -3 semitonos
|
|
python3 als_analyzer.py archivo.als transpose -3
|
|
|
|
# Duplicar clips (track 1, crear 4 duplicados)
|
|
python3 als_analyzer.py archivo.als duplicate 1 4
|
|
|
|
# Crear variación completa
|
|
python3 -c "
|
|
from als_analyzer import ALSModificator
|
|
m = ALSModificator('archivo.als')
|
|
m.load_als()
|
|
m.randomize_velocities(80, 120)
|
|
m.transpose_notes(2)
|
|
m.duplicate_clips(2, 2)
|
|
m.save_als('variacion.als')
|
|
"
|
|
|
|
🎨 CREAR VARIACIONES AUTOMÁTICAS
|
|
-------------------------------------------------------------------------------
|
|
|
|
# Crear 5 variaciones con parámetros diferentes
|
|
python3 -c "
|
|
import random
|
|
for i in range(5):
|
|
from als_analyzer import ALSModificator
|
|
m = ALSModificator('jukeblocks - Pop.als')
|
|
m.load_als()
|
|
# Parámetros aleatorios
|
|
trans = random.choice([-5, -3, -2, 0, 2, 3, 5])
|
|
min_v = random.randint(60, 80)
|
|
max_v = random.randint(100, 127)
|
|
m.randomize_velocities(min_v, max_v)
|
|
m.transpose_notes(trans)
|
|
output = f'variacion_{i+1}.als'
|
|
m.save_als(output)
|
|
print(f'✅ {output} creado')
|
|
"
|
|
|
|
📊 ESTADÍSTICAS DEL PROYECTO
|
|
-------------------------------------------------------------------------------
|
|
|
|
# Contar notas MIDI totales
|
|
python3 -c "
|
|
from als_analyzer import ALSAnalyzer
|
|
a = ALSAnalyzer('archivo.als')
|
|
a.load_als()
|
|
clips = a.get_clips_info()
|
|
total = sum(c['note_count'] for c in clips)
|
|
print(f'Total de notas MIDI: {total}')
|
|
print(f'Total de clips: {len(clips)}')
|
|
"
|
|
|
|
# Análisis por track
|
|
python3 -c "
|
|
from als_analyzer import ALSAnalyzer
|
|
a = ALSAnalyzer('archivo.als')
|
|
a.load_als()
|
|
tracks = a.get_tracks_info()
|
|
for i, track in enumerate(tracks):
|
|
print(f'{i}: {track[\"name\"]} [{track[\"type\"]}] Color: {track[\"color\"]}')
|
|
"
|
|
|
|
🧪 PRUEBAS Y VALIDACIÓN
|
|
-------------------------------------------------------------------------------
|
|
|
|
# Verificar archivo .als
|
|
file archivo.als
|
|
|
|
# Comprobar que se puede cargar
|
|
python3 als_analyzer.py archivo.als info | head -10
|
|
|
|
# Ejecutar suite completa de pruebas
|
|
./setup.sh
|
|
|
|
# Ejecutar demostración completa
|
|
python3 ejemplo_uso.py
|
|
|
|
💡 CONSEJOS Y TRUCOS
|
|
-------------------------------------------------------------------------------
|
|
|
|
# 1. Usar el archivo original como base
|
|
cp "jukeblocks - Pop.als" mi_base.als
|
|
|
|
# 2. Crear múltiples modificaciones
|
|
for vel in 60 80 100 120; do
|
|
python3 als_analyzer.py mi_base.als randomize-vel $vel 127
|
|
done
|
|
|
|
# 3. Encadenar modificaciones
|
|
python3 -c "
|
|
from als_analyzer import ALSModificator
|
|
m = ALSModificator('mi_base.als')
|
|
m.load_als()
|
|
m.randomize_velocities(70, 127) # Paso 1
|
|
m.transpose_notes(2) # Paso 2
|
|
m.duplicate_clips(1, 3) # Paso 3
|
|
m.save_als('resultado_final.als') # Guardar
|
|
"
|
|
|
|
# 4. Generar con parámetros personalizados
|
|
python3 -c "
|
|
from als_generator import ALSGenerator
|
|
g = ALSGenerator()
|
|
|
|
# Proyecto con muchos tracks
|
|
tree = g.create_full_als('Proyecto_Grande', num_tracks=12, num_clips=20)
|
|
g.save_als(tree, 'proyecto_grande.als')
|
|
|
|
# Proyecto con pocos clips
|
|
tree = g.create_full_als('Proyecto_Minimal', num_tracks=3, num_clips=4)
|
|
g.save_als(tree, 'proyecto_minimal.als')
|
|
"
|
|
|
|
# 5. Automatizar generación en lote
|
|
python3 -c "
|
|
for num_tracks in 3 5 8 10; do
|
|
for num_clips in 4 8 12 16; do
|
|
from als_generator import ALSGenerator
|
|
g = ALSGenerator()
|
|
name = f'proyecto_{num_tracks}t_{num_clips}c'
|
|
tree = g.create_full_als(name, num_tracks, num_clips)
|
|
g.save_als(tree, f'{name}.als')
|
|
echo \"✅ Creado: {name}.als\"
|
|
done
|
|
done
|
|
"
|
|
|
|
🔧 SOLUCIÓN DE PROBLEMAS
|
|
-------------------------------------------------------------------------------
|
|
|
|
# Error: archivo no encontrado
|
|
ls -la *.als
|
|
|
|
# Error: Python no encontrado
|
|
which python3
|
|
python3 --version
|
|
|
|
# Verificar estructura XML
|
|
gunzip -c archivo.als | head -20
|
|
|
|
# Debug: cargar y mostrar errores
|
|
python3 -c "
|
|
from als_analyzer import ALSModificator
|
|
try:
|
|
m = ALSModificator('archivo.als')
|
|
if m.load_als():
|
|
print('✅ Carga exitosa')
|
|
else:
|
|
print('❌ Error en la carga')
|
|
except Exception as e:
|
|
print(f'❌ Error: {e}')
|
|
import traceback
|
|
traceback.print_exc()
|
|
"
|
|
|
|
===============================================================================
|
|
¡LISTO PARA USAR!
|
|
===============================================================================
|
|
|
|
Todos estos comandos están listos para usar directamente en tu terminal.
|
|
Los archivos .als generados se pueden abrir en Ableton Live 12 Suite.
|
|
|
|
Para más información: README.md
|
|
Resumen del proyecto: RESUMEN.md
|
|
===============================================================================
|