renato97 b57411c85f feat: Pattern Library for enhanced music generation
🎼 New Features:
- Pattern Library: Advanced pattern generation system for music projects
- Enhanced ALS Generator: Improved with pattern library integration
- Better music structure generation for diverse genres

This adds sophisticated pattern generation capabilities to MusiaIA's ALS generator, making it even more capable of creating complex musical arrangements!

Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 04:22:10 +00:00

MusiaIA - AI Music Generator

Generador de música por IA que crea proyectos compatibles con Ableton Live (.als) mediante un chatbot conversacional.

🎯 Características Principales

  • Generación de archivos ALS: Crea proyectos válidos para Ableton Live programáticamente
  • Chat IA: Conversa con GLM4.6 y Minimax M2 para entender tus ideas musicales
  • Análisis inteligente: Extrae BPM, tonalidad, estilo y mood de tu mensaje
  • Samples automáticos: Selecciona samples apropiados para cada género
  • Múltiples géneros: House, Techno, Hip-Hop, Pop y más
  • Estructura profesional: Tracks, clips, routing y efectos

🏗️ Arquitectura

📁 MusiaIA
├── 🎼 als/                     # Archivos ALS de ejemplo
├── 🎵 source/                  # Biblioteca de samples
│   ├── kicks/
│   ├── snares/
│   ├── bass/
│   └── ...
├── ⚙️ src/backend/             # Backend Python
│   ├── ai/                     # Clientes de IA
│   ├── als/                    # Generador ALS
│   ├── api/                    # Endpoints REST
│   └── core/                   # Lógica principal
├── 💻 src/dashboard/           # Frontend React
├── 📊 output/                  # Proyectos generados
└── 📚 docs/                    # Documentación

🚀 Inicio Rápido

1. Configurar API Keys

Edita el archivo .env y agrega tus API keys reales:

# GLM4.6 API (para generación estructurada)
GLM46_API_KEY=tu_api_key_aqui

# Minimax / Claude CLI (para conversación)
ANTHROPIC_AUTH_TOKEN=tu_auth_token_aqui

CLI de Claude listo siempre

Para no tener que manualmente hacer export ANTHROPIC_* cada vez que abras el proyecto, usa el wrapper incluido:

./scripts/claude-cli.sh

Ese script lee el .env, exporta ANTHROPIC_BASE_URL y ANTHROPIC_AUTH_TOKEN, y lanza claude --dangerously-skip-permissions .... Puedes pasarle los mismos argumentos que usarías normalmente (por ejemplo, ./scripts/claude-cli.sh --print "hola"), y el backend también reutiliza esas mismas variables, así que la única fuente de verdad queda en .env.

2. Instalar Dependencias

pip install -r requirements.txt

3. Generar un Proyecto de Ejemplo

from src.backend.als.example_usage import create_house_project

# Genera un track de house automáticamente
als_path = create_house_project()
print(f"✅ Proyecto creado: {als_path}")

4. Abrir en Ableton Live

¡Abre el archivo .als generado directamente en Ableton Live 11+!

🎵 Ejemplo de Uso

Chat de Generación

from src.backend.ai.example_ai import test_orchestrator

# Genera un proyecto desde un mensaje
await test_orchestrator()
# Input: "Create an uplifting house track with piano"
# Output: Configuración completa de Ableton Live

API Directa

from src.backend.ai.ai_clients import AIOrchestrator
from src.backend.als.als_generator import ALSGenerator

# 1. Analizar mensaje
orchestrator = AIOrchestrator()
config = await orchestrator.generate_music_project(
    "energetic techno track at 130 BPM"
)

# 2. Generar ALS
generator = ALSGenerator()
als_path = generator.generate_project(config)

# 3. ¡Listo para Ableton!
print(f"Proyecto: {als_path}")

📦 Estructura de un Proyecto ALS

{
    "name": "AI House Track",
    "bpm": 124,
    "key": "Am",
    "tracks": [
        {
            "type": "AudioTrack",
            "name": "Drums",
            "samples": [
                "kicks/kick_001.wav",
                "snares/snare_001.wav"
            ],
            "color": 35
        },
        {
            "type": "MidiTrack",
            "name": "Bass",
            "midi": {
                "notes": [45, 47, 52, 50]
            },
            "color": 12
        }
    ]
}

🔧 Componentes Principales

ALS Generator (src/backend/als/als_generator.py)

Genera archivos Ableton Live Set (.als) desde configuraciones:

  • Parsea y crea XML válido
  • Comprime con gzip
  • Crea estructura de carpetas
  • Referencias a samples correctas

AI Clients (src/backend/ai/ai_clients.py)

Clientes para APIs de IA:

  • GLM4.6: Análisis musical y generación estructurada
  • Minimax M2: Conversación y chat
  • Orchestrator: Selecciona el mejor modelo para cada tarea

ALS Parser (src/backend/als/als_parser.py)

Lee y analiza archivos ALS existentes:

  • Extrae información de tracks
  • Lista samples usados
  • Valida integridad de archivos

🎼 Géneros Soportados

Género BPM Típico Tracks Característicos
House 120-130 Kick, Bass, Leads, FX
Techno 125-135 Kick, Hat, Acid Bass
Hip-Hop 80-100 Kick, Snare, Bass, Vox
Pop 100-130 Drums, Bass, Keys, Vox
Trance 130-150 Kick, Bass, Pads, Leads

📊 Estados del Proyecto

  • Completado: Generador ALS (100% funcional)
  • Completado: Parser ALS (100% funcional)
  • Completado: Clientes AI (listo para API keys)
  • 🔄 En progreso: Dashboard web
  • 📋 Pendiente: Base de datos
  • 📋 Pendiente: Sistema de samples
  • 📋 Pendiente: API REST
  • 📋 Pendiente: Tests completos

🔑 API Keys Necesarias

GLM4.6

  • Endpoint: https://api.z.ai/api/paas/v4
  • Modelo: glm-4.6
  • Headers: Authorization: Bearer TU_API_KEY

Minimax M2

  • Endpoint: https://api.minimax.io/anthropic
  • Modelo: MiniMax-M2
  • Headers:
    • Authorization: Bearer TU_AUTH_TOKEN
    • anthropic-version: 2023-06-01

🧪 Testing

# Probar generador ALS
python3 src/backend/als/example_usage.py

# Probar parser ALS
python3 src/backend/als/test_parser.py

# Probar clientes AI (requiere API keys configuradas)
python3 src/backend/ai/example_ai.py

📁 Archivos de Ejemplo

Explora la carpeta output/als/ para ver proyectos generados:

output/als/
├── AI House Track_73011964/
│   └── Ableton Live Project/
│       └── AI House Track Project/
│           └── AI House Track.als          # ¡Abre en Ableton!
├── AI Techno Track_54b0d430/
└── AI Hip-Hop Beat_159ae17f/

🛠️ Desarrollo

Estructura de Código

# src/backend/als/als_generator.py
class ALSGenerator:
    def generate_project(config: Dict) -> str:
        """Crea proyecto ALS completo"""
        # 1. Crear estructura
        # 2. Generar XML
        # 3. Comprimir
        # 4. Retornar path

# src/backend/ai/ai_clients.py
class AIOrchestrator:
    async def generate_music_project(message: str) -> Dict:
        """Genera configuración desde chat"""
        # 1. Analizar con GLM4.6
        # 2. Estructurar config
        # 3. Retornar configuración

Agregar Nuevo Género

  1. Actualizar ai_clients.py - mapeo de géneros
  2. Agregar samples en source/{genre}/
  3. Crear template en example_usage.py

📚 Documentación Adicional

🎉 Logros Actuales

  • Parser/Generador ALS: 100% funcional
  • Estructura XML: Completa y válida
  • Compresión Gzip: Funcionando
  • Múltiples géneros: House, Techno, Hip-Hop
  • Clientes AI: Integrados y listos
  • 🔄 Dashboard: En desarrollo

🤝 Contribuir

  1. Fork el repo
  2. Crea branch: git checkout -b feature/nueva-funcionalidad
  3. Commit: git commit -m "Agregar nueva funcionalidad"
  4. Push: git push origin feature/nueva-funcionalidad
  5. Abre un Pull Request

📝 Licencia

MIT License - libre para uso personal y comercial.

🙏 Créditos

Desarrollado con:

  • Python 3.10+
  • FastAPI
  • GLM4.6 (Z.AI)
  • Minimax M2
  • Ableton Live

MusiaIA - Donde la IA encuentra la música 🎵🤖

Description
🎵 MusiaIA - AI Music Generator. Generate Ableton Live projects with AI.
Readme 192 MiB
Languages
Python 54.5%
Common Lisp 26.4%
TypeScript 7%
CSS 5.7%
Shell 2.9%
Other 3.5%