Skip to content

GEMINI Playbook — AudioLab v2.0 🚀

Propósito

Guía y reglas para trabajar con Gemini CLI en el monorepo audio-lab (Windows + VS2022 + CMake + JUCE + AudioLabUI). Idioma: español técnico. Objetivo: desarrollo eficiente con el nuevo sistema UI integrado.


🏗️ Arquitectura AudioLab (ACTUALIZADA)

Estructura del Proyecto

C:\AudioDev\audio-lab\
├── 01_core/
│   ├── third_party/juce/           # JUCE 8
│   └── shared/
│       ├── ui/                      # AudioLabUI System
│       │   ├── AudioLabUI.h        # Sistema UI principal
│       │   ├── LayoutTemplates.h   # Layouts automáticos
│       │   └── themes/              # Temas visuales
│       ├── components/              # Componentes C++ reutilizables
│       └── dsp/                     # Algoritmos DSP compartidos
├── 03_PLUGINS/
│   └── plugins/
│       └── [FAMILY]/                # FX, SYNTH, UTILITY, etc.
│           └── TS_[PluginName]/    # Prefijo obligatorio
├── 06_BRAIN/
│   ├── build/                       # Build directory (CMake)
│   └── src/
│       └── 1_scripts/
│           └── 4_WORKFLOWS/
│               ├── wf_create_plugin.ps1    # NUEVO: Crea con AudioLabUI
│               └── UI/                      # NUEVO: Scripts de UI
│                   ├── gui_wizard.ps1      # Generador de GUIs
│                   ├── theme_manager.ps1   # Gestor de temas
│                   ├── layout_generator.ps1 # Layouts específicos
│                   └── component_injector.ps1 # Inyector de componentes
└── _artefacts/                      # Binarios compilados

🎨 Sistema AudioLabUI (NUEVO)

Características Integradas Automáticamente

  • AudioLabLookAndFeel: Look profesional aplicado por defecto
  • LayoutGrid: Posicionamiento automático de controles
  • alui::Knob: Knobs profesionales (no más juce::Slider básicos)
  • Temas: Dark, Light, Vintage, Neon, Ocean, Forest, Sunset, Cyberpunk
  • Tamaños profesionales: Mínimo 700x400 (no más ventanas de 200x300)

⚠️ IMPORTANTE para Gemini

NUNCA_HACER:
  - NO añadir manualmente: #include "../../../../../core/shared/ui/AudioLabUI.h"
  - NO usar juce::Slider directamente (usar alui::Knob)
  - NO setBounds manuales (usar LayoutGrid)
  - NO tamaños pequeños (mínimo 700x400)

SIEMPRE_HACER:
  - Usar: .\ops wf_create_plugin (incluye AudioLabUI automáticamente)
  - Los includes ya están configurados: #include "AudioLabUI.h"
  - Plugin codes de 4 caracteres se generan automáticamente
  - Prefijo TS_ es obligatorio y se añade automáticamente

🛠️ Workflows AudioLab 2.0

1. Crear Plugin (CON AudioLabUI integrado)

# COMANDO PRINCIPAL - Ya incluye AudioLabUI
.\ops wf_create_plugin -Name "MiPlugin" -Family "FX" -Theme "Dark"

# Parámetros disponibles:
# -Name: Nombre del plugin (se añade TS_ automáticamente)
# -Family: FX, SYNTH, UTILITY (default: FX)
# -Theme: Dark, Light, Vintage, Neon, Ocean (default: Dark)
# -Template: simple, advanced, pro (default: simple)

2. Mejorar UI de Plugin Existente

# Aplicar wizard de GUI completo
.\ops ui\wizard -PluginName TS_MiPlugin -Type Effect -NumKnobs 6

# Cambiar tema
.\ops ui\theme -PluginName TS_MiPlugin -Theme Neon

# Aplicar layout específico
.\ops ui\layout -PluginName TS_MiPlugin -Layout MixerStrip

# Inyectar componente avanzado
.\ops ui\inject -PluginName TS_MiPlugin -Component SpectrumAnalyzer

3. Validar y Arreglar Plugins

# Validar que use AudioLabUI correctamente
.\ops ui\validate -PluginName TS_MiPlugin

# Arreglar automáticamente problemas de UI
.\ops ui\fix -PluginName TS_MiPlugin

4. Build & Run

# Compilar
.\ops build TS_MiPlugin

# Ejecutar
.\ops run TS_MiPlugin

📋 Plantillas de Prompt para Gemini

Prompt 1: Crear Plugin Nuevo con AudioLabUI

Crea un plugin VST3 llamado "TS_[Nombre]" en C:\AudioDev\audio-lab:

1. USA ESTE COMANDO PRIMERO:
   .\ops wf_create_plugin -Name "[Nombre]" -Family "FX" -Theme "[Tema]"

   IMPORTANTE: Este comando YA incluye AudioLabUI automáticamente.
   NO necesitas añadir includes manualmente.

2. MODIFICA solo el DSP en PluginProcessor.cpp:
   - [Describir algoritmo DSP]
   - Usa juce::dsp:: para procesamiento

3. NO TOQUES PluginEditor.h/cpp a menos que necesites:
   - Añadir más knobs (ya son alui::Knob)
   - Los layouts ya usan LayoutGrid automático

4. COMPILA con: .\ops build TS_[Nombre]

Prompt 2: Añadir Componente Avanzado

Añade un [componente] al plugin TS_[Nombre]:

1. USA EL INYECTOR:
   .\ops ui\inject -PluginName TS_[Nombre] -Component [Componente]

   Componentes disponibles:
   - SpectrumAnalyzer
   - VUMeter
   - PresetManager
   - ModulationMatrix
   - MidiKeyboard
   - XYPad

2. El script modifica automáticamente:
   - PluginEditor.h (añade declaraciones)
   - PluginEditor.cpp (añade inicialización y posicionamiento)

3. NO modifiques manualmente los includes

Prompt 3: Arreglar Plugin Antiguo

Moderniza el plugin TS_[Nombre] para usar AudioLabUI:

1. EJECUTA PRIMERO:
   .\ops ui\fix -PluginName TS_[Nombre]

   Esto arregla automáticamente:
   - CMakeLists.txt (includes y links)
   - PluginEditor.h (AudioLabLookAndFeel)
   - PluginEditor.cpp (tamaños y layouts)

2. VALIDA:
   .\ops ui\validate -PluginName TS_[Nombre]

3. Si necesitas GUI completa nueva:
   .\ops ui\wizard -PluginName TS_[Nombre] -Type [Effect|Synth] -Theme [Tema]

⚡ Reglas Críticas para Gemini

✅ SIEMPRE

  1. Usar scripts ops para crear/modificar plugins
  2. Respetar el prefijo TS_ en nombres de plugins
  3. Plugin codes de 4 caracteres (se generan automáticamente)
  4. Includes simples: #include "AudioLabUI.h" (no rutas relativas)
  5. Verificar con: .\ops ui\validate -PluginName [nombre]

❌ NUNCA

  1. NO crear plugins manualmente (usar wf_create_plugin)
  2. NO rutas relativas largas (../../../../../)
  3. NO juce::Slider (usar alui::Knob)
  4. NO setBounds manuales (usar LayoutGrid)
  5. NO ventanas pequeñas (mínimo 700x400)

🔧 Solución de Problemas Comunes

Error: "AudioLabUI.h not found"

# Arreglar automáticamente
.\ops ui\fix -PluginName TS_[Nombre]

Error: "PLUGIN_CODE must be exactly 4 characters"

# El script wf_create_plugin lo genera automáticamente
# Si es plugin antiguo:
.\ops ui\fix -PluginName TS_[Nombre]

Error: "undefined reference to AudioLabLookAndFeel"

# Verificar CMakeLists.txt tiene:
if(TARGET audiolab_ui)
    target_link_libraries(TS_[Nombre] PRIVATE audiolab_ui)
endif()

# O ejecutar:
.\ops ui\fix -PluginName TS_[Nombre]

📊 Checklist para Plugin Perfecto

  • Creado con .\ops wf_create_plugin
  • Nombre con prefijo TS_
  • Usa alui::Knob (no juce::Slider)
  • Tiene AudioLabLookAndFeel configurado
  • Tamaño mínimo 700x400
  • Layout con LayoutGrid (no setBounds manual)
  • Validado con .\ops ui\validate
  • Tema aplicado (Dark/Light/Vintage/etc)
  • Componentes adicionales inyectados si necesario

🚀 Ejemplo Completo para Gemini

PROMPT OPTIMIZADO PARA GEMINI:

Crea un plugin de reverb "TS_HallReverb" usando AudioLab:

PASO 1 - CREAR (ya incluye AudioLabUI):
.\ops wf_create_plugin -Name "HallReverb" -Family "FX" -Theme "Ocean"

PASO 2 - DSP (modifica PluginProcessor.cpp):
- Usa juce::dsp::Reverb
- Parámetros: RoomSize, Damping, WetLevel, DryLevel, Width

PASO 3 - COMPONENTES EXTRA:
.\ops ui\inject -PluginName TS_HallReverb -Component SpectrumAnalyzer
.\ops ui\inject -PluginName TS_HallReverb -Component VUMeter

PASO 4 - COMPILAR:
.\ops build TS_HallReverb

NO MODIFIQUES:
- Los includes de AudioLabUI (ya están)
- El sistema de knobs (ya son alui::Knob)
- El layout (ya usa LayoutGrid)

RECUERDA: El sistema AudioLabUI ya está integrado automáticamente.

📝 Notas Finales

Este playbook refleja el nuevo sistema AudioLabUI que está completamente integrado en el framework. Gemini debe priorizar el uso de los scripts ops que automatizan todo el proceso y garantizan que los plugins usen el sistema UI profesional por defecto.

Versión: 2.0 - Diciembre 2024 Sistema: AudioLab con AudioLabUI integrado