🎵 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>
Generador de Archivos .als (Ableton Live Set)
Descripción
Este proyecto implementa un generador y analizador de archivos .als (Ableton Live Set) usando Python. Permite hacer ingeniería inversa del formato XML comprimido utilizado por Ableton Live para generar nuevos proyectos de música electrónica o modificar proyectos existentes.
Características
🎵 Generación de Archivos .als
- Crear proyectos completamente nuevos desde cero
- Generar múltiples tracks (MIDI, Group, Return)
- Añadir clips MIDI con patrones de notas personalizables
- Configurar mixer, routing y efectos
- Compatible con Ableton Live 12 Suite
🔍 Análisis de Proyectos
- Examinar estructura completa del proyecto
- Listar tracks, clips y dispositivos
- Analizar notas MIDI y patrones
- Exportar información a archivos de texto
✏️ Modificación de Proyectos Existentes
- Randomizar velocidades de notas MIDI
- Transponer notas por semitonos
- Duplicar clips en diferentes tracks
- Generar variaciones automáticas
- Preservar toda la información original
Archivos Incluidos
/mnt/c/als_gen/
├── als_generator.py # Generador principal de archivos .als
├── als_analyzer.py # Analizador y modificador
├── ejemplo_uso.py # Script con ejemplos completos
├── README.md # Esta documentación
├── generated_project.als # Proyecto de ejemplo generado
└── jukeblocks - Pop.als # Proyecto original para análisis
Requisitos
- Python 3.6 o superior
- Librerías estándar de Python (no requiere instalación adicional)
Uso Básico
1. Generar un nuevo proyecto
python3 als_generator.py
Esto genera un archivo generated_project.als con:
- 1 GroupTrack (Drums)
- 5 tracks MIDI (Kick, Snare, HiHat, Bass, Lead)
- 8 clips MIDI con patrones de 16 notas cada uno
- Configuración completa de mixer y routing
2. Analizar un proyecto existente
python3 als_analyzer.py mi_proyecto.als
Mostrará información detallada:
- Versión de Ableton Live
- Lista de tracks y sus propiedades
- Clips MIDI y número de notas
- Tiempo de inicio de cada clip
3. Modificar un proyecto
Randomizar velocidades
python3 als_analyzer.py mi_proyecto.als randomize-vel 70 127
Crea mi_proyecto_modified.als con velocidades aleatorias entre 70-127.
Transponer notas
python3 als_analyzer.py mi_proyecto.als transpose 5
Transpone todas las notas +5 semitonos.
Duplicar clips
python3 als_analyzer.py mi_proyecto.als duplicate 2 4
Duplica clips del track 2, creando 4 copias.
Exportar información
python3 als_analyzer.py mi_proyecto.als export proyecto_info.txt
Guarda un reporte completo en archivo de texto.
4. Ejecutar ejemplos completos
python3 ejemplo_uso.py
Ejecuta una demostración completa que incluye:
- Generación de nuevos proyectos
- Análisis de proyectos existentes
- Múltiples modificaciones
- Creación de variaciones
- Resumen final con todos los archivos creados
Programación API
Clase ALSGenerator
from als_generator import ALSGenerator
# Crear generador
generator = ALSGenerator()
# Generar proyecto completo
als_tree = generator.create_full_als(
project_name="Mi Proyecto",
num_tracks=5, # Número de tracks MIDI
num_clips=8 # Número de clips por track
)
# Guardar archivo
generator.save_als(als_tree, "mi_proyecto.als")
Métodos principales:
create_ableton_root()- Crear elemento raíz Abletoncreate_liveset_root()- Crear LiveSet basecreate_track(name, type, color)- Crear track (MidiTrack/GroupTrack)create_midi_clip(name, start_time, num_notes, midi_key)- Crear clip MIDIcreate_full_als(project_name, num_tracks, num_clips)- Proyecto completosave_als(element_tree, filename)- Guardar archivo comprimido
Clase ALSModificator
from als_analyzer import ALSModificator
# Cargar proyecto
modificator = ALSModificator("mi_proyecto.als")
modificator.load_als()
# Modificar
modificator.randomize_velocities(60, 127)
modificator.transpose_notes(3)
modificator.duplicate_clips(1, 2)
# Guardar modificado
modificator.save_als("mi_proyecto_modificado.als")
Métodos principales:
load_als()- Cargar archivo .alsprint_project_info()- Mostrar información completaget_tracks_info()- Obtener lista de tracksget_clips_info()- Obtener lista de clipsrandomize_velocities(min, max)- Randomizar velocidadestranspose_notes(semitones)- Transponer notasduplicate_clips(track_index, num_duplicates)- Duplicar clipssave_als(output_filename)- Guardar archivo modificadoexport_info(output_file)- Exportar información a texto
Estructura Técnica
Formato .als
Los archivos .als son archivos gzip que contienen un documento XML con:
<Ableton MajorVersion="4" MinorVersion="9.5_327" ...>
<LiveSet>
<Tracks>
<GroupTrack> ... </GroupTrack>
<MidiTrack> ... </MidiTrack>
...
</Tracks>
<Scenes> ... </Scenes>
<MasterTrack> ... </MasterTrack>
...
</LiveSet>
</Ableton>
Elementos Principales
- LiveSet - Contenedor principal del proyecto
- Tracks - Lista de tracks (GroupTrack, MidiTrack, ReturnTrack)
- DeviceChain - Cadena de dispositivos y mixer
- Clips - Clips MIDI con notas y eventos
- MidiNoteEvent - Eventos individuales de notas MIDI
- KeyTrack - Pistas por tecla MIDI
- Scenes - Escenas para Session View
Atributos Importantes
LomId- Live Object Model ID (identificador único)LomIdView- ID de vistaValue- Valores numéricos (volumen, pan, etc.)Manual- Valores manuales vs automatizadosId- IDs específicos de elementos
Ejemplos de Uso Avanzado
Ejemplo 1: Crear un proyecto con patrón personalizado
from als_generator import ALSGenerator
generator = ALSGenerator()
als_tree = generator.create_full_als("Mi Proyecto", 3, 12)
# El proyecto incluye automáticamente:
# - GroupTrack "Drums" (176)
# - 3 tracks MIDI individuales
# - 12 clips con 16 notas cada uno
# - Mixer completo con sends
# - Escenas y Master track
generator.save_als(als_tree, "mi_proyecto_personalizado.als")
Ejemplo 2: Modificar proyecto existente
from als_analyzer import ALSModificator
modificator = ALSModificator("jukeblocks - Pop.als")
if modificator.load_als():
# Mostrar información
modificator.print_project_info()
# Randomizar con rango específico
modificator.randomize_velocities(80, 120)
# Transponer hacia abajo
modificator.transpose_notes(-2)
# Duplicar en varios tracks
for track_idx in [1, 2, 3]:
modificator.duplicate_clips(track_idx, 2)
# Guardar
modificator.save_als("jukeblocks_variacion.als")
Ejemplo 3: Generar múltiples variaciones
import random
from als_analyzer import ALSModificator
base_project = "proyecto_base.als"
for i in range(5):
modificator = ALSModificator(base_project)
modificator.load_als()
# Variación aleatoria
transposicion = random.choice([-5, -2, 0, 2, 5])
modificator.transpose_notes(transposicion)
# Randomizar con diferentes rangos
min_vel = random.randint(60, 90)
max_vel = random.randint(100, 127)
modificator.randomize_velocities(min_vel, max_vel)
# Duplicar clips
modificator.duplicate_clips(1, random.randint(1, 3))
output = f"variacion_{i+1}.als"
modificator.save_als(output)
Limitaciones Conocidas
- Tempo - El cambio de tempo requiere análisis más profundo del XML
- Audio Clips - Solo maneja clips MIDI (no audio)
- Dispositivos - No modifica dispositivos VST o built-in
- Samples - No incluye o modifica samples
- Automation - No maneja automatización de parámetros
- Compression - Solo compression gzip (no ZIP)
Desarrollo y Extensión
Para añadir nuevas funcionalidades:
- Nuevos tipos de track - Modificar
create_track() - Nuevos dispositivos - Añadir en
_create_mixer_section() - Nuevos eventos MIDI - Modificar
create_midi_clip() - Nuevas modificaciones - Añadir métodos en
ALSModificator
Compatibilidad
- ✅ Ableton Live 9.7.7
- ✅ Ableton Live 12.0.5
- ✅ Python 3.6+
- ✅ Linux, macOS, Windows
Pruebas
Todos los archivos generados han sido probados y pueden abrirse directamente en Ableton Live 12 Suite.
Para verificar un archivo:
python3 als_analyzer.py archivo_generado.als info
Licencia
Este proyecto es de código abierto y está disponible bajo licencia MIT.
Soporte
Para reportar bugs o solicitar funcionalidades, crear un issue en el repositorio del proyecto.
Créditos
Desarrollado como ejemplo de ingeniería inversa del formato .als de Ableton Live.