Skip to content

feat: Add comprehensive device parameter access beyond remote control limitations #15

@zsoltcs1123

Description

@zsoltcs1123

Hi there. This is an amazing project with so much possibilities. The most exciting aspect would be opening up the internal parameters of Bitwig devices (or VST's if they expose any) to AI-based sound design, effectively programming these devices via prompts. Below is an AI generated description I created after checking out the repo. Not sure if the assumptions are correct.

I may try to create a POC out of it, I think this feature would be a game changer.

🎯 Feature Request: Comprehensive Device Parameter Access

Problem Statement

Currently, WigAI can only access device parameters through remote control pages, limiting AI agents to 8 parameters per page. This severely restricts AI-driven sound design capabilities, as most devices have 50-300+ internal parameters that remain inaccessible.

Proposed Solution

Implement direct access to ALL device parameters using Bitwig's internal parameter API methods, bypassing remote control page limitations entirely.

Technical Approach

Instead of relying on cursorDevice.createCursorRemoteControlsPage(128), use direct parameter access:

// Current limitation (Epic 2 implementation):
RemoteControlsPage deviceParameterBank = cursorDevice.createCursorRemoteControlsPage(128);

// Proposed enhancement:
public List<InternalParameterInfo> getAllDeviceParameters() {
    List<InternalParameterInfo> params = new ArrayList<>();
    Device device = cursorDevice;
    
    // Direct parameter enumeration (needs API research)
    for (int i = 0; i < getDeviceParameterCount(); i++) {
        Parameter param = device.getParameter(i); // or similar method
        if (param.exists()) {
            params.add(new InternalParameterInfo(
                i, 
                param.name().get(), 
                param.value().get(),
                param.displayedValue().get(),
                param.getUnit(),
                param.getMinValue(),
                param.getMaxValue()
            ));
        }
    }
    return params;
}

Benefits

  • 🚀 Complete Parameter Universe: Access to 100s of parameters vs 8
  • 🎵 True AI Sound Design: AI can manipulate every aspect of a device
  • ⚡ Simpler Architecture: No page navigation complexity
  • 🔄 Immediate Access: No UI state dependencies

API Enhancement Proposal

Add new MCP tools:

  • get_all_device_parameters - Returns ALL device parameters
  • set_device_parameter_by_name - Set parameters by name (more intuitive)
  • get_device_parameter_metadata - Get parameter constraints and units

Example Output

{
  "device": "Wavetable",
  "total_parameters": 247,
  "parameters": [
    {
      "index": 0,
      "name": "Osc1.Wavetable.Position", 
      "value": 0.5,
      "display_value": "50%",
      "unit": "%",
      "min_value": 0.0,
      "max_value": 1.0
    },
    {
      "index": 1,
      "name": "Osc1.Unison.Voices",
      "value": 0.3,
      "display_value": "3 voices", 
      "unit": "voices",
      "min_value": 1,
      "max_value": 16
    }
    // ... 245 more parameters
  ]
}

Implementation Plan

  1. Research exact Bitwig API methods for direct parameter access
  2. Create InternalParameterController class
  3. Implement parameter enumeration and access methods
  4. Add new MCP tools for comprehensive parameter control
  5. Update documentation and tests

Research Sources

Relationship to Existing Roadmap

This enhancement would:

  • Complement Epic 8: Provide alternative to complex page navigation
  • Extend Epic 2: Enhance current parameter control with comprehensive access
  • Enable Epic 9: Advanced AI sound design capabilities

Impact

This would make WigAI the most comprehensive AI-DAW integration available, enabling true AI-driven sound design that's impossible in other DAWs due to their closed architectures.


Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions