{
  "format": "forge.graph/0",
  "name": "Talk Filter",
  "author": "Chirp",
  "license": "CC-BY-4.0",
  "remixed_from": null,
  "description": "Makes the guitar talk: two resonant filters sit where a voice's vowel formants are, and your picking moves them from one vowel to another. Dig in and it says \"wah\", \"yeah\" or \"ow\"; play softly and it hums.",
  "tags": ["filter", "envelope", "formant", "funk"],
  "face": {
    "display": { "kind": "meter", "label": "Mouth", "source": "mouth", "range": [0, 1] },
    "knobs": [
      { "id": "sens", "label": "Sens", "default": 0.5,
        "controls": [ { "target": "sens.v", "from": 2, "to": 20, "curve": "exp" } ] },
      { "id": "response", "label": "Speed", "default": 0.4,
        "controls": [ { "target": "follow.release_ms", "from": 40, "to": 400, "curve": "exp" } ] },
      { "id": "peak", "label": "Peak", "default": 0.5,
        "controls": [ { "target": "f1.q", "from": 3, "to": 10, "curve": "exp" }, { "target": "f2.q", "from": 3, "to": 10, "curve": "exp" } ] },
      { "id": "mix", "label": "Mix", "default": 0.85,
        "controls": [ { "target": "mixer.mix", "from": 0, "to": 1 } ] },
      { "id": "level", "label": "Level", "default": 0.5,
        "controls": [ { "target": "level.amount", "from": 0.6, "to": 1.6 } ] }
    ],
    "menus": [
      { "id": "vowel", "label": "Vowel", "options": ["Wah", "Yeah", "Ow"], "default": 0,
        "controls": [ { "target": "f1.freq", "values": [300, 270, 730] },
                      { "target": "mods.open1", "values": [430, 460, -430] },
                      { "target": "f2.freq", "values": [870, 2290, 1090] },
                      { "target": "mods.open2", "values": [230, -1200, -230] } ] }
    ]
  },
  "nodes": {
    "follow": { "block": "envelope", "mono": true, "set": { "attack_ms": 4 }, "in": { "x": "in" } },
    "sens": { "block": "value", "mono": true },
    "mouth": { "block": "formula", "mono": true, "set": { "expr": "clamp(a * b, 0, 1)" }, "in": { "a": "follow", "b": "sens" } },
    "f1": { "block": "svf", "in": { "x": "in" } },
    "f2": { "block": "svf", "in": { "x": "in" } },
    "voice": { "block": "gain", "set": { "amount": 0.45 }, "in": { "x": ["f1:bp", "f2:bp"] } },
    "mixer": { "block": "blend", "in": { "dry": "in", "wet": "voice" } },
    "level": { "block": "gain", "in": { "x": "mixer" } }
  },
  "mods": {
    "open1": { "from": "mouth", "target": "f1.freq", "amount": 430 },
    "open2": { "from": "mouth", "target": "f2.freq", "amount": 230 }
  },
  "out": "level"
}
