{
  "id": "decks_layer_mixer",
  "name": "Decks + Layer Mixer (VJ A/B)",
  "description": "Simple VJ-style two-deck setup: two source decks (A/B) each with their own independent gain, combined through a compositeTOP layer mixer (additive two-gain blend, not a true crossfader — both decks sum and each gain is set independently). Mirrors what create_decks (N-channel, v0.8.1) + create_layer_mixer build at the tool level. Offline-validated against RecipeSchema; live cook-check UNVERIFIED pending TD run.",
  "tags": ["vj", "decks", "mixer", "additive-blend", "performable", "controls"],
  "difficulty": "beginner",
  "td_version_min": "2022",
  "nodes": [
    {
      "name": "deckA_src",
      "type": "noiseTOP",
      "parameters": { "period": 4, "mono": 1 },
      "comment": "Deck A source (placeholder noise; swap for moviefileinTOP/videodeviceinTOP live)."
    },
    {
      "name": "deckA_gain",
      "type": "levelTOP",
      "parameters": { "brightness1": 1.0 },
      "comment": "Deck A gain (levelTOP.brightness1 — levelTOP has no 'gain' param)."
    },
    {
      "name": "deckB_src",
      "type": "rampTOP",
      "parameters": { "type": "radial" },
      "comment": "Deck B source (placeholder radial ramp)."
    },
    {
      "name": "deckB_gain",
      "type": "levelTOP",
      "parameters": { "brightness1": 1.0 },
      "comment": "Deck B gain."
    },
    {
      "name": "mixer",
      "type": "compositeTOP",
      "parameters": { "operand": "add" },
      "comment": "Layer mixer combining the two decks via additive blend. Each deck's gain is independent — drive them inversely by hand if you want crossfader-like behavior."
    },
    { "name": "out1", "type": "nullTOP", "comment": "Final output of the deck mixer." }
  ],
  "connections": [
    { "from": "deckA_src", "to": "deckA_gain" },
    { "from": "deckB_src", "to": "deckB_gain" },
    { "from": "deckA_gain", "to": "mixer", "to_input": 0 },
    { "from": "deckB_gain", "to": "mixer", "to_input": 1 },
    { "from": "mixer", "to": "out1" }
  ],
  "parameters": [],
  "controls": [
    {
      "name": "Deck A Gain",
      "type": "float",
      "min": 0,
      "max": 2,
      "default": 1.0,
      "bind_to": ["deckA_gain.brightness1"]
    },
    {
      "name": "Deck B Gain",
      "type": "float",
      "min": 0,
      "max": 2,
      "default": 1.0,
      "bind_to": ["deckB_gain.brightness1"]
    }
  ],
  "preview_description": "Two source decks (noise + radial ramp) summed through a compositeTOP mixer in additive blend, with two independent per-deck gain knobs."
}
