{
  "$type": "at.atmosynth.module",
  "descriptionVersion": 1,
  "moduleId": "reverb",
  "versionKey": "1",
  "name": "Reverb",
  "description": "A real room, recorded. An impulse response is a measurement of one actual space — what that space did to a single sharp sound — and convolution replays whatever you send in through that measurement, so what comes back is the room's own shape rather than a guess at one. That is why it has no Decay: the tail is however long the room took to fall quiet, and there is no dial on a room. What is yours to set is where the room sits. Pre-delay is the gap before it answers, and a longer one leaves the note itself in front of the wash instead of inside it. Damping takes the top off what is sent in, which is the difference between a bright hall and a soft one. Dry and Wet are summed, each set on its own. Its tail outlives the note that made it — give it one instance for the whole patch, or each note takes its room with it. The response is the module's own sample and a patch may put its own in the slot: any WAV works, and a short one turns the hall into a cupboard.",
  "audioInputs": [
    {
      "id": "in",
      "label": "In"
    }
  ],
  "audioOutputs": [
    {
      "id": "out",
      "label": "Out"
    }
  ],
  "midiInputs": [],
  "nodes": [
    {
      "id": "in",
      "kind": "moduleInput",
      "options": {
        "input": "in"
      }
    },
    {
      "id": "dry",
      "kind": "gain",
      "options": {}
    },
    {
      "id": "predelay",
      "kind": "delay",
      "options": {
        "maxDelayTime": "0.25"
      }
    },
    {
      "id": "damp",
      "kind": "biquadFilter",
      "options": {
        "type": "lowpass"
      }
    },
    {
      "id": "room",
      "kind": "convolver",
      "options": {
        "normalize": true
      }
    },
    {
      "id": "wet",
      "kind": "gain",
      "options": {}
    },
    {
      "id": "out",
      "kind": "moduleOutput",
      "options": {
        "output": "out"
      }
    }
  ],
  "connections": [
    {
      "from": {
        "node": "in",
        "output": 0
      },
      "to": {
        "node": "dry",
        "input": 0
      }
    },
    {
      "from": {
        "node": "dry",
        "output": 0
      },
      "to": {
        "node": "out",
        "input": 0
      }
    },
    {
      "from": {
        "node": "in",
        "output": 0
      },
      "to": {
        "node": "predelay",
        "input": 0
      }
    },
    {
      "from": {
        "node": "predelay",
        "output": 0
      },
      "to": {
        "node": "damp",
        "input": 0
      }
    },
    {
      "from": {
        "node": "damp",
        "output": 0
      },
      "to": {
        "node": "room",
        "input": 0
      }
    },
    {
      "from": {
        "node": "room",
        "output": 0
      },
      "to": {
        "node": "wet",
        "input": 0
      }
    },
    {
      "from": {
        "node": "wet",
        "output": 0
      },
      "to": {
        "node": "out",
        "input": 0
      }
    }
  ],
  "automation": [],
  "parameters": [
    {
      "id": "predelay",
      "label": "Pre-delay (s)",
      "range": {
        "min": "0",
        "max": "0.25"
      },
      "default": "0.02",
      "targets": [
        {
          "node": "predelay",
          "param": "delayTime"
        }
      ]
    },
    {
      "id": "damping",
      "label": "Damping (Hz)",
      "range": {
        "min": "500",
        "max": "20000"
      },
      "default": "8000",
      "targets": [
        {
          "node": "damp",
          "param": "frequency"
        }
      ]
    },
    {
      "id": "dry",
      "label": "Dry level",
      "range": {
        "min": "0",
        "max": "1"
      },
      "default": "1",
      "targets": [
        {
          "node": "dry",
          "param": "gain"
        }
      ]
    },
    {
      "id": "wet",
      "label": "Wet level",
      "range": {
        "min": "0",
        "max": "1"
      },
      "default": "0.4",
      "targets": [
        {
          "node": "wet",
          "param": "gain"
        }
      ]
    }
  ],
  "sampleSlots": [
    {
      "id": "ir",
      "label": "Impulse response",
      "node": "room",
      "property": "buffer",
      "default": {
        "blob": {
          "$type": "blob",
          "mimeType": "audio/wav",
          "ref": {
            "$link": "bafkreic5grcpjxlz56bvwiplgy64cfa7wf3edu2ldaenru6zunseovgiwy"
          },
          "size": 196650
        },
        "ownerDid": "did:plc:fzjkahpwapmoqxybwdjb6ysf"
      }
    }
  ],
  "createdAt": "2026-08-30T00:00:00.000Z"
}