{
  "format": "forge.graph/0",
  "name": "Step Filter",
  "author": "Chirp",
  "license": "CC-BY-4.0",
  "remixed_from": null,
  "description": "A resonant filter that jumps between two positions in a rhythm locked to the tempo, for synth-like sequenced wah. Pattern sets which steps open the filter; Glide makes the jumps slide; Base and Depth set where it sits and how far it leaps.",
  "tags": ["filter", "rhythm", "tempo", "synth"],
  "face": {
    "display": { "kind": "lamp", "label": "Step", "source": "steps:gate", "range": [0, 1] },
    "knobs": [
      { "id": "base", "label": "Base", "default": 0.3,
        "controls": [ { "target": "filt.freq", "from": 200, "to": 1500, "curve": "exp" } ] },
      { "id": "depth", "label": "Depth", "default": 0.6,
        "controls": [ { "target": "mods.leap", "from": 0, "to": 3500, "curve": "square" } ] },
      { "id": "reso", "label": "Reso", "default": 0.55,
        "controls": [ { "target": "filt.q", "from": 1, "to": 12, "curve": "exp" } ] },
      { "id": "glide", "label": "Glide", "default": 0.25,
        "controls": [ { "target": "steps.smooth", "from": 0.02, "to": 1 } ] },
      { "id": "mix", "label": "Mix", "default": 0.9,
        "controls": [ { "target": "mixer.mix", "from": 0, "to": 1 } ] }
    ],
    "menus": [
      { "id": "division", "label": "Division", "options": ["1/8", "1/16", "1/16T"], "default": 1,
        "controls": [ { "target": "steps.rate", "unit": "per_beat", "values": [2, 4, 6] } ] },
      { "id": "pattern", "label": "Pattern", "options": ["Alt step", "Gallop", "Climb", "Random"], "default": 0,
        "controls": [ { "target": "steps.pattern", "values": [85, 221, 248, 105] } ] }
    ]
  },
  "nodes": {
    "steps": { "block": "rhythm", "mono": true, "set": { "steps": 8 } },
    "filt": { "block": "svf", "in": { "x": "in" } },
    "level": { "block": "gain", "set": { "amount": 1.4 }, "in": { "x": "filt:bp" } },
    "mixer": { "block": "blend", "in": { "dry": "in", "wet": "level" } }
  },
  "mods": {
    "leap": { "from": "steps:gate", "target": "filt.freq", "amount": 0 }
  },
  "out": "mixer"
}
