{
  "format": "forge.graph/0",
  "name": "Multi-Tap Rhythm",
  "author": "Chirp",
  "license": "CC-BY-4.0",
  "remixed_from": null,
  "description": "Four echoes from one delay line, spaced on the beat grid, with their levels set by a rhythm pattern: Straight fades out evenly, Gallop skips the second, Off-beat answers between your notes, Swell builds up instead of dying away. Spacing sets the grid: eighths, sixteenths or eighth triplets.",
  "tags": ["delay", "tempo", "rhythm", "multi-tap"],
  "face": {
    "display": { "kind": "lamp", "label": "Beat", "source": "beat:gate", "range": [0, 1] },
    "knobs": [
      { "id": "feedback", "label": "Repeats", "default": 0.25,
        "controls": [ { "target": "fb.amount", "from": 0, "to": 0.8 } ] },
      { "id": "mix", "label": "Mix", "default": 0.4,
        "controls": [ { "target": "mixer.mix", "from": 0, "to": 1 } ] },
      { "id": "tone", "label": "Tone", "default": 0.55,
        "controls": [ { "target": "tone.cutoff", "from": 1200, "to": 14000, "curve": "exp" } ] }
    ],
    "menus": [
      { "id": "spacing", "label": "Spacing", "options": ["1/8", "1/16", "1/8T"], "default": 0,
        "controls": [ { "target": "t1.time", "unit": "beats", "values": [0.5, 0.25, 0.3333] },
                      { "target": "t2.time", "unit": "beats", "values": [1, 0.5, 0.6667] },
                      { "target": "t3.time", "unit": "beats", "values": [1.5, 0.75, 1] },
                      { "target": "line.time", "unit": "beats", "values": [2, 1, 1.3333] },
                      { "target": "beat.rate", "unit": "per_beat", "values": [2, 2, 2] } ] },
      { "id": "pattern", "label": "Pattern", "options": ["Straight", "Gallop", "Off-beat", "Swell"], "default": 0,
        "controls": [ { "target": "g1.amount", "values": [1, 1, 0, 0.3] },
                      { "target": "g2.amount", "values": [0.7, 0, 1, 0.5] },
                      { "target": "g3.amount", "values": [0.5, 0.8, 0, 0.7] },
                      { "target": "g4.amount", "values": [0.35, 0.6, 0.7, 1] } ] }
    ]
  },
  "nodes": {
    "beat": { "block": "rhythm", "mono": true, "set": { "steps": 2, "pattern": 1, "smooth": 0 } },
    "line": { "block": "delay", "set": { "glide": 60 }, "in": { "x": ["in", "fb"] } },
    "t1": { "block": "tap", "in": { "of": "line" } },
    "t2": { "block": "tap", "in": { "of": "line" } },
    "t3": { "block": "tap", "in": { "of": "line" } },
    "g1": { "block": "gain", "in": { "x": "t1" } },
    "g2": { "block": "gain", "in": { "x": "t2" } },
    "g3": { "block": "gain", "in": { "x": "t3" } },
    "g4": { "block": "gain", "in": { "x": "line" } },
    "tone": { "block": "onepole", "in": { "x": ["g1", "g2", "g3", "g4"] } },
    "fb": { "block": "gain", "in": { "x": "line" } },
    "mixer": { "block": "blend", "in": { "dry": "in", "wet": "tone" } }
  },
  "out": "mixer"
}
