{
  "format": "forge.graph/0",
  "name": "Sub Octave",
  "author": "Chirp",
  "license": "CC-BY-4.0",
  "remixed_from": null,
  "description": "Adds a note an octave below what you play, and another two octaves below, for bass lines on a guitar or a huge single-note riff. Sub and Sub 2 set their levels, Dry the original; Tone rounds the low notes off. Smooth shifts the note down; Analog divides it as a Boss OC-2 does, with no delay and a buzzier, synth-like growl. Works best on single notes played cleanly.",
  "tags": ["pitch", "octave", "sub", "bass"],
  "face": {
    "knobs": [
      { "id": "sub", "label": "Sub", "default": 0.6,
        "controls": [ { "target": "low1.amount", "from": 0, "to": 1.4 } ] },
      { "id": "sub2", "label": "Sub 2", "default": 0,
        "controls": [ { "target": "low2.amount", "from": 0, "to": 1.2 } ] },
      { "id": "dry", "label": "Dry", "default": 0.8,
        "controls": [ { "target": "dry.amount", "from": 0, "to": 1 } ] },
      { "id": "tone", "label": "Tone", "default": 0.4,
        "controls": [ { "target": "round.cutoff", "from": 150, "to": 2500, "curve": "exp" } ] },
      { "id": "level", "label": "Level", "default": 0.5,
        "controls": [ { "target": "level.amount", "from": 0.5, "to": 1.5 } ] }
    ],
    "menus": [
      { "id": "type", "label": "Type", "options": ["Smooth", "Analog"], "default": 0,
        "controls": [ { "target": "pick1.choice" }, { "target": "pick2.choice" } ] }
    ]
  },
  "nodes": {
    "focus": { "block": "onepole", "set": { "cutoff": 1200 }, "in": { "x": "in" } },
    "down1": { "block": "pitch", "set": { "ratio": 0.5, "window": 0.06 }, "in": { "x": "focus" } },
    "down2": { "block": "pitch", "set": { "ratio": 0.25, "window": 0.09 }, "in": { "x": "focus" } },
    "flip": { "block": "octave_down", "in": { "x": "in" } },
    "pick1": { "block": "select", "in": { "a": "down1", "b": "flip:sub" } },
    "pick2": { "block": "select", "in": { "a": "down2", "b": "flip:sub2" } },
    "low1": { "block": "gain", "in": { "x": "pick1" } },
    "low2": { "block": "gain", "in": { "x": "pick2" } },
    "round": { "block": "onepole", "in": { "x": ["low1", "low2"] } },
    "dry": { "block": "gain", "in": { "x": "in" } },
    "level": { "block": "gain", "in": { "x": ["dry", "round"] } }
  },
  "out": "level"
}
