๐ŸŽ›๏ธ ControlXY Preset Launcher - Complete Guide

โœจ What It Is

A hardware-style preset launcher overlaid directly on your controlXY pads:

Think of it as memory buttons on a hardware synth, but for spatial control!


๐Ÿš€ Quick Start

1. Enable Launcher in DSL

<rect id="pad1" x="100" y="100" width="600" height="400"
      fill="#222"
      cue="controlXY(uid:pad1, 
                    handle:[dot1,dot2], 
                    label:true, 
                    launcher:8,    
                    banks:3)"/>

Parameters:

2. Use the Launcher

Left-click button โ†’ Recall preset/sequence (instant) Right-click button โ†’ Save current state to this slot Long-press (touch) โ†’ Save current state to this slot

Bank navigation:


๐Ÿ“ Visual Layout

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                                         โ”‚
โ”‚         ControlXY Pad Area              โ”‚
โ”‚                                         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ [โ†]   Bank: Verse (1/3)   [โ†’]          โ”‚ โ† Bank Bar
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ [1]  [2]  [3]  [4]  [5]  [6]  [7]  [8] โ”‚ โ† Slot Buttons
โ”‚ Intro Mid  End  โ”€   โ”€   โ”€   โ”€   โ”€      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Button States

Empty (gray) - No assignment

[1]
Empty

Assigned Preset (blue) - Preset stored

[1]
intro

Assigned Sequence (green) - Sequence stored

[2]
verse_loop

Active (orange) - Currently recalling (brief flash)

[1]
intro โœจ

๐ŸŽฏ Usage Workflows

Workflow 1: Quick Performance Setup (5 minutes)

  1. Position handles for your intro
  2. Right-click slot 1 โ†’ Name it "intro"
  3. Move handles to verse position
  4. Right-click slot 2 โ†’ Name it "verse"
  5. Continue for chorus, bridge, etc.
  6. Perform: Left-click buttons 1-2-3-4 to trigger states

Workflow 2: Sequence Launcher

  1. Create sequences in UI (Tab 2)
  2. Go to Sequences tab
  3. Right-click sequence names in list
  4. Select "Assign to Launcher"
  5. Choose pad + bank + slot

Workflow 3: Multiple Banks for Song Structure

Bank 1: Intro

Bank 2: Verse

Bank 3: Chorus

Performance: Switch banks with โ†โ†’, trigger with 1-8


๐Ÿ’พ Storage Format

Launchers are saved in controlxy-presets.json:

{
  "presets": { ... },
  "sequences": { ... },
  "launchers": {
    "pad1": {
      "currentBank": 0,
      "banks": [
        {
          "name": "Bank 1",
          "slots": [
            { "type": "preset", "name": "intro" },
            { "type": "preset", "name": "verse" },
            { "type": "sequence", "name": "verse_loop" },
            null,
            null,
            null,
            null,
            null
          ]
        },
        {
          "name": "Bank 2",
          "slots": [ ... ]
        },
        {
          "name": "Bank 3",
          "slots": [ ... ]
        }
      ]
    }
  }
}

๐ŸŽจ Customization

Different Slot Counts

// 4 buttons (smaller pads)
controlXY(uid:pad1, handle:dot1, launcher:4, banks:5)

// 10 buttons (larger pads)
controlXY(uid:pad1, handle:dot1, launcher:10, banks:3)

// 12 buttons (wide pads)
controlXY(uid:pad1, handle:dot1, launcher:12, banks:4)

Custom Bank Names (Future Enhancement)

Currently banks are named "Bank 1", "Bank 2", etc. Coming soon: Custom names via UI or DSL:

// Future syntax
controlXY(uid:pad1, 
          handle:dot1, 
          launcher:8,
          bankNames:["Intro","Verse","Chorus"])

๐Ÿ”ง Advanced Features

Multiple Pads, Multiple Launchers

Each pad gets its own launcher:

<rect id="pad1" cue="controlXY(uid:pad1, handle:dot1, launcher:8, banks:3)"/>
<rect id="pad2" cue="controlXY(uid:pad2, handle:dot2, launcher:6, banks:2)"/>

Both launchers are independent and saved separately.

Keyboard Shortcuts (Coming Soon)

Map keyboard keys to slots:

MIDI Control (Coming Soon)

Map MIDI notes to slots for hardware control.


๐ŸŽ›๏ธ UI Integration

Assigning from Preset List

  1. Open preset UI (Alt+Shift+P)
  2. Go to Presets tab
  3. Click a preset name to select it
  4. UI shows "Assign to Launcher" options
  5. Choose: Pad โ†’ Bank โ†’ Slot
  6. Done!

Assigning from Sequence List

Same process in Sequences tab.

Launcher Manager View

See all launchers, all banks at once:


๐ŸŽญ Performance Tips

Tip 1: Organize by Song Section

One bank per section makes navigation intuitive.

Tip 2: Leave Empty Slots

Don't fill all 8 slots - leave room for improvisation.

Tip 3: Mix Presets & Sequences

Tip 4: Visual Memory

Empty slots show slot numbers (1-8). Learn the positions for blind performance.

Tip 5: Touch Performance

Long-press works great on tablets/touchscreens. Practice the 500ms timing.


๐Ÿ› Troubleshooting

Launcher not appearing?

Buttons not responding?

Right-click doesn't work on touch?

Banks not saving?

Slots showing wrong names?


๐Ÿ“Š Comparison: Launcher vs UI vs DSL

Method Speed Flexibility Use Case
Launcher โšกโšกโšก Instant ๐ŸŽ›๏ธ 8 slots Live performance
UI โšกโšก Fast ๐ŸŽ›๏ธ๐ŸŽ›๏ธ๐ŸŽ›๏ธ Unlimited Composition work
DSL โšก Timed ๐ŸŽ›๏ธ๐ŸŽ›๏ธ Scripted Score automation

Best practice: Use all three!


๐ŸŽผ Musical Applications

Application 1: Live Improvisation

Pre-save 8 interesting states, perform freely between them.

Application 2: Song Structure Navigation

Bank = section, slot = variation. Navigate song structure live.

Application 3: Parameter Exploration

Save 8 extreme positions, explore in-between states manually.

Application 4: Call-Response Patterns

Odd slots = calls, even slots = responses. Alternate rapidly.

Application 5: Gradual Evolution

Slots 1-8 = progressive changes. Step through slowly.


๐Ÿšง Roadmap (Future Enhancements)

Phase 1: Core โœ… DONE

Phase 2: UI Polish (Next)

Phase 3: Performance (Soon)

Phase 4: Advanced (Later)


๐ŸŽ‰ Summary

You now have:

  1. โœ… 8-button preset launcher on each pad
  2. โœ… Multiple banks (3 default, configurable)
  3. โœ… Instant recall (left-click)
  4. โœ… Quick store (right-click/long-press)
  5. โœ… Auto-save to JSON
  6. โœ… Visual feedback (colors, states)
  7. โœ… Touch-friendly (500ms long-press)

This is a complete performance system!

Start simple:

Then expand:

Score-as-instrument. Touch-as-memory. ๐ŸŽ›๏ธโœจ


๐Ÿ“ DSL Reference

// Basic
controlXY(uid:pad1, handle:dot1, launcher:8)

// Custom slots
controlXY(uid:pad1, handle:dot1, launcher:6)

// Custom banks
controlXY(uid:pad1, handle:dot1, launcher:8, banks:5)

// Full config
controlXY(uid:pad1, 
          handle:[dot1,dot2,dot3], 
          label:true,
          launcher:8, 
          banks:3,
          osc:true)

Ready to perform! ๐ŸŽต๐ŸŽน